Neutron, nuestro motor de IA, obtuvo un 97.1% en el benchmark CyberGym de UC Berkeley. Más información

Análisis a fondo

Análisis a fondo

La extensión Claude Code troyanizada en Cursor instala una puerta trasera SSH

Una versión maliciosa 2.1.313 de la extensión Claude Code en el marketplace de Cursor añadió una puerta trasera SSH; 5,000 usuarios como máximo la instalaron el 29 de octubre de 2026.

Resumen

  • Una versión maliciosa de la extensión de VS Code Claude Code de Anthropic, la 2.1.313, se distribuyó por el marketplace de extensiones de Cursor durante unas 11 horas el 29 de octubre de 2026. Cursor declara que 5,000 usuarios como máximo la instalaron y que esa versión no fue desarrollada por Anthropic.
  • La versión lleva un cargador de 66 líneas insertado al inicio del archivo JavaScript principal de la extensión. Añade una clave SSH controlada por el atacante a ~/.ssh/authorized_keys, intenta activar el servicio SSH local, abre un túnel SSH inverso e instala persistencia por plataforma.
  • OpenSourceMalware publicó el análisis del código el 30 de octubre de 2026. Cursor retiró la versión, cerró su marketplace, lo reconstruyó y consiguió desconectar el servidor del atacante. Ninguna otra extensión fue alterada. No hay ninguna CVE asignada, y el incidente no figura en el catálogo KEV de CISA a 30 de octubre de 2026.
  • Si instaló o actualizó Claude Code desde el marketplace de Cursor el 29 de octubre, ejecute la comprobación de svc-telemetry de abajo y siga los pasos de eliminación. Desinstalar la extensión no basta: la carga útil deja persistencia autónoma.

¿Estoy afectado?

Deben cumplirse todas estas condiciones:

  • Usa el IDE Cursor, no VS Code, e instaló o actualizó la extensión Claude Code desde el marketplace de extensiones de Cursor.
  • La instalación o actualización ocurrió entre las 2:27 a. m. y la 1:35 p. m., hora del Pacífico, del 29 de octubre de 2026, mientras la versión maliciosa estaba disponible.
  • La versión instalada es la 2.1.313. Cursor instala las extensiones automáticamente cuando las actualizaciones están habilitadas, así que la versión importa más que el recuerdo de haber elegido instalarla.

No está afectado por estos canales, que OpenSourceMalware confirmó limpios:

  • El paquete npm @anthropic-ai/claude-code.
  • La extensión Claude Code en Open VSX.
  • La extensión Claude Code en el Microsoft Visual Studio Code Marketplace.

La versión 2.1.313 nunca fue una versión oficial de Anthropic. Las versiones publicadas por Anthropic pasan de la 2.1.312 del 27 de octubre de 2026 a la 2.1.314 del 30 de octubre de 2026, así que el número malicioso solo existió en el marketplace de Cursor.

Compruebe si la carga útil se ejecutó en su equipo. El artefacto más fiable del cargador es la clave SSH que añade. En macOS y Linux:

grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "svc-telemetry key found" || echo "No key found; machine not impacted"

En Windows, ejecute en PowerShell:

$files = "$HOME\.ssh\authorized_keys", "C:\ProgramData\ssh\administrators_authorized_keys" | Where-Object { Test-Path $_ }
if ($files -and (Select-String svc-telemetry $files)) { "svc-telemetry key found" } else { "No key found; machine not impacted" }

Estas comprobaciones provienen del aviso de seguridad de Cursor. Una clave ausente no prueba que la extensión nunca se ejecutó; prueba que el paso de la clave de la puerta trasera no se completó. Los indicadores de «¿Cómo compruebo si estuve comprometido?» cubren el resto.

¿Cómo lo corrijo?

La extensión maliciosa ya no está en el marketplace, así que la corrección consiste en eliminar y verificar.

  1. En Cursor, desinstale la extensión Claude Code y reinicie el editor. Si todavía necesita Claude Code en Cursor, reinstálela desde el marketplace reconstruido y confirme que la versión es la 2.1.314 o posterior.
  2. Ejecute la comprobación de svc-telemetry de arriba. Si encuentra la clave, continúe primero con «¿Qué debo hacer si la comprobación encuentra la clave?».
  3. Ejecute el script de remediación de Cursor para su plataforma: remediate-macos.sh como usuario afectado en macOS, o remediate-windows.ps1 desde un PowerShell de administrador en Windows. Los scripts eliminan la extensión, los mecanismos de persistencia, los procesos de túnel y la clave del atacante, y terminan con código distinto de cero si queda algo.
  4. Repita la comprobación de svc-telemetry hasta que informe que no hay clave.

