Python Package Index (PyPI) visé par une attaque de la chaîne d'approvisionnement
ReversingLabs a découvert une nouvelle attaque visant le Python Package Index (PyPI). Cette méthode d'attaque consiste à intégrer des logiciels malveillants au code compilé, en exploitant les capacités d'exécution directe des fichiers PYC (Python byte code). En exploitant les fichiers PYC, les attaquants sont en mesure d'échapper à la détection par les systèmes de sécurité qui se concentrent principalement sur l'examen des fichiers de code source.
Karlo Zanki, ingénieur inverse chez ReversingLabs, a souligné l'importance de cet assaut sur la chaîne d'approvisionnement, car il s'agit de la première exploitation connue de l'exécution de fichiers PYC. Cela représente une menace sérieuse pour la sécurité globale de la chaîne d'approvisionnement en logiciels. L'attaque contre PyPI s'inscrit dans une tendance plus large, avec divers dépôts de code open-source tels que GitHub, NPM et RubyGems qui sont également visés. Les attaquants cherchent à injecter du code nuisible dans les paquets, dans l'espoir que les développeurs l'intègrent à leur insu dans leurs produits logiciels.
ReversingLabs a baptisé cette nouvelle méthode d'attaque "fshec2". Sa découverte a mis en lumière la possibilité d'autres attaques non signalées sur PyPI. L'équipe de sécurité de PyPI a rapidement pris des mesures pour supprimer l'attaque fshec2 de la plateforme. Cependant, les chercheurs de PyPI ont reconnu les caractéristiques inhabituelles de l'attaque et ont averti que des méthodes similaires pourraient être employées par d'autres attaquants à l'avenir.
Au cours de leur enquête, ReversingLabs a identifié des caractéristiques et des comportements distinctifs dans fshec2 par le biais de recherches standard dans le référentiel. Alors que les deux premiers fichiers du paquetage n'avaient aucune importance, les chercheurs ont été intrigués par le troisième fichier, nommé full.pyc. Contrairement aux attaques PyPI précédentes qui s'appuient sur des techniques d'obscurcissement pour dissimuler les logiciels malveillants, fshec2 encapsule tout le code et les fonctions dangereux dans un seul fichier contenant du bytecode Python généré. Cette différence par rapport aux méthodes d'attaque conventionnelles pose un plus grand défi en matière de détection.
En examinant de plus près le fichier full.pyc, les chercheurs ont découvert une méthode appelée "get_path" qui exécute des actions malveillantes, notamment l'extraction d'informations sensibles telles que des noms d'utilisateur, des noms d'hôte et des listes de répertoires. Cependant, le format bytecode du fichier le rendait illisible pour les outils d'inspection traditionnels tels que l'inspecteur de PyPI. Pour évaluer son contenu et découvrir les comportements suspects et nuisibles, il était nécessaire de décompiler le code compilé du fichier .pyc.
Ce nouvel exploit souligne l'importance de l'identification des fonctions malveillantes telles que "get_path" pour les équipes de sécurité et les DevSecOps. De nombreuses solutions de sécurité n'ont actuellement pas la capacité d'évaluer le code source lors de l'inspection des paquets, ce qui fait que les logiciels malveillants intégrés dans le bytecode généré par Python ne sont pas détectés.
En réponse, PyPI a mis en œuvre plusieurs initiatives visant à renforcer ses défenses. Ces mesures comprennent la suppression de la prise en charge de la signature PGP par défaut, un partenariat de sécurité avec Amazon Web Services et l'introduction d'une authentification obligatoire à deux facteurs pour tous les comptes.
Les sources de cette pièce incluent un article dans TheRegister.


