Contexte et découverte
Le 22 septembre 2026, Checkmarx a signalé la présence d’un paquet npm nommé indexed-btree qui imite le légitime sorted-btree. Malgré l’interdiction récente des scripts d’installation (preinstall/postinstall) dans npm, ce paquet a atteint près de 2 millions de téléchargements hebdomadaires. L’analyse a révélé que le code malveillant n’est pas exécuté lors de l’installation, mais uniquement lorsqu’une fonction JavaScript du paquet est invoquée.
Mécanisme d’infection à l’exécution
Le vecteur d’infection repose sur la surcharge de la méthode standard Btree.prototype.set. Cette surcharge insère du code fortement obfusqué qui s’active dès le premier appel de set. Le module collecte alors des informations d’identification du système hôte : architecture du système d’exploitation, nom d’hôte, modèle CPU et capacité mémoire. Ces données sont transmises à un canal Slack et à un groupe Telegram préconfigurés, ce qui permet aux attaquants de cartographier rapidement l’infrastructure compromise.
Infrastructure de commande‑et‑contrôle
Pour la phase de commande‑et‑contrôle, les auteurs ont choisi un smart contract Ethereum déployé sur le testnet Sepolia (preuve d’enjeu). Le contrat expose des fonctions getter et setter que le malware interroge régulièrement. Cette approche rend la résilience du C2 supérieure aux méthodes classiques basées sur des noms de domaine ou des adresses IP, car le contrat peut rediriger les requêtes vers de nouvelles adresses sans être bloqué. Le rapport indique également que le code possède une routine d’autodestruction capable de supprimer les fichiers malveillants et d’effacer les traces du déclencheur.
Implications pour la sécurité des chaînes d’approvisionnement
Le recours à du code d’exécution plutôt qu’à des scripts d’installation montre une adaptation rapide aux lifecycle script restrictions imposées par npm. Les défenseurs doivent désormais surveiller non seulement la réputation d’un paquet, mais aussi les changements de code inattendus, le comportement à l’exécution et les connexions sortantes vers des services externes. L’enquête a également mis en évidence la création d’un dépôt GitHub factice, doté de commits réalistes et d’une photo générée par IA, afin de renforcer la légitimité perçue du paquet. Selon Checkmarx, les attaquants ont déjà récupéré 109 ETH, soit environ 264 963 $, via le smart contract. Cette campagne illustre que le durcissement des contrôles d’installation ne suffit plus : la visibilité sur le runtime et la provenance des dépendances devient indispensable pour contrer les menaces de la chaîne d’approvisionnement npm.