# ChainDrop : le ver npm qui a contaminé 1 300 paquets en 48 heures

*Deux milliards de téléchargements mensuels touchés, Deliveroo et Ornikar parmi les victimes, et un serveur de commande caché dans la blockchain Ethereum.*

ChainDrop : le ver npm auto-propageant a infecte plus de 1 300 paquets cumulant 2 milliards de telechargements mensuels. Mecanisme, victimes et parades concretes.

**Thème :** Tech  
**Publié le :** 2026-08-08 07:23:06  
**Source :** https://golemtech.ovh/AutoArticle/article/chaindrop-le-ver-npm-qui-a-contamine-1-300-paquets-en-48-heures

---

Un compte GitHub compromis. Quarante-huit heures plus tard, plus de 1 300 paquets npm vérolés, cumulant deux milliards de téléchargements mensuels. ChainDrop est le nom donné à l'attaque de chaîne d'approvisionnement qui a secoué l'écosystème JavaScript les 4 et 5 août, et parmi les entreprises touchées figure au moins un acteur français bien connu : Ornikar.

Ce n'est pas une histoire de développeurs pour développeurs. Si vous avez commandé un repas, réservé une leçon de conduite ou retouché une photo en ligne cette semaine, vous avez probablement croisé du code affecté.

## Le déroulé de l'attaque

Tout commence par le compte GitHub de Jared Wray, mainteneur du paquet `keyv`. Une bibliothèque de gestion de cache, discrète, sans gloire, et qui pèse à elle seule plus de 600 millions de téléchargements par mois.

Une fois le compte compromis, l'infection s'est propagée en cascade vers les paquets voisins du même écosystème : `flat-cache`, `file-entry-cache`, `cacheable-request`. De là, elle a essaimé.

Le décompte final varie selon les analyses, ce qui est normal pour un incident encore chaud :

- Plus de 1 300 paquets contaminés au total.
- 868 paquets distincts sur 1 381 versions publiées, selon le décompte d'Aikido.
- Environ 2 milliards de téléchargements mensuels cumulés pour les paquets concernés.

Parmi les entreprises identifiées comme touchées : Deliveroo, Ornikar, OneReach, Picsart, Qlik, ServiceTitan.

## Comment le ver fonctionne

Le mécanisme est d'une élégance déplaisante.

Chaque paquet vérolé embarque dans son `package.json` un script `preinstall` pointant vers `node setup.mjs`. Le hook `preinstall` s'exécute automatiquement, avant même que le paquet ne soit réellement installé, dès qu'un développeur ou un serveur de build tape `npm install`. Aucune interaction requise.

Ce script télécharge le runtime Bun — un environnement JavaScript légitime, ce qui limite les alertes — puis exécute un payload obfusqué nommé `Math_Symbol.js`.

Ce payload part à la chasse aux secrets :

- Tokens npm et GitHub, ce qui permet au ver de publier de nouveaux paquets vérolés et de se propager tout seul.
- Identifiants AWS.
- Secrets Kubernetes.
- Jetons HashiCorp Vault.

C'est la boucle d'auto-propagation qui fait la différence avec une compromission classique. Chaque machine infectée fournit les clés nécessaires pour infecter la suivante. D'où les 1 300 paquets en deux jours.

### Le détail qui glace : le C2 sur Ethereum

Le serveur de commande et contrôle ne se trouve pas sur une adresse IP qu'on peut faire saisir, ni sur un domaine qu'on peut faire couper. Il utilise la technique dite **EtherHiding** : les instructions sont stockées dans des transactions de la blockchain Ethereum.

Une blockchain publique ne se débranche pas. Elle n'a pas d'hébergeur à qui envoyer une réquisition. Le malware lit ses ordres sur un registre distribué mondialement, résilient par conception et indifférent aux procédures judiciaires. Les défenseurs peuvent bloquer les requêtes vers les nœuds Ethereum, mais c'est un jeu du chat et de la souris sans fin.

## Le vrai scandale : la provenance signée

Voici le point qui devrait inquiéter tout le monde, y compris ceux qui n'écrivent pas une ligne de code.

Les versions vérolées portaient une attestation de provenance valide, signée par GitHub Actions. Autrement dit : le mécanisme censé garantir qu'un paquet a bien été construit à partir d'un dépôt identifié, par un pipeline de confiance, a certifié du code malveillant.

