ReversingLabs publie une enquête sur une campagne active depuis février 2025 révélant 19 extensions VS Code malveillantes qui cachent des charges utiles dans leurs dépendances, notamment une fausse image PNG contenant des binaires.
Les extensions malicieuses incluent des dépendances pré-packagées dans le dossier node_modules dont le contenu a été altéré par l’attaquant. La dépendance populaire path-is-absolute a été modifiée localement (sans impact sur le package npm officiel) pour ajouter du code déclenché au démarrage de VS Code, chargé de décoder un dropper JavaScript stocké dans un fichier nommé ’lock’ (obfuscation par base64 puis inversion de la chaîne).
Un fichier nommé ‘banner.png’ n’est en réalité pas une image mais une archive contenant deux binaires malveillants. Le dropper exécute ces binaires via cmstp.exe (LOLBIN). L’un sert à fermer cmstp en émulant une pression de touche, l’autre est un trojan écrit en Rust (analyse en cours au moment de la publication). Dans quatre extensions, l’attaque utilise la dépendance @actions/io et répartit les deux binaires dans des fichiers ‘.ts’ et ‘.map’, sans recourir au faux PNG. 🧪
Le rapport souligne une hausse marquée des détections sur la marketplace VS Code en 2025 (de 27 en 2024 à 105 sur les dix premiers mois de 2025). Les attaques incluent des imitations d’extensions populaires ou des extensions promettant de nouvelles fonctions tout en exécutant du code malveillant. ReversingLabs rappelle qu’un pull request malveillant a permis en juillet d’infecter une extension légitime (exemple ETHCode) via l’ajout d’une dépendance malicieuse, illustrant le détournement de la chaîne d’approvisionnement.
IOC(s):
- Aucun IOC listé dans l’extrait.
TTP(s) observés:
- Attaque supply chain via extensions VS Code avec dépendances pré-packagées.
- Altération locale de dépendances (‘path-is-absolute’, ‘@actions/io’) sans modifier les packages officiels sur npm.
- Dropper obfusqué (base64 + inversion) dans le fichier ’lock’.
- Déguisement d’archive en faux PNG (‘banner.png’) contenant des binaires.
- Exécution via LOLBIN: ‘cmstp.exe’.
- Trojan Rust comme payload; émulation de touches pour fermer cmstp.
- Distribution via fichiers .VSIX et VS Code Marketplace; usurpation d’extensions.
L’article est une publication de recherche visant à documenter une campagne de malware sur la marketplace VS Code, détailler les mécanismes d’infection par dépendances, et signaler que les extensions identifiées ont été rapportées à Microsoft, avec appui de détections ML de ReversingLabs. 🔎
🧠 TTPs et IOCs détectés
TTP
[‘Attaque supply chain via extensions VS Code avec dépendances pré-packagées’, “Altération locale de dépendances (‘path-is-absolute’, ‘@actions/io’) sans modifier les packages officiels sur npm”, “Dropper obfusqué (base64 + inversion) dans le fichier ’lock’”, “Déguisement d’archive en faux PNG (‘banner.png’) contenant des binaires”, “Exécution via LOLBIN: ‘cmstp.exe’”, ‘Trojan Rust comme payload; émulation de touches pour fermer cmstp’, ‘Distribution via fichiers .VSIX et VS Code Marketplace; usurpation d’extensions’]
IOC
Aucun IOC listé dans l’extrait
🔗 Source originale : [VS Code extensions use fake image containing a trojan](VS Code extensions use fake image containing a trojan)