Attaque NPM, un nouveau vers cible les développeurs

Le **5 août 2026**, l'écosystème JavaScript/Node.js a subi l'une des attaques supply chain les plus sophistiquées et dévastatrices de son histoire récente. Dans la lignée des attaques qui ont précédemment ciblé l'écosystème Python (PyPI) ou PHP (Composer), cette nouvelle vague s'est appuyée sur un ver autonome auto-propagateur surnommé **Mini Shai-Hulud**. Dans cet article, nous décortiquons l'anatomie de cette attaque, son mode d'action, et nous vous fournissons un protocole d'audit et de nettoyage clé en main pour sécuriser vos environnements.

securtite-un-malware-cible-les-developpeurs-IA
← Tous les articles

Alerte Supply Chain npm : Le ver Mini Shai-Hulud frappe l'écosystème Node.js

Le 5 août 2026, l'écosystème JavaScript/Node.js a subi l'une des attaques supply chain les plus sophistiquées et dévastatrices de son histoire récente. Dans la lignée des attaques qui ont précédemment ciblé l'écosystème Python (PyPI) ou PHP (Composer), cette nouvelle vague s'est appuyée sur un ver autonome auto-propagateur surnommé Mini Shai-Hulud.

En l'espace de quelques heures, plus de 1 400 paquets et versions npm cumulant plus de 2 milliards de téléchargements mensuels ont été compromis, transformant les postes des développeurs et les pipelines CI/CD en vecteurs d'infection en chaîne.

Dans cet article, nous décortiquons l'anatomie de cette attaque, son mode d'action, et nous vous fournissons un protocole d'audit et de nettoyage clé en main pour sécuriser vos environnements.


1. Anatomie de l'attaque : La compromission du vecteur de confiance

L'attaque a débuté le 5 août 2026 à la suite du compromis du compte GitHub de Jared Wray (jaredwray), le mainteneur principal de plusieurs bibliothèques fondamentales de gestion de cache dans l'écosystème Node.js (keyv, cacheable-request, flat-cache, cache-manager).

Le contournement de la provenance certifiée

Plutôt que d'utiliser des jetons de publication npm volés directement, les attaquants ont injecté le code malveillant dans la branche principale des dépôts GitHub compromis. Les workflows automatisés GitHub Actions configurés sur ces projets ont ensuite généré et publié des paquets légitimes, signés et certifiés par la provenance officielle de GitHub. Ce mécanisme a permis d'esquiver la plupart des scanners de sécurité traditionnels.

[Compte GitHub Mainteneur Compromis]
               │
               ▼
   [Push Code Malveillant (main)]
               │
               ▼
  [Build GitHub Actions Automatique]
               │
               ▼
[Publication NPM Certifiée avec Provenance] ──► (Contourne les scanners CI/CD)

2. Le fonctionnement du malware "Mini Shai-Hulud"

Contrairement aux typosquatting passifs, Mini Shai-Hulud est un ver autonome écrit pour maximiser l'exfiltration et la propagation transversale.

Étape A : L'infection silencieuse (preinstall)

Dès l'exécution d'un simple npm install ou yarn install, le hook de pré-installation du paquet infecté lance un script d'amorçage setup.mjs. Ce script télécharge un binaire Bun autonome camouflé dans /tmp/bun-dl-* pour exécuter le second étage du payload (Math_Symbol.js / math_init.js).

Étape B : Le moissonnage massif d'identifiants

Le payload inspecte immédiatement le système hôte, les variables d'environnement et le système de fichiers du développeur ou du runner CI/CD à la recherche de :

  • Jetons de registre : Fichiers ~/.npmrc et jetons de publication.
  • Accès GitHub : Personal Access Tokens (PAT), jetons OAuth et tokens OIDC/Actions.
  • Secrets Cloud & Infrastructure : Clés AWS, configurations Kubernetes (service accounts), jetons HashiCorp Vault, fichiers .env.
  • Clefs de services & LLM : Clés d'API Stripe, Slack, OpenAI, Anthropic/Claude, et clés SSH/PEM privées.

Étape C : La propagation autonome en chaîne

En récupérant les jetons npm et GitHub présents sur la machine victime, le ver scanne tous les projets auxquels la victime a accès. Il injecte automatiquement la charge malveillante et republie une version infectée de tous les paquets npm sur lesquels la victime possédait des droits de publication.

[Machine Développeur Infectée]
               │
  ┌────────────┴────────────┐
  ▼                         ▼
[Vol de Secrets]     [Lecture ~/.npmrc]
(AWS, SSH, Env)             │
                            ▼
               [Ver Scanne les Projets NPM]
                            │
                            ▼
               [Auto-Publication de Paquets Infectés]

Étape D : Persistance IDE et mécanisme "Dead-Man's Switch"

