Risques de compromission des GitHub Actions entraînant des fuites de données pour 23 000 dépôts

Par : Jeff Burt

Une GitHub Action populaire utilisée dans plus de 23 000 dépôts de code a été compromise lors d’une attaque de la chaîne d’approvisionnement par des attaquants qui ont introduit un commit malveillant visant à divulguer des secrets comme des mots de passe présents dans des dépôts publics.

Dans cette compromission, suivie sous l’identifiant CVE-2025-30066, des acteurs malveillants ont modifié le code de la GitHub Action tj-actions/changed-files – utilisée par les dépôts pour suivre les fichiers modifiés – en injectant une fonction Node.js contenant des instructions encodées en base64 qui téléchargent un script Python malveillant. Ce script analyse la mémoire de GitHub Runner, qui exécute les jobs d’un workflow GitHub Actions.

La mémoire de GitHub Runner contient des mots de passe et d’autres identifiants utilisés dans le pipeline d’intégration et de livraison continues (CI/CD).

« L’Action compromise affiche les secrets CI/CD dans les journaux de build GitHub Actions. Si les journaux de workflow sont accessibles publiquement (comme dans les dépôts publics), n’importe qui pourrait potentiellement lire ces journaux et obtenir les secrets exposés », a écrit Varun Sharma, cofondateur et PDG de la startup StepSecurity, dans un rapport.

La compromission découverte


StepSecurity a été le premier à découvrir la compromission, que Sharma indique avoir commencé tôt le 14 mars.

La société de cybersécurité Sysdig a noté qu’après l’insertion de la fonction Node.js dans l’action, la charge utile en base64 se décode pour révéler un script qui télécharge du code Python supplémentaire depuis un gist GitHub. Ce script Python identifie le GitHub Runner, ouvre les mappages mémoire et recherche des identifiants en utilisant des expressions régulières.

« Les résultats sont affichés et stockés dans les journaux de build GitHub Actions », a écrit Michael Clark, chercheur en menaces chez Sysdig. « Les attaquants doivent avoir accès à ces journaux pour extraire les secrets. »

Les dépôts de code comme cibles

Il s’agissait de la dernière attaque contre un dépôt de code, GitHub et d’autres – tels que le Python Package Index (PyPI) et npm – devenant des cibles populaires pour les acteurs malveillants, qui insèrent du code malveillant dans des packages de développeurs, lequel se propage ensuite en aval lorsque les entreprises l’installent sans le savoir.

C’est cette large portée qui rend les sources de logiciels utilisées massivement pour des systèmes applicatifs les surfaces d’attaque les plus recherchées, selon Mitch Ashley, vice-président et responsable de la pratique DevOps et développement d’applications chez The Futurum Group.

« Ces attaques contre l’open source, les dépôts, les bibliothèques, les gestionnaires de packages et les images de conteneurs expliquent pourquoi le DevSecOps est passé de la sécurité applicative à la sécurité de la chaîne d’approvisionnement logicielle », a déclaré Ashley à DevOps.

Dans l’attaque contre GitHub Actions, « le dépôt de code qui surveille les modifications de fichiers a servi de système de livraison pour un code malveillant qui lisait la mémoire et les données, envoyant ces informations aux attaquants », a expliqué Ashley. « En récupérant et en compilant un logiciel infecté depuis le dépôt et en exécutant du code infecté, cela a exposé les informations de l’utilisateur aux attaquants. »

Beaucoup de compromissions, quelques fuites

Selon Sharma de StepSecurity, la plupart des versions de tj-actions/changed-files ont été compromises, et plusieurs dépôts publics ont divulgué des secrets dans les journaux de build. GitHub a pris des mesures rapides dès la détection du problème, notamment en désactivant l’Action tj-actions/changed-files. Selon Sharma, le dépôt a été restauré plus tard le 15 mars, sans aucune version contenant le code malveillant.

Les chercheurs en renseignement sur les menaces cherchent encore à comprendre comment la campagne a fonctionné ou qui en est à l’origine, bien que les mainteneurs de tj-actions aient écrit qu’il semble que cela résulte d’un jeton d’accès personnel GitHub (PAT) compromis, utilisé par @tj-actions-bot, un bot disposant d’un accès privilégié au dépôt.

Réparations en cours

Les mainteneurs ont indiqué qu’après la détection du problème, le PAT compromis a été révoqué, le mot de passe du compte tj-actions-bot a été mis à jour, et l’accès au compte utilise désormais uniquement les permissions minimales nécessaires. De plus, un passkey est désormais requis.

Les chercheurs de la startup de cybersécurité Wiz ont écrit que le principal risque de la compromission concerne les dépôts publics, où les secrets sont déversés dans les journaux de workflow également publics, ajoutant que « le risque pour les dépôts privés est limité ».

La chasse aux menaces menée par les chercheurs de Wiz a identifié des dizaines de dépôts affectés par l’Action GitHub malveillante, y compris des dépôts gérés par de grandes organisations.

« Dans ces dépôts, la charge utile malveillante s’est exécutée avec succès et a provoqué des fuites de secrets dans les journaux de workflow », ont-ils écrit. « Certains des secrets divulgués que nous avons identifiés jusqu’à présent incluent des clés d’accès AWS valides, des jetons d’accès personnel GitHub (PAT), des jetons npm, des clés RSA privées et plus encore. »

Plus que des secrets

Dimitri Stiliadis, cofondateur et CTO chez Endor Labs, a déclaré que l’acteur malveillant avait des objectifs plus ambitieux que simplement accéder aux secrets.

« L’attaquant ne cherchait probablement pas des secrets dans des dépôts publics — ils sont déjà publics », a écrit Dimitri Stiliadis dans un billet de blog décrivant les risques. « Il cherchait probablement à compromettre la chaîne d’approvisionnement logicielle pour d’autres bibliothèques open source, binaires et artefacts créés avec cela. Tout dépôt public qui crée des packages ou des conteneurs dans le cadre d’un pipeline CI pourrait avoir été impacté. Cela signifie que potentiellement des milliers de packages open source pourraient avoir été compromis. »

Les fournisseurs de sécurité ont identifié une série d’actions que les organisations devraient entreprendre, notamment effectuer une recherche de code dans les dépôts, examiner les journaux pour les exécutions récentes de l’Action GitHub, et faire tourner les secrets dans les journaux d’exécution des workflows GitHub Actions. Ils devraient également envisager des alternatives à GitHub Action.