Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

Shai-Hulud (ver npm auto-propageant)

3 min de lecture
Améliorer cette page
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 projet vous est utile ?

Les guides, formations, quiz et labs restent gratuits. Si vous les utilisez régulièrement, vous pouvez contribuer à leur maintenance et à leur développement.

Devenir membre de soutien (nouvel onglet) Soutenir une fois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn