
L’équipe de la Python Software Foundation a invalidé tous les jetons PyPI volés lors de l’attaque de la chaîne logistique GhostAction début septembre, confirmant que les auteurs de la menace n’en ont pas abusé pour publier des logiciels malveillants.
Ces jetons sont utilisés pour publier des packages sur le Python Package Index (PyPI), un référentiel logiciel qui sert de source par défaut pour les outils de gestion de packages Python et héberge des centaines de milliers de packages.
Comme l’a expliqué Mike Fiedler, administrateur de PyPI, un employé de GitGuardian a signalé le 5 septembre que des flux de travail d’actions GitHub malveillants (comme FastUUID) tentaient d’exfiltrer des jetons PyPI vers un serveur distant. Un autre chercheur GitGuardian a envoyé un e-mail à PyPI Security avec des résultats supplémentaires le même jour, mais leur message s’est retrouvé dans le dossier spam, retardant la réponse à l’incident jusqu’au 10 septembre.
Dès qu’il a découvert toute l’étendue de l’attaque de la chaîne d’approvisionnement, GitGuardian a ouvert les problèmes de GitHub dans plus de 570 référentiels affectés et a informé les équipes de sécurité de GitHub, npm et PyPI.
De nombreux responsables de projet ont fait pivoter leurs jetons PyPI, annulé les modifications apportées aux flux de travail des actions ou supprimé les flux de travail affectés après avoir été informés par GitGuardian de l’incident. Bien que l’équipe PyPI n’ait trouvé aucune preuve de compromission des référentiels PyPI au cours de l’enquête, elle a invalidé tous les jetons de publication concernés et a contacté les propriétaires du projet pour les aider à sécuriser leurs comptes.
Cependant, GitGuardian estimait à l’époque que plus de 3 3000 secrets avaient été volés dans la campagne GhostAction, notamment des jetons d’API PyPI, npm, DockerHub, GitHub et Cloudflare, ainsi que des clés d’accès AWS et des informations d’identification de base de données.
« Cette analyse a révélé des jetons compromis dans plusieurs écosystèmes de packages, y compris des caisses de rouille et des packages npm », a déclaré GitGuardian. « Il a été constaté que l’ensemble du portefeuille de SDK de plusieurs entreprises était compromis, avec des flux de travail malveillants affectant simultanément leurs référentiels Python, Rust, JavaScript et Go. »

Mardi, Fiedler a conseillé aux responsables de paquets PyPI qui utilisent des actions GitHub de remplacer les jetons de longue durée par des jetons d’éditeurs de confiance de courte durée, qui se défendraient contre ce type d’attaque. Fiedler les a également exhortés à se connecter à leurs comptes et à consulter leur historique de sécurité pour détecter toute activité suspecte.
« Après avoir confirmé qu’aucun compte PyPI n’avait été compromis, le 15 septembre, j’ai contacté les responsables des projets concernés pour les informer de la situation, leur faire savoir que leurs jetons avaient été invalidés et leur recommander d’utiliser des Éditeurs de confiance avec des actions GitHub pour aider à protéger leurs projets à l’avenir », a déclaré Fiedler.
« Les attaquants ont ciblé une grande variété de référentiels, dont beaucoup avaient des jetons PyPI stockés en tant que secrets GitHub, modifiant leurs flux de travail pour envoyer ces jetons à des serveurs externes. Bien que les attaquants aient réussi à exfiltrer certains jetons, ils ne semblent pas les avoir utilisés sur PyPI. »
En août, des attaquants ont exploité un flux de travail d’actions GitHub défectueux utilisé par le référentiel Nx (un système de génération très populaire et un outil de gestion monorepo) dans le cadre d’une autre attaque de la chaîne d’approvisionnement (baptisée s1ngularity), qui a affecté 2 180 comptes et 7 200 référentiels.
Un mois plus tôt, la Python Software Foundation avait également averti les utilisateurs qu’une campagne de phishing tentait de voler leurs informations d’identification à l’aide d’un faux site Web Python Package Index (PyPI).