Voleur dans des extensions VS Code: portefeuilles et clés partent par un bot Telegram
Deux extensions malveillantes pour VS Code baptisées Solidity Pro ont passé des mois à ressembler à un outil de développement ordinaire avant de se transformer en voleurs d'identifiants. Yeeth Security a publié l'analyse le 6 août 2026, et l'essentiel n'est pas la charge utile mais la patience: le code malveillant attend entre douze et soixante-douze heures après l'installation avant de s'exécuter. À ce moment-là, le scanner de la place de marché a terminé, et le développeur a déjà jugé l'extension utile.
Ce que faisaient réellement les extensions Solidity Pro
Les extensions ont été publiées sous plusieurs identités d'éditeur, dont helper-beeps.solidity-pro et web3devtoolsx.solidity-pro, sur Open VSX et le VS Code Marketplace. Elles se faisaient passer pour un outil dédié à Solidity, le langage des contrats intelligents Ethereum, ce qui place le public visé dans une position commode pour un attaquant: des gens dont les clés de portefeuille se trouvent sur la machine de travail.
Le comportement changeait avec le numéro de version. Les publications 1.0.0 à 2.4.x jouaient le rôle de dropper: appel à des points d'accès Cloudflare Workers, téléchargement d'une charge Python chiffrée en AES-GCM et exécution via child_process.spawn. Les versions 2.4.7 et 2.4.8 conservaient le même squelette avec une obfuscation plus dense. À partir de 3.0.0, l'extension embarquait un voleur de portefeuilles crypto complet, et les versions les plus récentes ont abandonné l'étape Cloudflare au profit d'un envoi direct vers un bot Telegram. L'éditeur web3devtoolsx a aussi publié des versions propres et inoffensives numérotées 1.0.0 et 4.0.0: c'est ainsi qu'un paquet se constitue un historique crédible.
Ce que prend le voleur de portefeuilles crypto
La liste du butin se lit comme l'inventaire de toute la vie professionnelle d'un développeur. Côté identifiants: jetons GitHub sous les formes ghp_ et github_pat_, jetons GitLab glpat-, clés et jetons de session AWS, jetons Cloudflare, clés d'API OpenAI et Anthropic, jetons de bots Telegram. Côté cryptographie: clés privées SSH, clés Bitcoin en WIF et xprv, phrases mnémoniques et coffres des portefeuilles MetaMask, Phantom, Rabby, Coinbase, Trust et Keplr. S'y ajoutent les identifiants intégrés dans des adresses et les jetons MFA de 1Password.
Comment cela a franchi la revue: de douze à soixante-douze heures de patience
Le délai est configuré comme un intervalle aléatoire de douze à soixante-douze heures après l'installation. Avant de s'activer, la charge vérifie des variables d'environnement qui trahissent un environnement automatisé, dont CI, GITHUB_ACTIONS, JENKINS_HOME et GITPOD_WORKSPACE_ID, et reste dormante si elle en trouve. Un scanner qui installe un paquet, l'observe quelques minutes puis passe à autre chose verra un assistant Solidity qui ne fait rien d'inhabituel, parce qu'à cet instant il ne fait effectivement rien d'inhabituel.
Le reste relève du métier plus que de la nouveauté: adresses de points d'accès stockées en fragments hexadécimaux et réassemblées à l'exécution, chaînes découpées dans des tables de fonctions immédiatement invoquées, blocs base64 passés à eval(), et noms de méthodes qui changent d'une version à l'autre pour qu'une signature écrite pour l'une ne colle pas à la suivante. Les premières versions faisaient même une requête de diversion vers l'API publique de prix de CoinGecko, exactement ce que ferait un véritable outil de développement crypto.
Le mode opératoire WhiteCobra et les compteurs de téléchargement gonflés
Yeeth relie cette campagne à WhiteCobra, un groupe qui inonde les places de marché d'extensions depuis 2025, tout en notant que les artefacts diffèrent assez pour parler d'une correspondance de comportement et non d'une identité octet pour octet. La comparaison vaut la peine parce que le plan du groupe a fuité. En septembre 2025, Koi Security a publié un fichier intitulé "DEPLOYMENT PLAN: Operation Solidity Pro", récupéré dans une campagne de 24 extensions malveillantes sur le VS Code Marketplace et Open VSX.
Il est rédigé comme un lancement de produit. Cinq phases: empaqueter, déployer, promouvoir, gonfler, exfiltrer. L'étape de promotion décrit des modèles pour les réseaux sociaux et des bots, l'étape de gonflage ordonne de laisser tourner un script jusqu'à ce que l'extension affiche 50 000 téléchargements, selon les termes du plan pour "fournir une preuve sociale aux développeurs qui découvrent l'extension". L'estimation de revenus va de 10 000 à 500 000 dollars par heure selon le portefeuille attrapé. La leçon pratique est brutale: le compteur de téléchargements est un nombre que l'attaquant contrôle, il ne peut donc pas être ce qui vous convainc.
Que faire maintenant
- Vérifier ce qui est installé, pas ce dont vous vous souvenez: les deux extensions Solidity Pro ont disparu d'Open VSX, mais un retrait de la place de marché ne désinstalle rien sur une machine où le paquet est déjà présent.
- Traiter une atteinte comme une compromission complète: renouveler les jetons GitHub, GitLab, AWS, Cloudflare et les clés d'API, régénérer les clés SSH, et déplacer les cryptomonnaies vers un portefeuille créé sur un appareil sain. Faire tourner un seul jeton ne suffit pas quand le voleur a pris tout le lot.
- Juger l'éditeur, pas le compteur: le compteur est gonflé délibérément. Un éditeur inconnu affichant des chiffres impressionnants et un historique court correspond exactement au profil décrit dans le plan.
- Garder les phrases de récupération hors de la machine de développement: un portefeuille matériel maintient les clés de signature hors de portée de toute extension d'éditeur.
- Auditer les extensions régulièrement: supprimer ce que vous n'utilisez plus. Chaque extension installée s'exécute avec vos droits et se met à jour silencieusement.
- Repérer ce qu'un éditeur ne devrait jamais faire: une extension qui lance
powershell,cmd,mshta,cscriptoucurlmérite une alerte dans l'outillage de sécurité que vous exploitez déjà.
Pourquoi cela dépasse les développeurs
Une machine de développeur est un passe-partout. Les accès qui s'y trouvent ouvrent les chaînes qui compilent des logiciels installés par d'autres, raison pour laquelle ce type de vol s'arrête rarement à la première victime. La même logique traversait la faille de VS Code où un seul clic livrait des dépôts GitHub et les agents de code où une issue GitHub atteignait les secrets de la CI. C'est aussi là que les outils de confidentialité réseau cessent d'être pertinents, et le dire franchement est plus utile qu'un argumentaire: un VPN chiffre la connexion qu'établit une extension, il ne décide pas si elle devrait l'établir. Bloquer les domaines de commande connus au niveau DNS est une défense réelle, quoique partielle, contre l'étape du dropper, mais du code que vous avez installé vous-même et à qui vous avez donné vos droits n'est pas un problème de réseau.