Le malware inscrit sa persistance directement dans l'environnement de travail :

  • VS Code : Création d'une tâche d'arrière-plan .vscode/tasks.json déclenchée sur "folderOpen".
  • Claude Code : Injection d'un hook SessionStart dans .claude/settings.json.
  • Dead-man's switch : Si le malware détecte une révocation explicite des jetons npm en local alors qu'il est en cours d'exécution, il déclenche un effacement ciblé du dossier utilisateur (~) pour entraver l'analyse forensique.

3. Les paquets et versions compromises à surveiller

Voici la liste des paquets majeurs directement touchés par l'injection initiale (cumulant la majorité des téléchargements) :

Paquet NPM Versions compromises identifiées
keyv 6.0.0
flat-cache 6.1.24
cacheable-request 13.0.20
cache-manager 7.2.10
file-entry-cache 11.1.6, 6.0.1, 7.0.1
ecto 5.0.1
@cacheable/utils 2.5.1
@cacheable/memory 6.0.0
@cacheable/node-cache 6.0.0

4. Protocole d'audit et de nettoyage de vos machines

Si vous travaillez sur des projets Node.js, voici la procédure étape par étape pour vérifier votre poste (macOS / Linux) et vos dépôts.

Étape 1 : Exécuter un scan des artefacts système

Vérifiez qu'aucun binaire temporaire ou script d'amorçage n'est présent sur votre machine. Exécutez cette commande dans votre terminal :

find /tmp /var/tmp -maxdepth 2 -name "bun-dl-*" 2>/dev/null
find /tmp /var/tmp -maxdepth 2 -type f \( -name "setup.mjs" -o -name "math_init.js" \) 2>/dev/null

Si cette commande renvoie des résultats, votre machine a exécuté le dropper.

Étape 2 : Scanner l'intégralité de vos répertoires de code

Pour auditer vos répertoires de développement (par exemple ~/CODE/) tout en ignorant les faux positifs liés aux bibliothèques Unicode standards (regexpp, regenerate-unicode-properties), utilisez cette commande d'inspection :

find ~/CODE -type f \( -name "math_init.js" -o -name "setup.mjs" \) -not -path "*/node_modules/*" 2>/dev/null; \
find ~/CODE -type f \( -name "package.json" -o -name "package-lock.json" \) -exec grep -HnE '"(keyv|flat-cache|cacheable-request|cache-manager|file-entry-cache)": ?"^(6\.0\.0|6\.1\.24|13\.0\.20|7\.2\.10|11\.1\.6)' {} + 2>/dev/null

Étape 3 : Inspecter la persistance IDE

Vérifiez vos configurations VS Code et Claude Code à la recherche de hooks automatiques malicieux :

find . -path "*/.vscode/tasks.json" -exec grep -HnE "folderOpen" {} + 2>/dev/null
find . -path "*/.claude/settings.json" -exec grep -HnE "SessionStart" {} + 2>/dev/null

5. Mesures d'urgence en cas d'infection confirmée

Si vous découvrez une version malveillante sur votre machine ou dans vos logs CI/CD :

  1. Isolez immédiatement la machine du réseau (Déconnectez le Wi-Fi et le câble Ethernet). Ne cherchez pas à supprimer les jetons depuis la machine compromise pour éviter le déclenchement du script d'effacement.
  2. Depuis un autre poste sécurisé :
  • Révoquez l'ensemble de vos npm tokens (npm token revoke <id>).
  • Révoquez vos Personal Access Tokens GitHub, vos clés SSH et réinitialisez les accès d'organisation.
  • Procédez à une rotation complète de vos identifiants d'infrastructure (AWS, GCP, Vault, bases de données, clés API LLM/Stripe).
  1. Purger les environnements : Purgez les répertoires temporaires (/tmp) et supprimez intégralement les dossiers node_modules et les fichiers de verrouillage (package-lock.json) affectés avant de réinstaller des versions saines nettoyées par le registre npm.

En conclusion : L'ère de la Zero-Trust sur le poste de dev

L'attaque Mini Shai-Hulud confirme une tendance de fond que nous observons depuis plusieurs années chez Fine Turing : le poste de travail du développeur est devenu la cible prioritaire des attaques Supply Chain. En ciblant les outils de cache, les extensions d'IDE et les CLI d'assistance IA, les attaquants s'introduisent au cœur des réseaux d'entreprises.

Pour vous en protéger durablement :

  • Activez l'option ignore-scripts = true dans votre .npmrc global pour bloquer l'exécution automatique des scripts preinstall et postinstall.
  • Utilisez des outils d'isolation de conteneurs pour vos environnements de développement local.
  • Limitez la portée et la durée de vie de vos jetons de publication et d'API.

L'équipe Fine Turing reste à votre disposition pour vous accompagner dans la sécurisation de vos chaînes de CI/CD et l'audit forensique de vos infrastructures.

Audit gratuit

Discutons de votre projet d'automatisation

Réservez 30 minutes avec nos ingénieurs. Nous identifions vos quick wins et chiffrons votre ROI potentiel — sans jargon, orienté résultats.