Compromission massive zero-day de packages npm – Attaque de la chaîne d’approvisionnement Shai-Hulud
15 septembre 2025
0 minutes de lectureCet incident est en cours. Des mises à jour seront publiées à mesure que de nouvelles informations seront confirmées.
Découvrez si cette attaque vous a affecté grâce au rapport Zero Day présenté par Snyk.

En bref (17 septembre 2025)
L’attaque, qui a débuté aux alentours du 15 septembre 2025 et a été baptisée « Shai-Hulud », est désormais connue comme un malware de type ver qui se propage par le biais de centaines de packages npm compromis. Elle vise à voler et à exfiltrer les identifiants cloud, les clés d’API et d’autres secrets stockés sur les disques, en les transmettant via un webhook et des dépôts GitHub publics. Elle cible également les environnements CI/CD et s’appuie sur GitHub Actions pour exfiltrer les données et maintenir l’attaque.
Mise à jour (16 septembre 2025)
L’équipe de recherche en sécurité de Snyk est au courant de cette attaque de la chaîne d’approvisionnement en cours et enquête activement sur les menaces et les risques liés à cette campagne étendue de compromission de packages npm, les analyse et les recense. Nous vous recommandons de consulter les résultats des produits Snyk, qui constituent une ressource à jour.
Mise à jour initiale (15 septembre 2025)
Le 15 septembre 2025, plusieurs versions malveillantes des packages npm ngx-bootstrap et ng2-file-upload ont été publiées, puis rapidement retirées. Ces versions intégraient un postinstall script (bundle.js) qui tentait de récupérer les jetons des développeurs (p. ex. npm, GitHub et les identifiants cloud) et d’exfiltrer des secrets. Considérez tout système ayant installé ces versions comme entièrement compromis : supprimez le package, renouvelez tous les secrets depuis une machine distincte et fiable, puis recherchez tout signe de déplacement latéral. GitHub a publié un avis de sécurité sur les malwares pour ngx-bootstrap et ng2-file-upload ; aucune version corrigée n’existe pour les versions altérées, car elles ont été supprimées.
Depuis les premières découvertes concernant ngx-bootstrap, des signes de présence de malware ont également été relevés dans le package npm @ctrl/tinycolor, téléchargé plus de 2 millions de fois par semaine, ainsi que dans d’autres packages npm compromis sous les espaces de noms @ctrl et @nativescript-community, et dans d’autres packages isolés.
Qu’est-ce que ngx-bootstrap et pourquoi est-ce important ?
ngx-bootstrap est une bibliothèque populaire de composants Angular qui adapte les composants d’interface utilisateur Bootstrap aux applications Angular. Elle est largement utilisée dans les projets front-end, les builds CI et les postes de travail des développeurs. Un script d’installation malveillant peut donc s’exécuter lors d’un npm install habituel et accéder aux machines des développeurs et à leurs identifiants locaux. Le dépôt officiel est géré par Valor Software.
Ce que nous savons à ce stade
Des centaines de packages sont probablement concernés
L’attaque s’est étendue à d’autres packages que ngx-bootstrap et @ctrl/tinycolor. Elle touche aussi des espaces de noms d’organisations supplémentaires, notamment des packages de l’entreprise de cybersécurité CrowdStrike sous l’espace de noms npm @crowdstrike, ainsi que d’autres packages.
La liste ci-dessous n’est pas exhaustive : elle sert de référence. Nous vous recommandons de toujours consulter les produits Snyk, les résultats d’analyse et les rapports pour obtenir une liste complète et à jour de tous les packages et versions malveillants.
Retrouvez une liste plus complète des packages concernés sur notre page dédiée aux packages compromis de la base de données des vulnérabilités.
Package ngx-bootstrap et versions concernés
Selon les signalements de la communauté, les versions suivantes de ngx-bootstrap contenaient le hook malveillant postinstall qui appelait bundle.js :
20.0.4, 20.0.5, 20.0.619.0.318.1.4
Par ailleurs, 20.0.3 aurait contenu bundle.js, mais sans déclaration postinstall. Le même signalement indique que les versions concernées ont été retirées de npm peu après leur découverte.
Remarque : au moment de la rédaction, la page du package npm n’affiche que les versions actuelles non concernées ; les versions malveillantes ont été dépubliées.
La communauté a également signalé que ng2-file-upload semblait concerné, mais les informations restent limitées. Surveillez les arbres de dépendances qui incluent des packages Valor Software et vérifiez les versions installées.
Chronologie (UTC)
2025-09-15 — Un signalement de la communauté est publié sur
valor-software/ngx-bootstrap. Il identifie unpostinstall/bundle.jsmalveillant dans de nouvelles versions, signale des tentatives d’exfiltration de jetons et indique que les versions concernées ont été retirées de npm.2025-09-15 — La base de données des avis de sécurité GitHub publie GHSA-6m4g-vm7c-f8w6 pour
ngx-bootstrap(« Malware »), et recommande de considérer comme compromis tout hôte sur lequel le package a été installé.
(Nous publierons des mises à jour à mesure que les responsables et les registres confirmeront de nouveaux faits.)
Évaluation de l’impact
Qui est concerné ? Les développeurs, les agents CI et les terminaux qui ont installé l’une des versions répertoriées, ou l’ont récupérée via des dépendances transitives pendant sa période de disponibilité.
Quelles données pourraient être exposées ? Les secrets et jetons des environnements de développement (npm, GitHub) et, potentiellement, les identifiants cloud (AWS/GCP/etc.), selon le comportement décrit dans
bundle.js.Un indicateur de compromission (IoC) est également associé à un nouveau workflow GitHub Actions nommé
shai-hulud, créé par le malware.Gravité : Critique (exécution de code malveillant à l’installation ; vol et exfiltration d’identifiants). L’avis de sécurité de GitHub recommande explicitement une procédure complète de réponse à incident en cas de compromission.
Comment détecter un malware npm zero-day avec Snyk ?
Snyk propose un rapport Zero-Day dans le tableau de bord de l’application Snyk, intitulé « Attaque de la chaîne d’approvisionnement npm Shai-Hulud - septembre 2025 ».
Si vous avez un forfait Enterprise, vous pouvez utiliser cette vue pour filtrer le rapport et sélectionner le zero-day pertinent pour cette attaque de malware npm, ou les CVE que vous souhaitez suivre. Vous obtenez ainsi une vue de l’impact à l’échelle du système pour tinycolor, ngx-bootstrap ou d’autres dépendances dans vos applications et dépôts de code surveillés.

