GlassWorm : Un chargeur natif Zig infecte tous les éditeurs VS Code
Une nouvelle phase de la campagne GlassWorm utilise une extension fausse WakaTime sur Open VSX pour déployer un binaire natif Zig. Ce code contourne le sandbox JavaScript, scanne le système et installe un malware dans chaque IDE compatible avec VS Code — du propre VS Code à Cursor ou Positron.
Les chercheurs d’Aikido Security ont découvert l’extension code-wakatime-activity-tracker, qui imite la version légitime de WakaTime mais contient une fonction activate() modifiée. Cette fonction télécharge le binaire win.node (Windows) ou mac.node (macOS), déclenchant ainsi toute une chaîne d'infection.
Mécanisme de chargement initial
La fonction activate() nécessite l'addon natif :
const bw = process.platform === "win32" ? "./bin/win.node" : "./bin/mac.node";
const { install } = require(bw);
install();
Ces binaires sont des addons natifs Node.js (DLL PE32+ sous Windows, Mach-O sous macOS pour x86_64/arm64), compilés avec Zig. Ils s'injectent directement dans le runtime Node avec des privilèges au niveau du système, évitant ainsi le sandbox JavaScript. Les symboles de débogage présents dans la version macOS pointent vers /Users/davidioasd/Downloads/vsx_installer_zig.
Ensuite, le binaire énumère les chemins vers les IDEs :
- Windows :
%LOCALAPPDATA%\Programs\Microsoft VS Code\bin\code.cmd %LOCALAPPDATA%\Programs\Cursor\resources\app\bin\cursor.cmd- Des chemins similaires pour VS Code Insiders, Windsurf, VSCodium et Positron.
Sur macOS : /Applications/*.app pour les mêmes éditeurs. Si plusieurs IDEs sont présents, tous sont compromis.
Deuxième étape : falsification de l'auto-importation
Le binaire télécharge le fichier .vsix floktokbok.autoimport depuis GitHub Releases (une copie de steoates.autoimport, avec plus de 5 millions d'installations). Chaque IDE est installé via la ligne de commande :
cmd.exe /d /e:ON /v:OFF /c "<ide_path> --install-extension <vsix_path>"
Après installation, la fonction cleanupVsix() supprime toutes les traces. Le second chargeur ignore les locales russes et utilise la blockchain Solana pour la communication C2 (l'adresse extraite des transactions de portefeuille). Il exfiltre des secrets, déploie un RAT et installe un vol d'informations pour Chrome afin de collecter les cookies et enregistrer les frappes du clavier.
Compromis de l'attaque :
- Avantages : Le code natif reste invisible dans DevTools ; la C2 basée sur Solana résiste au blocage de domaine.
- Inconvénients : Les hachages binaires restent statiques jusqu’à recompilation ; limité aux systèmes Windows et macOS.
Évolution de GlassWorm
La campagne est active depuis mars 2025 — elle a évolué depuis des paquets npm à charge Unicode vers GitHub et le marché VS Code. Le changement clé ? L’utilisation d’addons basés sur Zig plutôt que JavaScript, nécessitant une analyse au niveau du système. Des centaines de projets ont déjà été compromis.
Indicateurs d’incidents
Extensions :
specstudio.code-wakatime-activity-trackerfloktokbok.autoimport
Binaires SHA-256 :
- win.node :
2819ea44e22b9c47049e86894e544f3fd0de1d8afc7b545314bd3bc718bf2e02 - mac.node :
112d1b33dd9b0244525f51e59e6a79ac5ae452bf6e98c310e7b4fa7902e4db44
Chaînes : vsx_installer_zig, davidioasd
Points clés
- Les addons natifs Zig contournent l’analyse JavaScript — surveillez les fichiers
.nodeet.dlldans les extensions. - L’infection suit une chaîne : une extension compromise infecte tous les forks VS Code sur la machine.
- C2 basée sur Solana : le blocage de domaine est inefficace — la surveillance de la blockchain est essentielle.
- L’ignorance des locales russes indique une cible spécifique — renouvelez vos secrets immédiatement si détecté.
- Prévention : vérifiez l’éditeur et le nombre d’installations ; scannez les dossiers EDR pour les extensions.
Étapes de nettoyage
- Vérifiez les extensions sur tous les IDEs (VS Code, Cursor, etc.).
- Supprimez celles suspectes ; renouvelez vos clés SSH, jetons (npm, PAT GitHub, AWS).
- Nettoyez Chrome des extensions inconnues et déconnectez-vous partout.
- Mettez en place un whitelist d’extensions et un EDR pour les addons natifs.
— Editorial Team
Aucun commentaire pour le moment.