Des paquets npm et Go détournés, des tâches VS Code cachées et un infostealer Python en bout de chaîne. C’est le schéma identifié par des chercheurs en sécurité, qui ont repéré deux paquets npm compromis et 16 paquets Go embarquant la même charge malveillante. Le stratagème s’appuie sur de faux fichiers de police et sur des tâches VS Code configurées pour se lancer à l’ouverture d’un dossier.
L’attaque ne passe pas par les scripts d’installation classiques de npm. Elle dissimule l’exécution dans un fichier .vscode/tasks.json, avec une tâche nommée eslint-check et un déclenchement runOn: "folderOpen". Une fois le projet ouvert dans VS Code ou dans un fork compatible comme Cursor, la chaîne malveillante s’active si le dossier est marqué comme approuvé ou si l’exécution automatique des tâches a été autorisée.
Points clés
- Deux paquets npm (html-to-gutenberg 4.2.11, fetch-page-assets 1.2.9) et 16 paquets Go compromis embarquent la même charge malveillante.
- L’exécution est cachée dans un fichier .vscode/tasks.json déclenché à l’ouverture du dossier, contournant les scripts postinstall classiques.
- La chaîne récupère du JavaScript chiffré via des transactions blockchain, lance un backdoor socket.io puis un infostealer Python.
- Vérifier les versions installées, les tâches VS Code suspectes et les connexions sortantes vers blockchain et socket.io.
Deux paquets npm et 16 paquets Go touchés
Dans son analyse, JFrog Security Research cite deux paquets npm compromis : html-to-gutenberg en version 4.2.11 et fetch-page-assets en version 1.2.9. Les versions malveillantes ont depuis été retirées de npm. Le 25 juin 2026, Nextron Research a ajouté que 16 paquets Go contenaient eux aussi la même charge utile, avec un montage comparable : une structure de paquet apparemment légitime et un faux fichier de police servant à masquer l’exécution.
JFrog décrit une chaîne en plusieurs étapes. Après l’ouverture du dossier dans l’éditeur, le paquet récupère du JavaScript chiffré dans des données de transactions blockchain, établit une connexion vers une infrastructure contrôlée par les attaquants, lance un backdoor basé sur socket.io, puis déploie un infostealer Python. Le recours à une tâche VS Code permet de contourner les chemins d’exécution les plus surveillés de l’écosystème npm.
« Le paquet dissimule son exécution dans une tâche VS Code, configurée pour se lancer automatiquement à l’ouverture du dossier du projet dans VS Code. » (JFrog Security Research)
Une logique d’attaque orientée développeurs
Le ciblage vise les environnements de développement. Selon JFrog, le déclenchement ne dépend pas d’un appel explicite de fonction ni d’un script postinstall classique. L’exécution repose sur le comportement de l’éditeur lui-même, ce qui augmente le risque pour les postes des développeurs et pour les dépôts ouverts dans l’IDE.
Les chercheurs mentionnent aussi l’usage d’une infrastructure « dead-drop » sur blockchain pour récupérer des charges utiles chiffrées. Cette technique, déjà observée dans d’autres campagnes, complique les blocages réseau et la suppression rapide de l’infrastructure malveillante.
Ce qu’il faut surveiller
Les versions compromises ont été retirées des registres, mais les archives et les copies locales peuvent persister dans les postes et dans les pipelines de build. JFrog indique que les fichiers de configuration VS Code doivent être vérifiés, en particulier les tâches définies dans .vscode/tasks.json, ainsi que les paquets récemment ajoutés à des projets Node.js ou Go.
- contrôler les versions installées de
html-to-gutenbergetfetch-page-assets; - inspecter les dossiers projet pour des fichiers
.vscode/tasks.jsoninattendus ; - vérifier les paquets Go récents contenant des fichiers de police anormaux ;
- analyser les connexions sortantes vers des domaines ou services liés à la blockchain et à
socket.io.