
Project Aura: Security auditing and code introspection

La tendance actuelle dans le développement est d'utiliser beaucoup de paquets en phase de développement, même s'ils n'offrent qu'une fonctionnalité triviale et consistent en 11 lignes de code. Lorsque l'on combine cela avec des politiques très libérales de publication de nouveaux paquets, on observe une augmentation des attaques malveillantes ciblant les développeurs. Plusieurs approches ont été utilisées par les acteurs malveillants :
Ce ne sont que quelques exemples des techniques par lesquelles un développeur peut se compromettre lui-même. Ceci est soutenu par le fait qu'il n'existe aucun processus de surveillance sur ce qui est téléchargé vers les dépôts tels que PyPI ou NPM, et c'est par un pur hasard que les incidents précédents ont été découverts. Notre objectif est d'améliorer cela.
Nous avons créé un framework conçu pour analyser le code source à grande échelle (comme l'ensemble du dépôt PyPI), à la recherche d'anomalies et d'intentions potentiellement malveillantes ainsi que de vulnérabilités. Ce framework est également conçu pour analyser le code source à la demande, par exemple lorsqu'un développeur installe un paquet ou simplement un ensemble de fichiers/répertoires. L'implémentation cible actuellement le langage Python et PyPI, cependant, elle est conçue pour permettre l'inclusion d'autres langages (comme JavaScript et NPM).
L'ensemble des cas d'utilisation inclut, sans s'y limiter :
Un moteur d'analyse hybride hautement optimisé permet cela. L'analyse est effectuée dans un environnement totalement sûr à l'aide d'une analyse statique du code sans aucune exécution de code. Le moteur central d'Aura analyse l'arbre AST analysé à partir du code source, effectue une analyse comportementale et du flux d'exécution du code. Le moteur prend également en charge la réécriture de l'arbre AST à l'aide d'un ensemble de règles telles que la propagation de constantes, le pliage ou l'évaluation statique ; ce sont des techniques utilisées par les compilateurs pour optimiser le code. C'est pourquoi cette approche d'analyse est "hybride" : elle améliore l'analyse statique avec une évaluation partielle totalement sûre, ce qui nous permet de déjouer les mécanismes d'obfuscation simples.
Ci-dessous, vous pouvez voir une démonstration de différentes techniques d'"obfuscation" de code source reconnues par le moteur de transformation AST d'Aura :

Pour apprendre et commencer à utiliser le framework, lisez la documentation sur l'installation, configuration et l'utilisation.
La partie centrale d'Aura est l'analyse du code source à la recherche d'anomalies ou de vulnérabilités potentielles. Aura dispose de plusieurs analyseurs intégrés qui recherchent des anomalies telles que l'utilisation de eval dans le script setup ; d'autres analyseurs examinent la structure du système de fichiers (hors code source) pour détecter par exemple des fuites d'identifiants, des jetons API codés en dur, etc. Ces analyseurs génèrent ce que nous appelons des hits qui définissent les anomalies trouvées et peuvent également inclure un score, utilisé pour calculer l'aura de sécurité des données analysées. Il est conseillé de faire preuve de bon sens dans l'appréciation des anomalies présentées en fonction de la fonctionnalité des données d'entrée. Par exemple, il est tout à fait normal pour une bibliothèque requests d'inclure des appels réseau, alors qu'il n'est pas attendu pour une bibliothèque de traitement d'image d'envoyer des données sur le réseau. Il existe également un support pour exporter les données au format JSON, adapté aux analyses massives de dépôts ou à l'intégration dans d'autres produits. Pour la description et l'utilisation des autres composants, consultez la documentation.


##Documentation
Ce projet est sous licence GPLv3 - voir le fichier LICENSE.txt pour plus de détails. Certaines parties de ce framework contiennent des intégrations (optionnelles) avec d'autres produits comme la plateforme r2c, libraries.io, etc. ; celles-ci sont soumises à leur propre licence et conditions d'utilisation.