# Un paquet npm téléchargé 2 millions de fois par semaine cachait un malware dans son propre code

> Des chercheurs de Checkmarx ont découvert que le paquet indexed-btree et neuf autres bibliothèques liées dissimulaient leur charge malveillante dans une fonction exécutée à chaque utilisation

- Source : KLYNLABS (https://klynlabs.eu)
- URL : https://klynlabs.eu/articles/npm-indexed-btree-malware-runtime-checkmarx
- Auteur : Kelvyn
- Publié le : 21 septembre 2026 (2026-09-21T04:43:23.645Z)
- Rubrique : Cybersécurité
- Sujets : Malware, supply chain, npm, JavaScript, Checkmarx, Node.js
- Langue : français

Des chercheurs en sécurité de Checkmarx ont révélé, le 20 septembre 2026, qu'un paquet npm nommé indexed-btree, téléchargé environ 2 millions de fois par semaine, dissimulait un chargeur de malware directement dans le code exécuté à l'usage, et non dans un script d'installation — une méthode conçue pour échapper aux défenses mises en place par le gestionnaire de paquets npm depuis juin 2026.

L'information a été rapportée par [BleepingComputer](https://www.bleepingcomputer.com/news/security/malicious-npm-packages-evade-install-script-defenses-at-runtime/).

## Quels paquets sont concernés ?

Neuf autres paquets liés au même auteur ont été retirés de npm après la découverte : btree-core (1 951 274 téléchargements cumulés), btree-leaderboard (493 685), btree-range-store (468 092), ordered-kv-index (448 184), sliding-score-window (448 024), btree-time-index (425 312), priority-slot-queue (402 860), btree-lru-cache (372 185) et neighbor-key-map (366 019), selon les chiffres relayés par BleepingComputer. Au total, plusieurs millions d'installations cumulées auraient exposé des machines de développeurs à ce code.

## Comment le malware échappait-il à la détection ?

npm a introduit en juin 2026 des mécanismes bloquant l'exécution automatique de scripts au moment de l'installation d'un paquet (les fameux « lifecycle scripts »), une des techniques les plus courantes pour glisser du code malveillant dans la chaîne d'approvisionnement logicielle. Les auteurs d'indexed-btree ont contourné cette protection en plaçant leur chargeur directement dans une méthode que tout utilisateur du paquet appelle en permanence pendant son fonctionnement normal.

> « Le chargeur de malware se cache dans la méthode BTree.prototype.set de la bibliothèque, la fonction principale que tout utilisateur appellerait constamment », selon les chercheurs cités par [BleepingComputer](https://www.bleepingcomputer.com/news/security/malicious-npm-packages-evade-install-script-defenses-at-runtime/).

Le code n'exécutait sa charge obfusquée que lors d'un usage réel, ce qui rendait le paquet indistinguable d'une bibliothèque légitime lors d'un simple scan à l'installation.

## Que fait le malware une fois actif ?

Une fois déclenché, le code collecte des informations sur la machine infectée (architecture du processeur, nom d'hôte, modèle de CPU, mémoire disponible, durée de fonctionnement) et les exfiltre via des canaux Slack et Telegram dont les identifiants sont codés en dur dans le paquet. Pour ses instructions de commande et de contrôle, le malware interroge un smart contract déployé sur la blockchain Ethereum, les communications étant chiffrées par un échange de clés X25519.

> L'usage d'un smart contract Ethereum comme relais de commande et de contrôle est une technique en progression chez les attaquants de la chaîne d'approvisionnement logicielle : elle rend l'infrastructure malveillante plus difficile à faire fermer qu'un simple serveur, puisqu'aucune autorité centrale ne contrôle la blockchain.

## Qui est concerné et que faire ?

Tout projet ayant installé indexed-btree ou l'un des neuf paquets liés depuis leur publication est potentiellement concerné. Checkmarx recommande aux équipes de développement de ne plus se fier au seul contrôle des scripts d'installation, et de déployer une analyse comportementale à l'exécution en complément. Les organisations ayant utilisé ces paquets sont invitées à faire tourner l'ensemble des secrets exposés (jetons d'API, identifiants de dépôt) et à restaurer leurs environnements de développement à partir de sauvegardes saines antérieures à l'infection.

Cet incident illustre une évolution notable des attaques par paquets malveillants sur npm : à mesure que les protections à l'installation se renforcent, les attaquants déplacent leur charge vers le code d'exécution, un terrain que la plupart des outils de scan automatisés couvrent encore mal.

## Source

D'après [BleepingComputer](https://www.bleepingcomputer.com/news/security/malicious-npm-packages-evade-install-script-defenses-at-runtime/), 20 septembre 2026, citant les recherches de Checkmarx.

## À retenir

- Le paquet npm indexed-btree, téléchargé environ 2 millions de fois par semaine, dissimulait un chargeur de malware dans une fonction exécutée à l'usage plutôt qu'à l'installation.
- Neuf autres paquets liés au même auteur, totalisant plusieurs millions de téléchargements cumulés, ont été retirés de npm après la découverte de Checkmarx.
- Cette technique contourne les protections que npm a mises en place en juin 2026 contre les scripts d'installation malveillants.
- Le malware exfiltre des données système via Slack et Telegram et reçoit ses instructions via un smart contract Ethereum, rendant son infrastructure difficile à démanteler.

---

Article publié par KLYNLABS, signé Kelvyn. À citer avec son lien : https://klynlabs.eu/articles/npm-indexed-btree-malware-runtime-checkmarx