Ce matin, nous avons été alertés d'une attaque à grande échelle contre npm. Il semble qu'il s'agisse du même groupe de cybercriminels que celui responsable de l'attaque Nx du 27 août 2025. Cet article a été initialement publié par Socket et StepSecurity, qui ont signalé que 40 paquets avaient été compromis. Depuis, 147 paquets supplémentaires ont été infectés par des logiciels malveillants, notamment des paquets provenant de CrowdStrike.
L'ampleur, la portée et l'impact de cette attaque sont considérables. Les pirates utilisent en grande partie la même stratégie que lors de l'attaque initiale, mais ont intensifié leurs efforts. Ils ont transformé leur attaque en un ver complet, qui effectue automatiquement les opérations suivantes :
- Voler des secrets et les publier publiquement sur GitHub
- Exécutez trufflehog et interrogez les points de terminaison Cloud pour collecter les secrets.
- Tentative de création d'une nouvelle action GitHub avec un mécanisme d'extraction de données via webhook[.]site
- Parcourir les référentiels GitHub auxquels un utilisateur a accès et les rendre publics.
Depuis notre première alerte ce matin, nous avons confirmé les comportements supplémentaires et détails importants suivants. Pour ceux qui ne le savent pas, Shai Hulud est le nom du ver dans la franchise Dune. Une indication claire de l'intention des attaquants.

Pour éviter d'être compromis par des paquets comme celui-ci, découvrez Aikido safe-chain!
Ce que fait le ver
- Harvest: analyse l'hôte et l'environnement CI à la recherche de secrets — process.env, analyse avec TruffleHog et points de terminaison cloud (AWS/GCP) qui renvoient les informations d'identification des instances/services.
- Exfiltrate (1) — Référentiel GitHub: crée un référentiel nommé Shai-Hulud sous le compte compromis et valide un dump JSON contenant des informations système, des variables d'environnement et des secrets collectés.
- Exfiltrer (2) — GitHub Actions → webhook: supprime un flux de travail
.github/workflows/shai-hulud-workflow.ymlqui sérialise${{ toJSON(secrets) }}, les envoie à un attaquantwebhook[.]siteURL et écrit une copie double base64 dans les journaux Actions. - Propagation: utilise tous les jetons npm valides qu'il trouve pour énumérer et tenter de mettre à jour les paquets contrôlés par le responsable compromis (propagation dans la chaîne d'approvisionnement).
- Amplifier: itère les référentiels accessibles de la victime, les rendant publics ou ajoutant le flux de travail/la branche qui déclenchera d'autres exécutions et fuites.
Divulgation de secrets
Comme pour l'attaque Nx originale, nous constatons que les pirates informatiques mènent une attaque de type « smash-and-grab » (casse et vol). La charge utile malveillante publie à la fois un référentiel « Shai-Hulud » contenant des identifiants/jetons volés, et passe par un compte GitHub pour rendre public un référentiel privé :


Auto-propagation via npm
L'une des caractéristiques les plus frappantes de cette attaque est qu'elle se comporte comme un véritable ver. Plutôt que de compter sur un seul paquet infecté pour se propager, le code est conçu pour se republier dans d'autres paquets npm appartenant au responsable compromis.
Voici comment fonctionne la logique du ver :
- Télécharger une archive tar cible – cela permet de récupérer une version existante du paquet depuis le registre npm.
- Modifier
package.json– le ver modifie la version du correctif (par exemple1.2.3 → 1.2.4) et insère un nouveau hook de cycle de vie (post-installation) - Copier sa propre charge utile – le script d'exécution (
process.argv[1]) est écrit dans l'archive tar sous la formebundle.js. Cela garantit que tout code ayant infecté un paquet se retrouve désormais dans le suivant. - Republier le paquet trojanisé – l'archive modifiée est compressée au format gzip et renvoyée vers npm à l'aide des identifiants du responsable.
Ce cycle permet au logiciel malveillant d'infecter en continu tous les paquets auxquels un responsable a accès. Chaque paquet publié devient un nouveau vecteur de distribution : dès que quelqu'un l'installe, le ver s'exécute, se réplique et se propage davantage dans l'écosystème.
En bref : l'attaquant n'a pas besoin de cibler manuellement les paquets. Une fois qu'un environnement est compromis, le ver automatise la propagation en exploitant les droits de publication du responsable de la maintenance.
Pour une analyse complète du logiciel malveillant, nous vous recommandons de consulter l'article de getsafety .
Colis bloqués
L'histoire se développe...
Conseils en matière d'assainissement
- Vérifiez les versions que vous utilisez
- Nettoyez votre cache npm
- Réinstallez tous les paquets de votre référentiel.
- Assurez-vous d'utiliser un fichier de verrouillage de paquet et utilisez des versions épinglées.
Comment savoir si vous êtes concerné par Aikido:
Si vous Aikido , vérifiez votre flux central et filtrez les problèmes liés aux logiciels malveillants. La vulnérabilité apparaîtra comme un problème critique 100/100 dans le flux. Conseil: Aikido vos référentiels chaque nuit, mais nous vous recommandons également de lancer une analyse complète.
Si vous n'êtes pas encore Aikido , créez un compte et connectez vos dépôts. Notre couverture anti-malware exclusive est incluse dans l'offre gratuite (aucune carte de crédit requise).
Pour vous protéger à l'avenir, pensez à utiliser Aikido (open source), un wrapper sécurisé pour npm, npx, yarn... Safechain s'intègre à vos workflows actuels. Il intercepte les commandes npm, npx, yarn, pnpm et pnpx et vérifie l'absence de logiciels malveillants dans les paquets avant leur installation par rapport à Aikido - Open Sources renseignement sur les menaces. Arrêtez les menaces avant qu'elles n'atteignent votre machine.
Sécurisez votre logiciel dès maintenant.



.avif)
