En bref
Que s'est-il passé ?
L'action GitHub tj-actions/changed-files, très répandue en CI, est compromise (CVE-2025-30066), exposant les secrets CI/CD dans les logs de build publics.
La plupart des versions de l'action sont redirigées vers un commit malveillant qui imprime les secrets du runner dans les journaux. Harden-Runner l'a repéré par détection d'anomalie, un endpoint réseau inattendu étant apparu dans le trafic.
Les secrets (jetons, clés) fuitent en clair dans les logs publics de nombreux dépôts. L'enquête a aussi révélé que plusieurs actions de l'organisation reviewdog étaient compromises.
Épingler les actions par SHA de commit (jamais par tag), filtrer l'egress des runners, remplacer par une alternative maintenue, et réduire la portée des secrets exposés aux workflows.
Chronologie de l'attaque
Vers 16h00 UTC, l'action est piégée ; l'investigation confirme que la plupart des versions exposent des secrets dans les logs.
À 20h00 UTC, plusieurs dépôts publics laissent fuiter des secrets dans leurs logs de build.
À 14h00 UTC GitHub retire l'action ; à 22h00 UTC le dépôt est restauré et nettoyé du code malveillant.
À 02h30 UTC, l'enquête découvre que plusieurs actions de l'organisation reviewdog sont aussi compromises.
Comment l'attaquant a procédé
Cet incident met en jeu les vecteurs d'attaque suivants du catalogue SOCLE ; chacun renvoie à sa fiche, où l'on trouve les exigences qui le neutralisent :
La leçon à en tirer
Épingler les actions par SHA (jamais par tag mutable) ; jetons CI scopés et courts ; masquage des logs ; allowlist d'actions.
Les exigences SOCLE qui auraient limité cet incident
Cet incident se rattache à 25 exigences du référentiel, par domaine. Les satisfaire n'aurait pas forcément tout empêché, mais aurait réduit la probabilité de l'attaque, limité son impact ou accéléré sa détection :