Ciberseguridad

GlassWorm se escondió un año en extensiones de VS Code antes de su desmantelamiento

Susan Hill

Durante más de un año, algunos de los programadores que construyen las aplicaciones de tu teléfono trabajaban, sin saberlo, para otra persona. Un programa malicioso llamado GlassWorm vivía dentro de extensiones de Visual Studio Code, el editor de código más usado del mundo, y dentro de los paquetes de código abierto que esos programadores incorporan a sus proyectos a diario. Recolectaba sus contraseñas, secuestraba sus cuentas y las usaba para instalarse en todavía más software. CrowdStrike, Google y la Fundación Shadowserver acaban de cortarle los hilos.

Esto importa incluso a quien nunca ha abierto un editor de código, porque la cadena de suministro del software es exactamente eso, una cadena. La aplicación de mensajería del móvil, la del banco, el juego de la consola se apoyan en miles de pequeñas piezas de código abierto que escriben y mantienen otras personas. Si se envenena una de esas piezas, el veneno puede viajar aguas abajo hasta productos terminados que usan millones. GlassWorm fue diseñado para aprovechar esa corriente sin que nadie lo viera.

Lo que lo distinguía era su forma de ocultarse. Sus operadores escribían las instrucciones maliciosas con caracteres Unicode invisibles, código que aparece como un espacio en blanco dentro del editor, de modo que un programador que revisaba el archivo no veía nada extraño. Los investigadores de Koi Security, que identificaron la campaña por primera vez, lo describieron como el primer gusano capaz de propagarse solo a través de extensiones de editores de código. Cada máquina infectada se convertía en el punto de partida de la siguiente.

La mayoría de los ataques a la cadena de suministro son un golpe rápido: se detecta un paquete envenenado, se retira y se corrige en cuestión de días. GlassWorm estaba hecho para durar. Como robaba las credenciales que necesitaba para propagarse, podía seguir reinstalándose mucho después de que cayera cualquier extensión, y así una sola operación alcanzó cientos de proyectos y decenas de miles de descargas a lo largo de más de un año.

Las vías de infección eran las cañerías cotidianas del trabajo con software. Los operadores subían extensiones con trampa a Open VSX, el mercado que alimenta a VS Code y a sus parientes Cursor, Windsurf, Positron y VSCodium, disfrazándolas de herramientas inofensivas como cronómetros o formateadores de código. Colaban código alterado en paquetes de npm y del índice de Python mediante scripts de instalación que se ejecutan solos y, con credenciales tomadas a víctimas anteriores, forzaban la entrada de cambios maliciosos en las ramas principales de más de 300 repositorios de GitHub. Una vez dentro de una máquina, GlassWorm buscaba llaves: tokens de npm, accesos a GitHub, los tokens de publicación que permiten subir extensiones y carteras de criptomonedas. Convertía los equipos infectados en servidores de paso para otro tráfico delictivo y, en algunos casos, instalaba un software de acceso remoto oculto que daba a los operadores una vista en directo de la pantalla.

Desmantelarlo obligaba a ir contra la forma en que los operadores seguían en contacto con sus máquinas, y ahí GlassWorm estaba pensado para sobrevivir. En lugar de depender de un único servidor de control que se pudiera desconectar, usaba cuatro canales a la vez. Uno escondía las instrucciones dentro de transacciones de la cadena de bloques Solana, un registro público diseñado para ser permanente e inaccesible. Otro guardaba la configuración en la red de intercambio de archivos BitTorrent. Un tercero metía direcciones cifradas en los títulos de eventos de Google Calendar. El cuarto era un servidor alquilado corriente. El equipo Counter Adversary Operations de CrowdStrike, junto a Google y Shadowserver, cortó el conjunto entero en una sola operación coordinada.

Cortar los cables no es lo mismo que limpiar la herida. Cortar los canales impide que los operadores den órdenes nuevas y envíen más cargas maliciosas, pero no elimina GlassWorm de las máquinas que ya controla, y cada contraseña que ya robó sigue robada. Tampoco es la primera vez que se interrumpe la campaña. Después de que Koi Security la destapara, GlassWorm volvió, una vez con dos docenas de extensiones maliciosas nuevas y, meses después, con varias docenas más. El canal en cadena de bloques que los investigadores describían como imposible de desmantelar acaba de ser desmantelado, pero quienes están detrás han demostrado una y otra vez que reconstruyen.

Los investigadores creen que los operadores están probablemente en Rusia. El programa comprueba el idioma y la zona horaria del ordenador al arrancar y se cierra en silencio si cae en un sistema de Rusia o de un país vecino de la antigua órbita soviética, una huella habitual de los grupos delictivos que operan desde la región y evitan a las víctimas locales. CrowdStrike resumió el cambio sin rodeos: los atacantes ya no van solo contra los productos, van contra los programadores que los construyen. La Fundación Shadowserver ha empezado a avisar a las organizaciones afectadas para que desinfecten sus sistemas y renueven todas las credenciales que hayan podido filtrarse, y para todos los que están más abajo en la cadena el trabajo de verdad empieza ahora, mientras los equipos revisan qué extensiones y paquetes instalaron desde principios de 2025. La infraestructura está apagada. La limpieza apenas ha empezado.

Debate

Hay 0 comentarios.