Guide de détection et de triage
Détecter rapidement toute exposition
Vérifiez si votre environnement a récupéré des versions concernées :
npm ls ngx-bootstrap(par projet)Examinez les fichiers de verrouillage (
package-lock.json,pnpm-lock.yaml,yarn.lock) pour repérerngx-bootstrap@18.1.4,19.0.3,20.0.4–20.0.6, et notez toute installation effectuée le ou après le 15 septembre 2025.
Examinez
node_modules/ngx-bootstrap/package.jsonpour repérer une entréepostinstall, et recherchez un fichierbundle.jsà la racine du package si vous gérez des archives ou caches de fournisseurs.
Interrompre l’exécution des scripts pendant la réponse à l’incident
Réinstallez sans exécuter les scripts afin d’empêcher l’exécution des hooks de cycle de vie restants :
npm ci --ignore-scriptsounpm install --ignore-scriptsVous pouvez également définir
ignore-scripts=truedans.npmrc
Vérifications forensiques
Examinez les connexions sortantes des agents de build et des machines de développement pendant les périodes d’installation.
Recherchez des anomalies dans GitHub (listes de jetons d’accès, journaux de sécurité récents), les jetons npm et l’utilisation des identifiants des fournisseurs cloud. Vérifiez également GitHub Actions.
Conformément aux recommandations de l’avis de sécurité de GitHub, considérez comme compromis tout hôte sur lequel une version concernée a été installée.
Confinement et correction immédiats
Supprimer les versions concernées
Supprimez
node_moduleset les fichiers de verrouillage qui référencent des versions malveillantes, puis réinstallez des versions connues comme fiables et explicitement épinglées.Videz les registres privés, les caches et les artefacts susceptibles de contenir encore les archives tar malveillantes.
Renouveler les secrets depuis une machine saine
GitHub : révoquez les jetons d’accès personnels et les clés SSH, renouvelez les jetons à granularité fine et vérifiez les autorisations des applications OAuth et des appareils.
npm : révoquez les jetons de registre.
Clouds (AWS/GCP/etc.) : renouvelez les clés d’accès et celles des comptes de service, et invalidez les identifiants à longue durée de vie.
Reconstruire et redéployer
Après le renouvellement des secrets, reconstruisez vos applications dans des environnements sains, en désactivant d’abord les scripts de cycle de vie, puis réactivez-les si nécessaire.
Communications aux utilisateurs et aux locataires
Si vous distribuez des logiciels compilés pendant la période concernée, informez les utilisateurs en aval et recommandez une mise à niveau ou une nouvelle compilation.
À propos des attaques contre la chaîne d’approvisionnement
Cet incident s’ajoute à plusieurs autres incidents de sécurité récents du même type. Nous avons déjà observé des attaques ciblant des environnements CI et des comptes de responsables de packages, qui ont permis de détourner des publications :
Compromission des responsables d’ESLint/Prettier (juillet 2025) : hameçonnage et typosquattage (
npnjs.com) ayant permis de récupérer des identifiants npm et de diffuser des malwares dans des packages populaires. Un rappel de renforcer la sécurité des comptes des responsables de packages avec l’authentification à deux facteurs.Attaque de la chaîne d’approvisionnement npm via la compromission d’un responsable de package open source (septembre 2025)
Sécurisez votre chaîne d’approvisionnement avec Snyk
87 % des personnes interrogées ont été touchées par des problèmes de sécurité de la chaîne d’approvisionnement. Protégez la vôtre avec Snyk.
