Dans une vaste attaque de type supply chain contre GitHub Actions, des pirates sont parvenus à dérober 3 325 secrets à 327 utilisateurs dans 817 référentiels. Les workflows qui ont été visés sont des processus automatisés définis dans un référentiel GitHub répondant à des événements spécifiques. « Les chercheurs en sécurité de GitGuardian ont été alertés en interne de la compromission potentielle d'un référentiel GitHub associé au projet FastUUID », ont déclaré Gaetan Ferry et Guillaume Valadon, chercheurs en sécurité chez l'éditeur, dans un article de blog. « Les investigations ont révélé qu'un fichier de workflow GitHub malveillant avait été injecté dans le projet ». L'utilisateur compromis a poussé des commits malveillants identiques vers d'autres référentiels publics et privés. Des identifiants PyPI, npm, DockerHub ont été volés ainsi que des jetons GitHub et bien d'autres encore. Ils ont été transmis via des requêtes HTTP POST à un point de terminaison contrôlé par l'acteur. La campagne a été détectée et contenue le 5 septembre.
Des jetons CI/CD interceptés
La campagne GhostAction concerne le projet Python FastUUID dans lequel un contributeur identifié par le pseudonyme « Grommash9 » a introduit une modification du workflow le 2 septembre. La modification contenait un code qui extrayait des jetons sensibles, tels que le PYPI_API_TOKEN, et les transmettait via des requêtes HTTP POST à un domaine contrôlé par l'attaquant. « Même si ce jeton aurait dû permettre à l'acteur de compromettre le paquet FastUUID sur PyPI, aucune preuve de publication de paquets malveillants n’a été trouvé pendant la période de compromission », ont déclaré les chercheurs, ajoutant que l'inaction de l'attaquant après la compromission initiale suggérait que FastUUID n'était pas la cible principale.
Dans un deuxième temps, les enquêteurs ont découvert des workflows malveillants similaires dans cinq référentiels publics au moins et une dizaine de référentiels privés. L'attaque était très adaptative, ciblant des secrets spécifiques à l'environnement, depuis des identifiants de registre de conteneurs jusqu’aux clés des fournisseurs de cloud. « Le modèle d'attaque est resté le même pour tous les projets. Le pirate a d'abord répertorié les secrets provenant de fichiers de workflows légitimes, puis a codé en dur ces noms secrets dans des workflows malveillants », ont ajouté les chercheurs. GhostAction a exfiltré des milliers de jetons sensibles qui auraient pu être utilisés pour altérer des paquets, accéder sans autorisation à des infrastructures ou compromettre davantage la chaîne d'approvisionnement.
Une menace maîtrisée en quelques jours
L'équipe de sécurité de GitGuardian a réagi rapidement après la détection, et le paquet FastUUID a été verrouillé en lecture seule par les administrateurs PyPI en quelques minutes. Le commit frauduleux a été annulé peu après. GitGuardian a averti les responsables des dépôts concernés, contactant avec succès 573 projets, tout en alertant les équipes de sécurité de GitHub, npm et PyPI afin qu'elles surveillent les abus. Même si aucun paquet malveillant n’avait encore été publié dans les registres officiels, GitGuardian a signalé que certains paquets étaient potentiellement toujours exposés à des risques. « D'après nos premières investigations, 9 paquets npm et 15 paquets PyPI risquent d'être compromis dans les prochaines heures ou les prochains jours », ont mis en garde les chercheurs. Ces derniers ont publié sur le blog une liste d'indicateurs de compromission, notamment des indicateurs réseau et GitHub Workflow. Pour une protection supplémentaire, ils ont insisté sur l'importance de revoir les workflows des référentiels, de modifier les identifiants exposés et d'adopter des contrôles plus stricts pour GitHub Actions afin d'éviter que des incidents similaires ne se reproduisent à l'avenir.
Les écosystèmes de paquets tels que npm et PyPI restent des cibles fréquentes en raison de leur popularité et de leur large portée au sein de la communauté des développeurs. Au-delà de la publication directe de paquets malveillants, comme la récente campagne de reconnaissance npm, les attaquants ont également utilisé des techniques telles que le typosquatting (qui exploite les fautes de frappe et d’orthographe) ou même l'exploitation de dépendances hallucinées par l'IA pour inciter les développeurs à installer du code compromis.