En bref
Que s'est-il passé ?
L'écosystème npm subit une attaque majeure : @ctrl/tinycolor (plus de 2 millions de téléchargements/semaine) et plus de 40 paquets chez plusieurs mainteneurs sont compromis.
Un bundle bundle.js (~3,6 Mo) s'exécute via un postinstall détourné lors du npm install. Son moteur d'auto-propagation (NpmModule.updatePackage) interroge l'API npm pour récupérer jusqu'à 20 paquets du mainteneur et force-publie des patchs piégés, créant une compromission en cascade.
Le malware réutilise TruffleHog pour scanner le disque (clés AWS via AKIA[0-9A-Z]{16}) et vide process.env (GITHUB_TOKEN, AWS_ACCESS_KEY_ID…), ciblant les développeurs Linux/macOS disposant d'accès npm/GitHub/cloud.
Désactiver les scripts d'installation (ignore-scripts) ou les confiner, identités de publication courtes (OIDC), détection de republication anormale à l'échelle d'un namespace, et filtrage de l'egress en CI.
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
Identités de publication courtes (OIDC) ; détection de republication ; confinement du rayon d'explosion (egress filtre).
Les exigences SOCLE qui auraient limité cet incident
Cet incident se rattache à 23 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 :