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 tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn