Investigadores de Koi Security han documentado una campaña de supply chain que afecta al ecosistema de extensiones de Visual Studio Code. La amenaza, bautizada como GlassWorm, consiguió infiltrar código malicioso tanto en OpenVSX como en el Visual Studio Code Marketplace, registrando al menos 35.800 instalaciones. Dada la omnipresencia de VS Code en equipos de desarrollo, el incidente tiene alcance global para desarrolladores y equipos de seguridad.
Ataque a la cadena de suministro: actualización silenciosa y robo de credenciales
GlassWorm es un gusano autopropagable que oculta su carga útil mediante caracteres Unicode invisibles (como anchura cero) e incrementa su alcance robando credenciales y tokens de publicación de desarrolladores. Con esos accesos, los atacantes publican nuevas versiones envenenadas de extensiones legítimas, multiplicando víctimas sin levantar sospechas. La función de actualización automática de VS Code agrava el riesgo: los usuarios reciben versiones comprometidas en segundo plano, sin interacción ni alertas, lo que equivale a una infección silenciosa.
Extensiones afectadas y estado de mitigación
Koi Security identificó al menos 11 paquetes comprometidos en OpenVSX y uno en el Marketplace oficial de Microsoft:
- [email protected] y 1.8.4
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected] y 1.0.91
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected] (Microsoft VS Code Marketplace)
Al cierre del informe, al menos cuatro paquetes maliciosos seguían disponibles en OpenVSX. Microsoft retiró de forma expedita el complemento afectado de su Marketplace. Los autores de vscode-theme-seti-folder y git-worktree-menu publicaron actualizaciones que eliminan la inyección maliciosa.
Técnicas, TTPs e infraestructura de GlassWorm
Tras la instalación, GlassWorm prioriza el robo de tokens y contraseñas de GitHub, npm y OpenVSX, y la exfiltración de datos de criptomonedero desde 49 extensiones populares. Para persistencia y monetización, despliega un proxy SOCKS y una instancia HVNC (VNC oculto) que facilita el acceso remoto clandestino.
La infraestructura de mando y control es multicapa. El canal principal se apoya en la blockchain de Solana: transacciones en una dirección codificada en el worm contienen cadenas base64 con las siguientes etapas de carga. Como canal de respaldo, el actor abusa de Google Calendar, escondiendo URLs en base64 en los títulos de eventos. Un tercer método conecta directamente con 217.69.3[.]218. Para evasión y resiliencia, emplea BitTorrent DHT y distribución descentralizada de comandos. La etapa final, ZOMBI, es JavaScript fuertemente ofuscado que convierte los hosts comprometidos en nodos de botnet.
Riesgos para la cadena de suministro y detección
El vector crítico es la redistribución del modelo de confianza: con tokens sustraídos, los atacantes publican desde cuentas legítimas, erosionando controles tradicionales. El code-hiding con caracteres invisibles dificulta las revis