Anthropic publicó la versión 2.1.314 en Open VSX y en el Microsoft VS Code Marketplace el 30 de octubre de 2026, así que las extensiones de esos dos marketplaces se actualizan con normalidad a una versión limpia.

¿Qué hace el código malicioso?

El único archivo modificado es extension.js. OpenSourceMalware encontró una función invocada inmediatamente de 66 líneas, insertada antes del paquete legítimo de la extensión, de modo que el código malicioso se ejecuta cuando se carga el módulo de la extensión: al iniciar VS Code y al abrir la webview de la extensión. No interviene ningún script del ciclo de vida del paquete; basta con cargar el módulo.

El cargador ejecuta la misma cadena en macOS, Linux y Windows:

  1. Reconocimiento. Recopila el nombre de host, el usuario local, el sistema operativo, la arquitectura de CPU, el directorio personal, el directorio de trabajo actual, el correo global de Git desde git config --global user.email, y los nombres de hasta 40 variables de entorno que contengan las cadenas KEY, TOKEN, SECRET, PASS, AWS o GCP. Los valores no se envían; los nombres ya revelan qué proveedores de nube y qué tipos de credenciales usa el equipo.
  2. Instalación de clave autorizada. Crea ~/.ssh con modo 0700, añade una clave pública Ed25519 con el comentario svc-telemetry a ~/.ssh/authorized_keys, y fija el archivo en modo 0600.
  3. Activación del servicio SSH. Intenta activar Remote Login en macOS con sudo -n systemsetup -setremotelogin on, iniciar sshd en Linux mediante systemctl, e instalar e iniciar OpenSSH Server en Windows mediante PowerShell.
  4. Túnel SSH inverso. Decodifica una clave privada OpenSSH incrustada en un archivo temporal llamado .stk_<identifier>, y luego se conecta repetidamente como tunnel@134.209.82[.]225 con la petición de reenvío -N -R '*:0:localhost:22', pidiendo al servidor del atacante que asigne un puerto que reenvíe al servicio SSH de la víctima. La verificación de clave de host está desactivada y la conexión se reintenta cada 60 segundos, con preferencia por autossh cuando está disponible.
  5. Persistencia. En macOS escribe ~/.config/.smt y ~/.config/.smtk más un LaunchAgent llamado com.apple.sysmond.plist con RunAtLoad y KeepAlive. En Linux escribe los mismos dos archivos en ~/.config y añade el script del túnel al crontab del usuario con una entrada @reboot. En Windows crea una tarea programada llamada SysMon que intenta ejecutarse como SYSTEM, con un script en la carpeta de inicio como respaldo.
  6. Baliza. Tras 1.5 segundos obtiene la IP pública con curl ifconfig.me y curl https://api.ipify.org, y envía los detalles recopilados como JSON por POST a http://134.209.82[.]225:8099/beacon por HTTP sin cifrar, con un segundo POST a http://127.0.0.1:8099/beacon. La respuesta se descarta.

Casi todas las excepciones se suprimen, de modo que los fallos no dejan señal visible y la extensión legítima sigue cargándose. La etapa inyectada no descarga nada más; OpenSourceMalware no encontró ningún descargador de segunda etapa, solo las consultas de IP, la baliza y el túnel interactivo.

¿Cómo llegó la actualización troyanizada a los usuarios?

La versión maliciosa se publicó en el marketplace de extensiones VS Code de Cursor bajo la identidad legítima de la extensión Claude Code, anthropic.claude-code, y Cursor la sirvió como versión 2.1.313. Al llevar la identidad real del editor, llegó a los usuarios y a la actualización automática como una actualización ordinaria, no como una extensión nueva. La versión estuvo disponible unas 11 horas, de las 2:27 a. m. a la 1:35 p. m., hora del Pacífico, entre dos versiones oficiales de Anthropic.