La provenance signée est l'un des piliers de la stratégie de sécurisation de la chaîne logicielle poussée depuis plusieurs années. Elle prouve d'où vient un binaire. Elle ne prouve pas que celui qui a lancé la construction est bien la personne qu'il prétend être. Un compte compromis passe toutes les vérifications avec les honneurs.

Ce n'est pas un bug d'implémentation, c'est une limite conceptuelle. Et elle vient d'être exploitée à grande échelle.

## Une suite plutôt qu'une première

ChainDrop est décrit comme une variante de Shai-Hulud, du nom du ver des sables de *Dune*, qui avait déjà frappé npm en septembre 2025. Même famille, mêmes réflexes, capacités élargies.

La répétition est le vrai sujet. L'écosystème npm concentre plusieurs vulnérabilités structurelles :

- Des dépendances profondes. Une application moderne tire souvent plusieurs centaines de paquets transitifs. Personne ne les lit.
- Des mainteneurs isolés. Des bibliothèques critiques reposent sur une seule personne, bénévole, sans authentification forte imposée.
- L'exécution automatique de scripts à l'installation, héritée des débuts de npm et jamais remise en cause.
- Une culture du `npm install` réflexe, y compris dans des pipelines CI qui disposent de droits considérables sur l'infrastructure de production.

Chacune de ces caractéristiques est un choix de commodité. Prises ensemble, elles forment une surface d'attaque considérable.

## Ce qu'il faut faire, concrètement

Pour les équipes techniques, la fenêtre de réaction est déjà largement entamée.

- Auditer les installations réalisées entre le 2 et le 6 août, en particulier sur les machines de build.
- Faire tourner tous les secrets susceptibles d'avoir été présents sur ces machines : tokens npm et GitHub, clés AWS, secrets Kubernetes, jetons Vault. Pas seulement ceux que vous pensez avoir été exposés.
- Vérifier l'historique de publication de vos propres paquets npm. Une publication que personne ne se rappelle avoir faite est le signal d'alerte numéro un.
- Désactiver l'exécution des scripts d'installation par défaut, avec `--ignore-scripts`, et n'autoriser que les exceptions justifiées.
- Appliquer la recommandation de Microsoft : passer au CLI npm v12 et activer `min-release-age`, qui impose un délai avant qu'une version fraîchement publiée puisse être installée. Un simple décalage de quelques jours aurait bloqué l'essentiel de cette attaque.
- Imposer l'authentification à deux facteurs matérielle sur tous les comptes disposant de droits de publication.

Pour les responsables non techniques d'une entreprise qui développe du logiciel, une seule question à poser à votre équipe cette semaine : est-ce qu'on a fait tourner nos secrets depuis le 4 août ? Si la réponse hésite, c'est déjà une réponse.

## Ce que ChainDrop révèle

Les attaques par chaîne d'approvisionnement ont un excellent rapport effort/rendement pour un attaquant. Compromettre un compte GitHub de mainteneur bénévole coûte infiniment moins cher que d'attaquer frontalement Deliveroo ou Qlik — et donne accès aux deux.

Le secteur a passé cinq ans à construire des outils de traçabilité : SBOM, signatures, attestations de provenance. Utiles. Insuffisants. Ils répondent à la question « d'où vient ce code ? » alors que l'attaque exploite la question « qui a appuyé sur le bouton ? ».

Le correctif structurel existe et personne ne l'aime : ralentir. Un délai obligatoire entre publication et installation généralisée, des revues humaines sur les paquets à fort volume, un financement réel des mainteneurs critiques. Rien de tout cela n'est technologiquement difficile. Tout cela contredit la promesse d'immédiateté sur laquelle l'écosystème s'est construit.

En attendant le prochain ver, faites tourner vos clés.

---

**Ressource recommandée : MarchesPublics** — https://golemtech.ovh/MarchesPublics/

---

## Sources

- [Next — Plus de 1 300 paquets contaminés dans npm : Shai-Hulud de retour avec ChainDrop](https://next.ink/250346/plus-de-1-300-paquets-contamines-dans-npm-shai-hulud-de-retour-avec-chaindrop/)
- [BleepingComputer — Massive ChainDrop npm supply-chain attack infects hundreds of packages](https://www.bleepingcomputer.com/news/security/massive-chaindrop-npm-supply-chain-attack-infects-hundreds-of-packages/)
- [Microsoft Security Blog — ChainDrop supply chain compromise: anatomy of a self-propagating worm](https://www.microsoft.com/en-us/security/blog/2026/08/04/chaindrop-supply-chain-compromise-anatomy-self-propagating-worm/)
