En bref
Que s'est-il passé ?
Dix paquets Packagist d'un développeur PHP et DevOps légitime, `dinushchathurya`, exposent des versions de développement malveillantes les 12 et 13 juillet 2026. Le développeur est une victime : ses dépôts GitHub ont été compromis, et Packagist a synchronisé automatiquement ce que l'attaquant y avait poussé.
Le code PHP est propre. L'attaque vit dans `.github/workflows/`, avec 55 à 62 workflows par paquet, 583 fichiers au total. Installer le paquet n'exécute rien : Composer le range dans `vendor/`, où GitHub ignore les workflows imbriqués. L'exécution ne se produit qu'au push sur le dépôt compromis. Chaque workflow lance alors un runner Ubuntu éphémère (jusqu'à 350 minutes), télécharge une charge utile depuis un serveur de commande en IP brute, et scanne Internet.
Les runners GitHub deviennent une infrastructure de scan distribuée, aux frais des victimes. La charge utile exploite CVE-2026-41940 (contournement d'authentification cPanel et WHM, CVSS 9.8, EPSS 98,1 %, catalogue CISA KEV) et moissonne clés AWS, jetons GitHub et GitLab, clés OpenAI, Stripe, SendGrid, accès bases et matériel SSH. Un WHM compromis peut exposer plusieurs environnements hébergés d'un coup. Environ 6 100 à 16 000 fichiers correspondants ont été repérés par recherche de code, ce qui ne préjuge pas du nombre de dépôts réellement compromis.
Traiter le workflow CI comme du code exécutable : revue obligatoire sur `.github/workflows`, permissions minimales du `GITHUB_TOKEN`, surveillance de la sortie réseau des runners avec alerte sur tout téléchargement depuis une adresse IP brute. Côté dépendances, verrouiller les lockfiles sur des références de commit connues plutôt que sur des versions de développement. Côté exposé, patcher cPanel et WHM et lancer le script de détection d'indicateurs de compromission.
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
Un workflow CI est un composant logiciel exécutable : exiger une revue obligatoire sur .github/workflows, réduire les permissions du GITHUB_TOKEN, surveiller la sortie réseau des runners et alerter sur tout téléchargement depuis une adresse IP brute ; verrouiller les lockfiles sur des références de commit connues plutôt que sur des versions de développement.
Les exigences SOCLE qui auraient limité cet incident
Cet incident se rattache à 20 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 :