Illustration au style risographie montrant un câble réseau emmêlé et tendu.

Compromission de la chaîne npm : le ver Shai-Hulud infecte 500 paquets

Un ver auto-réplicatif, baptisé « Shai-Hulud », a compromis plus de 500 paquets du registre npmjs.com, le plus grand registre JavaScript au monde, selon l’alerte de CISA.gov. Cette attaque de chaîne d’approvisionnement ne s’est pas limitée au registre ; l’acteur malveillant a exploité les paquets infectés pour scanner l’environnement à la recherche de jetons d’accès sensibles.

Après avoir obtenu un premier point d’entrée, le malware a spécifiquement ciblé les jetons d’accès personnels (PATs) de GitHub ainsi que les clés d’API pour des services cloud majeurs, dont Amazon Web Services (AWS), Google Cloud Platform (GCP) et Microsoft Azure. Le code malveillant exfiltre les identifiants récoltés vers un point de terminaison contrôlé par l’attaquant, avant de les publier sur un dépôt public nommé « Shai-Hulud » via l’API de GitHub.

Le mode de propagation est particulièrement insidieux. Le malware utilise un processus automatisé pour se propager rapidement. Il s’authentifie au registre npm en utilisant les identifiants du développeur compromis, injecte ensuite du code dans d’autres paquets, et publie des versions compromises sur le registre.

Photographie d'une station de travail de développeur au crépuscule, lumière dorée.

Ce qui est touché et la gravité réelle

La gravité réside dans la profondeur de la compromission. Puisque ces paquets sont utilisés dans des projets entiers, l’exposition est massive. Pour contextualiser, des incidents précédents, comme celui impliquant tj-actions/changed-files (CVE-2025-30066), ont montré comment des actions GitHub peuvent scanner la mémoire des runners pour voler des secrets, y compris des clés AWS ou des PATs, si le paquet est référencé par un tag et non par un SHA de commit complet. Cette mécanique de vol de secrets est ici amplifiée par le mécanisme de propagation du ver.

Selon CISA.gov, les organisations doivent impérativement mener une revue de dépendances de tout logiciel utilisant l’écosystème npm. Il faut vérifier les fichiers package-lock.json ou yarn.lock pour identifier non seulement les paquets directement utilisés, mais aussi ceux enfouis dans les arbres de dépendances. Le risque est systémique.

Qui doit agir et comment

La réaction doit être chirurgicale et immédiate. Le conseil le plus pressant, relayé par CISA, est de faire pivoter tous les identifiants de développeur sans délai. Ce geste préventif vise à invalider immédiatement les jetons potentiellement volés.

Au-delà du remplacement des mots de passe, l’hygiène de sécurité des plateformes doit être renforcée drastiquement. Il est recommandé d’imposer une authentification multifacteur résistante au phishing sur tous les comptes de développeurs, en particulier ceux liés à GitHub et npm. De plus, les entreprises doivent auditer leur configuration GitHub pour supprimer les applications et les OAuth inutiles, et vérifier minutieusement les webhooks des dépôts.

Pour contenir l’infection au niveau de l’écosystème, CISA recommande d’« épingler les versions de dépendances npm à des versions connues sûres produites avant le 16 septembre 2025 ». Cela signifie cristalliser l’état de sécurité avant l’apparition du malware.

Il faut aussi surveiller activement le comportement réseau. Le blocage des connexions sortantes vers les domaines webhook.site et la surveillance des logs de pare-feu contre des domaines suspects sont des étapes concrètes pour détecter une activité anormale de communication des paquets infectés.

En parallèle, les développeurs doivent se rappeler que, selon les bonnes pratiques documentées par GitHub, les secrets ne doivent jamais être stockés en clair dans les fichiers de workflow et doivent être périodiquement tournés. Mais face à cette attaque massive, le nettoyage de l’environnement passe avant la perfection des pratiques.

Les équipes doivent aussi mettre en place des règles de protection de branche et activer les alertes de scan de secrets de GitHub pour que l’automatisation agisse comme un filet de sécurité supplémentaire.

Fiche technique

CVE Produit Gravité Exploitée activement Versions corrigées
CVE-2025-30066 tj-actions changed-files GitHub Action Élevée (CVSS 8,6) Oui (KEV, 18 mars 2025) tj-actions/changed-files 46.0.1

Données : NVD (NIST), catalogue KEV de la CISA (CC0) et GitHub Advisory Database (CC BY 4.0, données adaptées).

Sources