Aller au contenu
Sécurité medium

Shai-Hulud (ver npm auto-propageant)

3 min de lecture
Point de compromission dans la chaîne Rupture · étape Registres
Source
amont
Dépendances
deps
Build & CI
ci
Packaging
artefact
Release
provenance
Registres
Registres
Déploiement
admission
Runtime
exécution
Rayon d'explosion — compromission à l'étape Registres, propagation possible aux consommateurs. Domaines : Orchestration, Poste de travail, Source, Intégration, Release, Secrets
Gravité critique
Ver npm auto-replicant ayant compromis plus de 500 paquets : il vole les credentials des machines infectées puis republié automatiquement des paquets piégés, se propageant de proche en proche.
2 M/sem
dl de @ctrl/tinycolor
40+
paquets compromis
~3,6 Mo
bundle.js malveillant
jusqu'à 20
paquets republiés/auteur

En bref

Date
23/11/2025
Gravité
Critique
Étape de la chaîne
Registres
Domaines SOCLE
Orchestration+ Poste de travail, Source, Intégration, Release, Secrets

Que s'est-il passé ?

Contexte

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.

Mécanisme

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.

Impact

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.

Parades

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

Ce qu'il faut retenir

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 :

Pour aller plus loin

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn