El 29 de octubre de 2026, durante unas 11 horas (desde las 17:27 hasta las 04:35 del día siguiente, hora de Pekín), la extensión oficial de Claude Code en el marketplace de Cursor fue sustituida por una versión maliciosa con una puerta trasera SSH. Las versiones afectadas fueron la 2.1.312 y la 2.1.313, en macOS arm64 y Windows x64. Según Cursor, hasta unos 5.000 usuarios la descargaron o recibieron una actualización automática.
No se trató de un plugin falso que se coló en el marketplace. El paquete que instalaron los usuarios tenía el nombre oficial Anthropic.claude-code, y tanto la interfaz como las funciones parecían las de siempre. Por eso, muchas personas ni siquiera saben que lo instalaron. Y por la misma razón, desinstalar la extensión o actualizarla no basta. El código malicioso añadió una clave pública SSH, configuró un script persistente para ejecutarse al iniciar el equipo y envió información del host al atacante. Para completar la limpieza hay que hacer tres cosas: eliminar la clave, eliminar el mecanismo de persistencia y rotar las credenciales.
Qué encontrarás aquí: el artículo se divide en 5 pasos, siguiendo el orden «qué vas a ver → qué hacer → cómo comprobar que funcionó». Si eres desarrollador y no te especializas en seguridad, puedes seguirlos para revisar y limpiar tu equipo en aproximadamente media hora, incluida la rotación de tu clave APIYI.

Pie de imagen: La ventana maliciosa duró unas 11 horas; la 2.1.314 fue la primera versión limpia después del incidente.
Primero, sin pánico: qué pasó con la extensión comprometida de Claude Code
Empecemos por los hechos. Toda la información de la siguiente tabla proviene del aviso de seguridad de Cursor y de las respuestas públicas de empleados de Anthropic.
| Aspecto | Hechos |
|---|---|
| Incidente | La extensión Anthropic.claude-code del marketplace de Cursor fue manipulada para incorporar una puerta trasera SSH persistente |
| Versiones afectadas | 2.1.312 y 2.1.313 (Cursor añadió la 2.1.312 al actualizar el aviso el 30 de octubre) |
| Plataformas | macOS (darwin-arm64) y Windows (win32-x64); el código también incluye una rama para Linux |
| Ventana de exposición | 29/10, 02:27–13:35, hora del Pacífico; equivalente al 29/10, 17:27 – 30/10, 04:35, hora de Pekín |
| Alcance | Según Cursor, hasta 5.000 usuarios; es una estimación de exposición, no una cifra de infecciones confirmadas |
| Estado actual | Las versiones maliciosas fueron retiradas; el marketplace volvió a estar disponible después de cerrarse, reconstruirse y auditarse; Cursor afirma que el proveedor de alojamiento desactivó el servidor del atacante |
| Versiones limpias | La 2.1.314 fue la primera versión limpia; al 31 de octubre, la más reciente era la 2.1.316 |
Pie de imagen: captura del aviso de seguridad de Cursor (se añadirá durante la edición).
Cuando salió a la luz el incidente, circularon algunas versiones incorrectas de lo ocurrido. Conviene aclarar tres puntos:
- La versión 2.1.312 también está en la lista de afectadas. Cursor inicialmente solo mencionó la 2.1.313 y después añadió la 2.1.312. Si instalaste la 2.1.312 desde el marketplace de Cursor durante la ventana de exposición, también debes revisar tu equipo.
- Solo se comprometió Cursor Marketplace. Algunos informes iniciales afirmaban que Open VSX, el marketplace de Microsoft y npm también estaban afectados, pero esas afirmaciones ya se corrigieron. Socket auditó los registros de cambios del repositorio y no encontró constancia de que la versión 2.1.313 se hubiera publicado o eliminado.
- La 2.1.313 nunca se publicó en los canales oficiales de Anthropic. David Dworken, ingeniero de seguridad de Anthropic, afirmó que esta versión nunca apareció en Open VSX, el marketplace oficial de VS Code ni en ningún servidor oficial de Anthropic. Para evitar confusiones con la numeración, la siguiente versión oficial pasó directamente a la 2.1.314.
Por ahora no se sabe quién lo hizo ni cómo obtuvo permisos de publicación. Felix Rieseberg, de Anthropic, afirmó que no se comprometieron los sistemas de Anthropic ni las computadoras de sus empleados, sino que alguien aprovechó el acceso al marketplace de Cursor para publicar la versión manipulada. El aviso de Cursor, por su parte, no explica cómo obtuvo el atacante los permisos de publicación. Cursor había abierto las publicaciones del Marketplace al público en octubre, pero no hay ninguna declaración oficial que relacione ese cambio con el ataque, así que aquí tampoco vamos a especular. Para los desarrolladores, antes que adivinar la causa, lo mejor es revisar sus equipos.
Por qué incluso la extensión oficial de Claude Code puede verse comprometida
La primera reacción de muchas personas es: ¿cómo puede ser malicioso un paquete con el nombre oficial? Para entenderlo, primero hay que saber cómo funcionan las extensiones de un IDE. Una extensión se ejecuta con los permisos del IDE y puede leer y modificar tu código, las variables de entorno y los archivos de tu directorio de usuario. Además, ejecuta código en cuanto se carga: no necesitas abrir ningún cuadro de diálogo ni usarla activamente.
El análisis de Phorion muestra que el código malicioso era una función de ejecución inmediata (IIFE) de 66 líneas, insertada al principio del archivo extension.js, antes del código normal de la extensión. En cuanto Node cargaba el módulo, el código se ejecutaba, incluso antes del callback habitual activate. El archivo extension.js manipulado tenía un tamaño de 3.692.922 bytes, unos 7 KB más que la versión limpia anterior. No dependía del hook postinstall de npm, así que no se trataba de un paquete npm comprometido: el código se había modificado directamente dentro del paquete de instalación VSIX.
Una analogía ayuda a entenderlo: no es como si alguien hubiera colado un medicamento falso en una farmacia, sino como si hubiera sustituido una caja de una marca legítima en el estante oficial por otra adulterada. El nombre, el envase y el código de barras son auténticos; lo único que no corresponde es el medicamento de dentro. Por eso, en este caso no bastaba con la recomendación habitual de «comprobar que el editor sea oficial».

Pie de imagen: La cadena de la puerta trasera consta de seis pasos; desinstalar la extensión solo detiene el primero.
Hay tres malentendidos frecuentes sobre este incidente:
- «El nombre oficial del paquete garantiza que sea una compilación oficial»: en este caso, tanto el nombre del paquete como la identidad del editor eran oficiales, pero Anthropic no había creado esa compilación. En Open VSX también hay una versión 2.1.312 limpia, publicada el 27 de octubre. Mismo número de versión, pero distinto origen y distinto nivel de seguridad.
- «Solo está comprometida la versión 2.1.313»: la versión 2.1.312 del marketplace de Cursor también era maliciosa.
- «Con desinstalar o actualizar basta»: el aviso de Cursor señala que desinstalar la extensión podría no ser suficiente, porque la carga maliciosa deja scripts de persistencia que se ejecutan de forma independiente.
Comprueba y elimina la puerta trasera de la extensión Claude Code en 5 pasos
Sigue estos 5 pasos en orden. Los tres primeros son de comprobación, el cuarto es de limpieza y el quinto sirve para cerrar el proceso. En cada paso se indica qué hacer y cómo saber si está completado.

Pie de imagen: proceso en 5 pasos; no omitas la rotación de credenciales del quinto paso.
① Revisa la versión y el origen de la extensión. Abre el panel de extensiones de Cursor, busca Claude Code y comprueba el número de versión y el editor. Después, revisa en la terminal el directorio ~/.cursor/extensions/ (en Windows, %USERPROFILE%\.cursor\extensions\) para ver si hay carpetas cuyo nombre incluya anthropic.claude-code-2.1.312 o 2.1.313. Aunque ahora tengas una versión más reciente, los restos de directorios antiguos indican que podrías haber instalado una versión afectada durante el periodo de exposición.
② Busca la clave pública svc-telemetry. En macOS y Linux, ejecuta grep -n svc-telemetry ~/.ssh/authorized_keys. En Windows, revisa tanto %USERPROFILE%\.ssh\authorized_keys como C:\ProgramData\ssh\administrators_authorized_keys. El código malicioso comprueba si la cadena svc-telemetry aparece en el archivo, así que revisar solo los comentarios no es suficiente. También conviene ejecutar ssh-keygen -lf ~/.ssh/authorized_keys para listar todas las huellas de las claves públicas y compararlas una por una con la huella del atacante: SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk.
③ Busca mecanismos de persistencia y procesos de túnel. Los lugares que debes revisar dependen del sistema:
- macOS:
~/Library/LaunchAgents/com.apple.sysmond.plist,~/.config/.smt,~/.config/.smtky los archivos.stk_*del directorio temporal. El nombre de este LaunchAgent imita un componente del sistema de Apple, pero en realidad es un elemento de inicio a nivel de usuario. - Windows: ejecuta
schtasks /query /tn SysMonpara buscar la tarea programada; revisasysmon.cmden la carpeta de inicio, así como%USERPROFILE%\.config\smt.cmdy%TEMP%\.stk_*. - Linux: ejecuta
crontab -ly busca entradas que incluyan@rebooty apunten a~/.config/.smt. - Todas las plataformas: comprueba si hay procesos
sshoautosshcuyos argumentos incluyan-R '*:0:localhost:22'.
| Paso | Qué hacer | Criterio de verificación |
|---|---|---|
| ① Origen de la extensión | Revisar el panel de extensiones y ~/.cursor/extensions/ |
No hay directorios de las versiones 2.1.312 / 2.1.313 y la versión actual es ≥ 2.1.314 |
| ② Clave pública | Buscar svc-telemetry y comparar las huellas |
No hay coincidencias en ninguno de los dos tipos de archivo authorized_keys |
| ③ Persistencia | Revisar plist / SysMon / cron / procesos de túnel | Los archivos no existen y no hay procesos ssh con el parámetro -R |
| ④ Eliminación | Ejecutar el script oficial de Cursor y actualizar | El script termina con código de salida 0 y las comprobaciones ①②③ no arrojan resultados |
| ⑤ Credenciales | Rotar las credenciales de Git, CI, nube y SSH, y las claves API | Las credenciales antiguas están desactivadas y los registros de llamadas no muestran anomalías |
④ Si estás afectado, ejecuta el script oficial de limpieza. Si se cumple cualquiera de las condiciones de ② o ③, sigue las instrucciones del aviso de Cursor. Si usas macOS, descarga cursor.com/static/security/claude-code-extension/remediate-macos.sh y ejecuta bash remediate-macos.sh con la cuenta del usuario afectado, no como root. Si usas Windows, descarga remediate-windows.ps1, abre PowerShell con la opción «Ejecutar como administrador» y ejecuta powershell -ExecutionPolicy Bypass -File .\remediate-windows.ps1. Descarga los scripts solo del sitio oficial de Cursor y evita las herramientas de «limpieza en un clic» de origen desconocido. El script elimina la extensión maliciosa, los mecanismos de persistencia, los procesos de túnel y la clave pública del atacante; si quedan restos, finaliza con un código de salida distinto de 0. Tras la limpieza, actualiza la extensión a una versión posterior a la 2.1.314. Al 31 de octubre, puedes instalar directamente la 2.1.316.
⑤ Rota las credenciales. Debes rotar los tokens de GitHub y GitLab, los tokens de CI/CD, las claves de acceso de proveedores de nube, las claves privadas SSH, los tokens de npm y PyPI, y la clave API de APIYI apiyi.com que hayas configurado en esa máquina. Hazlo desde una máquina de confianza. Si los registros de SSH indican que el túnel se utilizó, Phorion recomienda reconstruir el host: es más seguro que limpiar cada elemento por separado.
Por qué debes revisar la puerta trasera de Claude Code, aunque la mayoría de los equipos no sufrieron accesos
Primero, una noticia relativamente buena. Según el análisis de Phorion, el propio código malicioso tenía errores que impidieron activar el servicio SSH en la mayoría de los equipos.
En macOS, el script ejecutaba systemsetup -getremotelogin con permisos de usuario normal. La respuesta indicaba que se necesitaban permisos de administrador, pero el código de salida seguía siendo 0. El script solo comprobaba si la salida contenía Off. Como el aviso no incluía esa palabra, interpretaba que el inicio de sesión remoto ya estaba activado y omitía el paso de activar SSH. En Windows, el comando de PowerShell para instalar OpenSSH Server se pasaba a una función auxiliar que tenía /bin/sh definido de forma fija. Como una instalación estándar de Windows no tiene /bin/sh, lo más probable es que ese paso fallara. Cursor también señala que la activación del servicio SSH y la creación del túnel fallarían salvo que Cursor se hubiera iniciado con permisos de administrador, algo poco habitual.
Pero eso no significa que no haya riesgo. La clave pública, el script de persistencia y la baliza de reconocimiento ya quedaron en el equipo. Por poner una analogía: la herramienta del atacante para forzar la cerradura estaba defectuosa y muchas puertas no se abrieron; pero la llave ya está metida en la cerradura y volverá a intentarlo cada 60 segundos.
| Categoría | Indicador (IOC, desactivado con defang) | Descripción |
|---|---|---|
| Red | 134[.]209[.]82[.]225:22, usuario tunnel |
Destino del túnel SSH inverso |
| Red | 134[.]209[.]82[.]225:8099/beacon |
Baliza HTTP en texto plano que envía información del equipo |
| Clave pública | Comentario svc-telemetry |
Se añade a authorized_keys |
| Huella | SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk |
Huella de la clave pública del atacante |
| Clave privada del túnel | SHA256:KOAU57+ZG6u3MG4WwzPzPX2O5YEe9qdOC1Bl+6MVyDQ |
Archivo .stk_* creado en el directorio temporal |
| Archivo | SHA-256 de extension.js comienza por ecb58cb2 |
Archivo principal de la extensión maliciosa; el valor completo está en el aviso de Cursor |
Pie de imagen: captura de la tabla de hashes de los VSIX maliciosos (se añadirá durante la edición).
Presta especial atención a estas situaciones:
- Remote Login ya estaba activado. Si tenías activado el inicio de sesión remoto en «Configuración del Sistema → General → Compartir» en tu Mac, o si
Get-Service sshdmuestra que el servicio está en ejecución en Windows, la puerta trasera podría funcionar. - Que el servidor esté fuera de servicio no significa que el equipo esté limpio. El servidor del atacante está inactivo por ahora, pero el script de persistencia sigue intentando conectarse. Si no se elimina, el equipo seguirá siendo vulnerable.
- Revisa los registros de inicio de sesión SSH. En macOS puedes ejecutar
log show --predicate 'process == "sshd"' --last 7d; en Linux, revisa/var/log/auth.log; y en Windows, consulta los registros de OpenSSH/Operational en el Visor de eventos. Busca especialmente autenticaciones correctas desde127.0.0.1o::1con la clave pública svc-telemetry. Si aparece aunque sea una, trata el equipo como comprometido y considera reconstruirlo.
El código malicioso también recopilaba el nombre del equipo, el nombre de usuario, información del sistema, el directorio de trabajo, el correo global de Git, la IP pública y los nombres de hasta 40 variables de entorno. La conclusión de Phorion es clara: los errores redujeron la probabilidad de acceso, pero no deben considerarse una medida de protección.
¿Hay que cambiar la clave de APIYI tras el ataque a la extensión de Claude Code?
Sí. El código malicioso recopilaba los nombres de las variables de entorno que coincidían con KEY, TOKEN, SECRET, PASS, AWS o GCP. Aunque no leía directamente sus valores, el atacante ya sabe qué credenciales hay en tu máquina. En cuanto el túnel estuviera disponible, podría leer de forma interactiva los valores de las variables de entorno, los archivos de configuración y el historial de shell. Por eso, si esta máquina tuvo instalada la versión 2.1.312 o 2.1.313 durante el periodo de exposición, debes tratar la clave de APIYI apiyi.com configurada en ella como «posiblemente expuesta».
Una aclaración: APIYI no ha sufrido una intrusión. El riesgo indirecto es que alguien haya podido leer la clave en tu propia máquina. Por tanto, hay que rotarla, pero no hace falta alarmarse. Estos son los pasos:
| Paso | Acción | Comprobación |
|---|---|---|
| 1 | Abre la página de tokens de la consola: api.apiyi.com/token |
Puedes ver la lista de claves existentes |
| 2 | Haz clic en «Añadir» en la esquina superior derecha y selecciona el grupo ClaudeCode para la clave que usarás con Claude Code |
Se genera una nueva clave que empieza por sk- |
| 3 | Cambia ANTHROPIC_AUTH_TOKEN por la nueva clave y mantén ANTHROPIC_BASE_URL como https://api.apiyi.com |
Actualiza también la sección env de ~/.claude/settings.json |
| 4 | Vuelve a abrir la terminal y reinicia Claude Code | Puedes conversar y hacer invocaciones con normalidad |
| 5 | Regresa a la página de tokens y desactiva o elimina la clave antigua | La clave antigua aparece como desactivada |
| 6 | Revisa los registros de llamadas | No hay consumo de modelos inusuales ni en horarios sospechosos |
Si tus scripts usan la interfaz compatible con OpenAI, recuerda cambiar también la clave que corresponde a base_url="https://api.apiyi.com/v1" en el código. Después, envía una solicitud de prueba con la nueva clave para confirmar que funciona. Si la clave antigua todavía se usa en otras máquinas o proyectos, sustitúyela en cada uno; no basta con cambiarla en una sola máquina.
🎯 Buena práctica: la página de tokens de APIYI apiyi.com permite establecer un límite de saldo y una fecha de caducidad para cada clave. Conviene usar una clave por máquina y separar las de desarrollo de las de producción. Así, si vuelve a ocurrir algo parecido, solo tendrás que desactivar la clave afectada.
Por último, conviene insistir: no solo hay que rotar la clave de APIYI. También debes rotar los tokens de GitHub / GitLab, las claves de CI, las Access Keys de proveedores de nube, las claves privadas SSH y los tokens de npm / PyPI. Hazlo desde una máquina de confianza.
Preguntas frecuentes sobre la extensión de Claude Code comprometida
P1: ¿Me afecta si solo uso el marketplace oficial de VS Code?
Por ahora no hay pruebas de que así sea. La única fuente de distribución verificable es Cursor Marketplace; la versión maliciosa 2.1.313 no aparece ni en el marketplace de Microsoft ni en Open VSX.
P2: ¿Me afecta si solo uso Claude Code CLI y no la extensión para el IDE?
Este incidente no te afecta. El paquete CLI de npm no fue comprometido; solo se vio afectada la extensión VSIX del marketplace de Cursor.
P3: ¿Me afecta si uso Cursor, pero no tengo instalada la extensión de Claude Code?
No. El código malicioso solo se ejecuta cuando se carga esa extensión. Si no estás seguro, busca `svc-telemetry` como se indica en el paso ②; podrás comprobarlo en unos segundos.
P4: ¿Estoy a salvo si actualizo a la versión 2.1.314?
La actualización solo evita que vuelvas a exponerte. La clave pública, los scripts de persistencia y la información filtrada no desaparecen al actualizar, así que todavía debes seguir los pasos ②③④⑤.
P5: ¿Debería instalar ahora la versión 2.1.316?
Sí. Al 31 de octubre, la 2.1.316 es la versión más reciente en GitHub Releases, y tanto la 2.1.314 como la 2.1.316 están limpias. Es normal que no haya una versión 2.1.315 entre ellas.
P6: ¿Necesito reinstalar el sistema?
Si solo se detectó la clave pública o algún mecanismo de persistencia, normalmente basta con ejecutar el script oficial y completar la revisión posterior. Si los registros SSH muestran que el túnel se utilizó, Phorion recomienda reconstruir el equipo, ya que la muestra no permite saber qué hizo el atacante después de iniciar sesión.
P7: ¿Las 5.000 personas son casos confirmados?
No. Cursor habló de «hasta 5.000 usuarios»: es una estimación de la exposición por descargas y actualizaciones automáticas, no una cifra de infecciones confirmadas. Cursor indicó que contactará directamente con los usuarios afectados.
P8: ¿Podrían controlar mi equipo de forma remota?
Debido al error mencionado anteriormente, el servicio SSH no se activó en la mayoría de los equipos con macOS y Windows, y el servidor del atacante ya está fuera de línea. Pero si ya tenías activado el acceso remoto, el riesgo es real. Consulta los registros SSH para comprobar si alguien inició sesión.
P9: ¿Podría filtrarse mi clave API de APIYI?
La plataforma APIYI no fue comprometida. El riesgo es que alguien haya podido leer las variables de entorno de tu equipo. Por eso, se recomienda crear una nueva clave en api.apiyi.com/token, actualizar la configuración y después desactivar la clave anterior.
Puntos clave del ataque a la extensión de Claude Code
- Versiones afectadas: 2.1.312 y 2.1.313 del marketplace de Cursor. Los demás canales oficiales no se vieron afectados.
- Se ejecuta al cargarla: no hace falta usar la extensión; basta con que se cargue para que se instale la puerta trasera.
- Tres rastros: la clave pública en
authorized_keys, el script de persistencia y la información enviada por el beacon. - En la mayoría de los casos no se produjo un inicio de sesión: debido a un error en el código malicioso, pero eso no es motivo para dejar de revisar los sistemas.
- Cómo eliminarla: ejecuta el script oficial, actualiza a la versión 2.1.314 o posterior y, si es necesario, reconstruye el host.
- Último paso: credenciales: rota las credenciales de Git, CI, nube y SSH, así como la clave de APIYI.
Referencias
- Aviso de seguridad de Cursor: versiones afectadas, indicadores de compromiso (IOC) y script de limpieza
- Enlace:
cursor.com/blog/claude-code-extension-security-notice - Análisis técnico de Phorion: análisis del código malicioso y del error
- Enlace:
phorion.io/blog/offical-claude-code-vsx-compromise - Análisis de StepSecurity: comprobación del registro y las versiones
- Enlace:
stepsecurity.io/blog/claude-code-extension-trojanized - Claude Code GitHub Releases: registro oficial de versiones
- Enlace:
github.com/anthropics/claude-code/releases
Resumen
Lo particular de este incidente es que la versión maliciosa usaba el nombre del paquete oficial, así que comprobar que el editor fuera el oficial no bastaba. El orden recomendado es: revisar primero la versión y el origen de la extensión; después, buscar claves públicas y mecanismos de persistencia; si se detecta alguno, ejecutar el script oficial; y, por último, rotar todas las credenciales desde una máquina de confianza. Los usuarios de APIYI pueden aprovechar para reorganizar los grupos, límites y períodos de validez de sus claves con el criterio de «una clave por máquina». Para consultar la configuración, pueden revisar la documentación de gestión de tokens de APIYI en apiyi.com.
Autor: Equipo técnico de APIYI
Intercambio técnico: Puedes contactarnos desde la página principal del sitio oficial de APIYI. Para configurar la integración con Claude Code, consulta el centro de documentación en docs.apiyi.com.
Esta vez no basta con cambiar de versión: lo que queda por resolver son las claves, la persistencia y las credenciales.