Cronología desde la versión oficial 2.1.312 del 27 de octubre hasta la versión limpia 2.1.314 del 30 de octubre, con la versión maliciosa 2.1.313 disponible 11 horas en el marketplace de Cursor.
Figura 1: La versión maliciosa de la extensión Claude Code estuvo disponible en el marketplace de Cursor entre dos versiones oficiales de Anthropic, del 27 al 30 de octubre de 2026. Fuente: aviso de seguridad de Cursor, versiones de Anthropic y OpenSourceMalware, consultado el 30 de octubre de 2026.

Cursor declara que identificó el incidente, retiró la versión y bloqueó su distribución, y luego cerró todo el marketplace, auditó los accesos, rotó sus claves y reconstruyó el marketplace. También trabajó con el proveedor de alojamiento para desconectar el servidor del atacante, de modo que el túnel inverso y la baliza ya no funcionan.

Cómo el atacante introdujo la versión no está establecido públicamente. The Hacker News informa de que el método sigue sin aclararse. OpenSourceMalware escribe que la procedencia del artefacto analizado no está establecida, y que sus hallazgos demuestran que el artefacto es malicioso sin probar que la propia infraestructura de publicación de Anthropic estuviera comprometida. Cursor comunicó a OpenSourceMalware que la extensión Claude Code de su marketplace «sufrió alguna forma de comprometimiento», lo que sitúa el incidente en la ruta de distribución de Cursor y no en Open VSX.

¿Cómo fluye el ataque?

En una frase: el atacante acuñó una 2.1.313 troyanizada que el marketplace de Cursor sirvió como una actualización normal, y el cargador antepuesto convirtió cada reinicio del editor en una ruta SSH persistente hacia el servidor del atacante.

flowchart LR A["El atacante crea
la 2.1.313"] --> B["El marketplace de Cursor
la sirve como actualización"] B --> C["VS Code carga
extension.js"] C --> D["El cargador de 66 líneas
se ejecuta primero"] D --> E["Clave svc-telemetry añadida
a authorized_keys"] D --> F["Túnel SSH inverso hacia
134.209.82[.]225"] D --> G["Persistencia: LaunchAgent,
cron, tarea programada"] D --> H["Baliza con detalles del
equipo hacia :8099"]

¿Qué puede hacer un atacante?

El objetivo de la cadena es el acceso remoto persistente por SSH. Su alcance real tiene límites, y el propio análisis de Cursor los expone con claridad:

  • En la mayoría de los equipos macOS y Windows, el paso de activación del SSH falló. Activar el servicio SSH local requiere derechos de administrador, y Cursor declara que fuera de «circunstancias muy inusuales en las que Cursor se inició con privilegios de administrador», errores en el código malicioso hacían fallar este paso. Sin un servicio SSH a la escucha, el túnel no tenía ningún puerto 22 al que llegar, así que el operador no pudo entrar por él en esos equipos.
  • La instalación de la clave, la persistencia y la baliza sí se quedan en esos equipos, y los detalles del equipo igualmente llegan al atacante. Cursor pide a los usuarios afectados que sigan la remediación en todo caso.
  • En equipos donde el servicio SSH sí arrancó, un operador con la clave privada correspondiente pudo conectarse por el túnel inverso y ejecutar comandos como la cuenta de la víctima; así describe OpenSourceMalware el propósito del túnel.
  • La baliza transporta detalles del equipo y nombres de variables de entorno, no valores. OpenSourceMalware señala que un acceso SSH exitoso permitiría al operador inspeccionar la cuenta directamente, así que la baliza subestima el acceso en lugar de exagerarlo.

Ninguno de los dos análisis observó cargas ulteriores.

¿Qué debo hacer si la comprobación encuentra la clave?

Trate el equipo como comprometido y responda en este orden, combinando la guía de Cursor y la de OpenSourceMalware:

  1. Desconecte el equipo de la red y aíslelo. Bloquee 134.209.82[.]225 en los puertos 22 y 8099 en sus controles.
  2. Preserve las pruebas forenses antes de la limpieza: los archivos dejados, la línea de authorized_keys, el LaunchAgent o la tarea programada, y cualquier telemetría de procesos. OpenSourceMalware aconseja recoger evidencia primero, porque los archivos observables pueden no representar toda la compromisión.
  3. Elimine la extensión, los mecanismos de persistencia y cualquier proceso de túnel ssh o autossh en ejecución, con los scripts de Cursor o a mano según los indicadores de abajo.
  4. Rote las credenciales y sesiones accesibles desde esa cuenta, desde un sistema limpio: claves SSH, hosts de Git, registros de paquetes, consolas de nube, almacenes de contraseñas y sesiones del navegador.
  5. Evalúe si reconstruir. OpenSourceMalware escribe que reconstruir el equipo es más seguro que suponer que eliminar los artefactos conocidos restaura la confianza, porque el túnel creaba una ruta interactiva hacia la cuenta.

¿Cómo compruebo si estuve comprometido?

Más allá de la comprobación de la clave svc-telemetry, busque los indicadores publicados en terminales, registros de red y telemetría de instalación de extensiones. Todos provienen del aviso de seguridad de Cursor y del análisis de OpenSourceMalware.

Archivos y persistencia a buscar:

  • ~/.ssh/authorized_keys con el comentario svc-telemetry
  • ~/.config/.smt y ~/.config/.smtk (macOS, Linux), o %USERPROFILE%\.config\smt.cmd y smtk (Windows)
  • Archivos en $TMPDIR o %TEMP% que coincidan con .stk_<10 hex> o .nc<PID>.js
  • LaunchAgent de macOS ~/Library/LaunchAgents/com.apple.sysmond.plist con la etiqueta com.apple.sysmond
  • Tarea programada de Windows llamada SysMon, o sysmon.cmd en la carpeta de inicio
  • Una carpeta de extensión llamada anthropic.claude-code-2.1.313-darwin-arm64 o anthropic.claude-code-2.1.313-win32-x64 cuyo extension.js contenga 134.209.82.225 y svc-telemetry

Indicadores de red:

  • Cualquier conexión a 134.209.82[.]225, en especial los puertos 22 y 8099
  • POST HTTP hacia /beacon, incluidos los intentos en bucle local hacia 127.0.0.1:8099
  • Las consultas a ifconfig.me y api.ipify.org son servicios legítimos; tómelas como contexto, no como prueba

Líneas de comando de procesos a buscar:

  • ssh -N -R '*:0:localhost:22' o autossh -M 0
  • Opciones SSH StrictHostKeyChecking=no junto con UserKnownHostsFile=/dev/null
  • schtasks /create /tn SysMon, systemsetup -setremotelogin on, o Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Hashes de paquetes para escaneos de terminales: los VSIX modificados hashean a 432ccdee3801f99e52b8fe31f69ea9870118e96ea7ef9ecabed1479621b5ab62 (darwin-arm64) y 3de1722901165769893bef57c72594e9a54459faa23f3091b136b79966edd081 (win32-x64), y el extension.js malicioso a ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15.

Un solo indicador encontrado es una pista, no la prueba de la cadena completa. Un intento cuyos pasos fallaron puede aun así haber dejado la baliza y la clave.

Cronología

  • 2026-10-27: Anthropic publica la versión 2.1.312 de la extensión Claude Code, la última versión oficial antes del incidente.
  • 2026-10-29: Entre las 2:27 a. m. y la 1:35 p. m., hora del Pacífico, la versión maliciosa 2.1.313 está disponible en el marketplace de extensiones de Cursor. Cursor declarará después que 5,000 usuarios como máximo resultaron afectados.
  • 2026-10-29: Cursor identifica la versión maliciosa, la retira, bloquea su distribución y cierra el marketplace de VS Code como precaución, y luego lo reconstruye tras rotar claves y auditar accesos.
  • 2026-10-29: Cursor trabaja con el proveedor de alojamiento para desconectar el servidor del atacante en 134.209.82[.]225.
  • 2026-10-30: Anthropic publica la versión 2.1.314 de la extensión Claude Code en Open VSX y en el Microsoft VS Code Marketplace.
  • 2026-10-30: OpenSourceMalware publica su análisis técnico y sus indicadores de comprometimiento; el aviso de seguridad de Cursor, con comprobación y scripts de remediación, está en línea.

Preguntas frecuentes

¿Era malicioso el paquete npm @anthropic-ai/claude-code?

No. OpenSourceMalware comprobó el paquete npm, la extensión de Open VSX y la extensión del Microsoft VS Code Marketplace, y encontró los tres limpios. Solo la versión 2.1.313 del marketplace de Cursor llevaba el cargador, y ese número de versión nunca existió en las versiones oficiales de Anthropic.

¿Pudieron los atacantes entrar realmente por la puerta trasera?

En la mayoría de equipos, no. Cursor declara que activar el servicio SSH local requiere derechos de administrador y que errores en el código malicioso hacían fallar el paso salvo que Cursor mismo se ejecutara con privilegios de administrador. Sin un servicio SSH a la escucha, el túnel inverso no tenía nada que reenviar. La clave, la persistencia y la baliza se instalaron igualmente, y Cursor pide la remediación en todo caso.

¿Recibió alguien la versión maliciosa automáticamente?

Sí, ese es el camino más probable para la mayoría de los usuarios afectados. Jenn Gile, de OpenSourceMalware, señaló que cualquiera con Claude Code configurado para actualizarse automáticamente pudo recibir el malware, porque los marketplaces entregan las actualizaciones bajo la identidad del editor. Cursor contactará directamente a los usuarios afectados.

¿Sigue siendo accesible el atacante?

No. Cursor declara que el servidor del atacante ya no funciona: la empresa trabajó con el proveedor de nube que lo alojaba para desconectarlo, así que el túnel SSH inverso y el POST de baliza con los detalles del equipo no operan. La clave y la persistencia en un equipo afectado permanecen hasta que se eliminen.

¿Debo reconstruir un equipo afectado?

Evalúelo. OpenSourceMalware escribe que reconstruir es más seguro que suponer que eliminar los artefactos conocidos restaura la confianza, porque el túnel ofrecía al operador una ruta hacia el servicio SSH y una actividad posterior no aparecería en el artefacto estático. Como mínimo, elimine la clave y la persistencia, rote las credenciales alcanzables y revise los registros de autenticación, SSH y procesos.

¿Quién encontró y divulgó esto?

Dean Hardcastle detectó la actualización maliciosa mientras ocurría y avisó a OpenSourceMalware, cuyos investigadores Paul McCarty y Jenn Gile publicaron el análisis el 30 de octubre de 2026. Cursor publicó su propio aviso de seguridad con indicadores, una comprobación y scripts de remediación. The Hacker News informó del incidente el 30 de octubre de 2026, corrigiendo una versión inicial de su artículo que citaba a Open VSX como registro comprometido.

Referencias

  • Aviso de seguridad de Cursor, «Security notice — malicious version of Anthropic.claude-code (2.1.313) identified in the Cursor Extension Marketplace», 29 de octubre de 2026, con la ventana afectada, la cifra de 5,000 usuarios, el análisis del fallo del paso de SSH, la comprobación, los scripts de remediación y los indicadores: https://cursor.com/blog/claude-code-extension-security-notice (consultado el 30 de octubre de 2026)
  • Análisis de OpenSourceMalware, «Trojanized Claude Code Extension Plants an SSH Backdoor», 30 de octubre de 2026, con el desglose del cargador de 66 líneas, la baliza, el túnel, la persistencia y los hashes: https://opensourcemalware.com/blog/trojanized-claude-code-extension-plants-persistent-ssh-backdoor (consultado el 30 de octubre de 2026)
  • Declaración de Cursor sobre el incidente, publicada el 29 de octubre de 2026: https://x.com/cursor_ai/status/2116074289053175808 (consultado el 30 de octubre de 2026)
  • Versiones de Claude Code de Anthropic, donde la 2.1.314 se publicó el 30 de octubre de 2026 y la 2.1.313 no existe: https://github.com/anthropics/claude-code/releases (consultado el 30 de octubre de 2026)
  • The Hacker News, «Official Claude Code Extension on Cursor Marketplace Trojanized with Persistent SSH Backdoor», 30 de octubre de 2026, que reporta que el método usado para introducir la actualización sigue sin aclararse: https://thehackernews.com/2026/10/official-claude-code-vs-code-extension.html (consultado el 30 de octubre de 2026)
  • Página del paquete npm @anthropic-ai/claude-code, que muestra 12,837,062 descargas en la semana del 22 al 28 de octubre de 2026, para la escala del paquete limpio con el que la extensión comparte nombre: https://www.npmjs.com/package/@anthropic-ai/claude-code (consultado el 30 de octubre de 2026)