Volver a la sala de prensa
Amenazas

Una extensión troyanizada de Claude Code instaló una puerta trasera SSH en equipos de desarrolladores

Una versión manipulada de la extensión Claude Code para VS Code se distribuyó desde el marketplace de Cursor durante unas once horas el 29 de octubre de 2026, plantando una clave SSH, persistencia multiplataforma y un beacon HTTP en hasta 5.000 equipos de desarrolladores. Esto es lo que hace y cómo limpiarlo.

Una extensión troyanizada de Claude Code instaló una puerta trasera SSH en equipos de desarrolladores

Una extensión troyanizada de Claude Code instaló una puerta trasera SSH en equipos de desarrolladores

Una versión manipulada de la extensión Claude Code para VS Code se distribuyó desde el marketplace de extensiones de Cursor durante unas once horas el 29 de octubre de 2026. Quien la instaló o la recibió por actualización automática en ese intervalo obtuvo una puerta trasera SSH operativa, un mecanismo de persistencia en los tres grandes sistemas operativos de escritorio y un beacon que enviaba el perfil de la máquina a un servidor controlado por el atacante. Cursor calcula que se vieron afectados como máximo 5.000 usuarios.

Qué ocurrió

Cursor ha confirmado un incidente de seguridad en el marketplace de extensiones de su IDE, que se apoya en el registro Open VSX. Entre aproximadamente las 02:27 y las 13:35, hora del Pacífico, del 29 de octubre, el marketplace sirvió un paquete modificado que se identificaba como anthropic.claude-code versión 2.1.313. Anthropic no construyó ese paquete. Cursor desconectó brevemente el marketplace para eliminarlo y afirma que el resto de extensiones distribuidas por el mismo canal no se vieron afectadas.

La versión maliciosa ya ha sido retirada y Anthropic ha publicado una versión limpia, la 2.1.314, tanto en Open VSX como en el Microsoft VS Code Marketplace. Cursor indica que está contactando directamente con los usuarios afectados. No se ha determinado quién está detrás del ataque.

La manipulación en sí era compacta: se antepuso un cargador de 66 líneas al bundle JavaScript principal de la extensión. Cualquier error del cargador se ignora en silencio y la extensión legítima arranca después con normalidad, de modo que, desde el punto de vista del usuario, nada parece fuera de lugar.

Qué hace el cargador

El implante se activa tras el arranque de VS Code y de nuevo cuando se abre el webview de la extensión. A partir de ahí recorre una lista de intrusión breve pero completa:

  • Acceso SSH. Añade una clave pública controlada por el atacante a ~/.ssh/authorized_keys, etiquetada como svc-telemetry para confundirse con claves de servicio legítimas.
  • Exposición. Intenta habilitar el servicio SSH local en Windows, Linux y macOS y abre después un túnel SSH inverso hacia un servidor en 134.209.82[.]225. El túnel expone el puerto 22 de la víctima al operador, se reconecta automáticamente si se cae y funciona con la verificación de clave de host desactivada.
  • Persistencia. En Windows registra una tarea programada que se ejecuta como SYSTEM, en Linux una entrada cron @reboot y en macOS un LaunchAgent con un nombre que imita un componente del sistema de Apple. Un script oculto bajo ~/.config reconstruye la clave y reinicia el túnel tras cada reinicio.
  • Reconocimiento. Tras una breve espera envía un perfil del equipo por HTTP sin cifrar al puerto 8099 del mismo servidor.

El perfil incluye la IP pública de la máquina, el nombre de host, el usuario local, el sistema operativo y la arquitectura de CPU, el directorio personal y el directorio de trabajo actual, el correo global configurado en Git y los nombres de hasta 40 variables de entorno que contengan KEY, TOKEN, SECRET, PASS, AWS o GCP. Los valores de esas variables no viajan en el beacon inicial, pero sus nombres bastan para que el operador sepa qué proveedores de nube, qué sistemas de CI y qué tipos de credenciales hay en el equipo. Un inicio de sesión SSH con éxito le permitiría leer los valores directamente.

Un detalle atenuante: activar el servicio SSH requiere privilegios de administrador, de los que la extensión carece en la mayoría de equipos macOS y Windows. En esas máquinas el inicio de sesión por el túnel falla. Aun así la clave queda plantada, la persistencia queda instalada y el beacon se envía, por lo que cualquier instalación dentro del intervalo debe tratarse como comprometida, sea cual sea la plataforma. Hasta ahora no se ha observado ningún payload de segunda etapa.

Por qué importa

Los equipos de los desarrolladores están entre los objetivos más valiosos de cualquier organización. Guardan claves de nube, tokens de CI, credenciales de Git, material de firma y código fuente, y suelen tener un acceso amplio a la red. Un túnel SSH inverso no es una fuga pasiva de datos; es acceso interactivo que permite a un operador ejecutar comandos y mover archivos a voluntad.

La actualización automática hizo que el ataque no tuviera fricción alguna. El desarrollador no tenía que pulsar nada; un IDE configurado para mantener las extensiones al día pudo descargar la versión maliciosa por sí solo.

Es, además, el segundo compromiso de la cadena de distribución de herramientas de desarrollo en aproximadamente una semana. Días antes, los binarios de release de la herramienta oficial de línea de comandos de un proveedor de nube fueron sustituidos por malware que roba credenciales a través de una cuenta de mantenedor secuestrada. Los atacantes han identificado con claridad la capa de distribución de las herramientas para desarrolladores como un punto débil, y los marketplaces, registros y pipelines de release forman ya parte del modelo de amenazas.

Qué hacer

  1. Comprueba la exposición. Confirma si anthropic.claude-code 2.1.313 se instaló desde el marketplace de Cursor entre las 02:27 y las 13:35 PT del 29 de octubre de 2026. Las actualizaciones automáticas cuentan.
  2. Aísla los equipos afectados de la red antes de cualquier otra cosa.
  3. Elimina la clave. Borra la entrada svc-telemetry de ~/.ssh/authorized_keys y revisa el archivo en busca de cualquier otra cosa que no reconozcas.
  4. Limpia la persistencia. Elimina la tarea programada en Windows, la entrada cron @reboot en Linux, el LaunchAgent falso en macOS, el script oculto bajo ~/.config y cualquier archivo de clave .stk_* que quede en el directorio temporal.
  5. Corta el canal. Mata cualquier proceso ssh o autossh que apunte a 134.209.82[.]225, bloquea esa dirección en el firewall de salida y busca en los registros de proxy y firewall conexiones hacia ella, sobre todo en el puerto 8099.
  6. Rota todo. Trata cada credencial presente en la máquina como expuesta: claves de acceso a la nube, tokens de API, credenciales de Git y de registros de paquetes, claves SSH y sesiones activas. La lista de nombres de variables de entorno que recogió el beacon es, en la práctica, la lista de la compra del atacante.
  7. Actualiza y restringe. Instala la 2.1.314 desde un marketplace oficial y revisa qué extensiones pueden actualizarse automáticamente y desde qué fuentes.
  8. Escálalo. Las organizaciones deben tratar esto como un incidente, no como una limpieza individual, y verificar la remediación en todas las máquinas que ejecutan el IDE afectado.

Lo más difícil de un incidente así es la cola larga: las credenciales recolectadas en el portátil de un solo desarrollador suelen reaparecer semanas después en los mercados clandestinos. Nuestro equipo de monitorización de la Deep/Dark Web vigila exactamente eso, alertando sobre tokens, claves y cuentas de desarrollador filtradas vinculadas a tu organización, para que una exposición silenciosa no se convierta en la próxima brecha.

COMPARTIR