← Inicio

Una extensión maliciosa de Claude Code plantó una backdoor SSH en miles de máquinas de desarrolladores

Un ataque a la cadena de suministro que golpeó el corazón del desarrollo asistido por IA

En la mañana del 29 de octubre de 2026, entre las 2:27 y las 13:35 hora del Pacífico, un desarrollador que actualizaba la extensión Claude Code en Cursor IDE — o en cualquier IDE compatible con VS Code que consumiera del marketplace de Cursor — recibió una versión modificada y maliciosa de la extensión oficial. El paquete, identificado como `Anthropic.claude-code` versión 2.1.313, contenía un cargador de 66 líneas inyectado al inicio del archivo `extension.js`, que ejecutaba un script de instalación de backdoor SSH persistente antes de cargar el código legítimo de la extensión.

La extensión, con más de 40 millones de instalaciones globales, es una de las herramientas más populares para la integración de asistentes de IA en el flujo de trabajo de desarrollo. Lo que comenzó como un golpe aparentemente simple — una versión trojanizada de un plugin — rápidamente se reveló como uno de los ataques más sofisticados dirigidos al ecosistema de desarrollo asistido por IA.

Qué hacía el malware

La carga útil maliciosa, según lo detallado por Phorion en su advisory técnica y confirmado por la propia Cursor en su aviso de seguridad, ejecutaba una cadena de infección cuidadosamente orquestada. Primero, recopilaba información del sistema: nombre del host, nombre de usuario, sistema operativo, arquitectura, ruta del directorio home, directorio de trabajo, email configurado en Git y dirección IP pública. Luego enviaba esta información — junto con los nombres de hasta 40 variables de entorno que contenían palabras clave como "key", "token" o "password" — al servidor atacante en la dirección IP 134.209.82.225.

La etapa más preocupante era la instalación del backdoor SSH. El código añadía una clave SSH controlada por el atacante al archivo `~/.ssh/authorized_keys`, etiquetándola con el comentario `svc-telemetry`. Luego intentaba habilitar el servicio SSH local y abrir un túnel SSH reverso hacia el servidor del atacante. El malware instalaba persistencia en las tres plataformas: en macOS, creaba un LaunchAgent en `~/Library/LaunchAgents/com.apple.sysmond.plist`; en Linux, escribía un script shell en `~/.config/.smt` y añadía una entrada `@reboot` al crontab del usuario; en Windows, intentaba crear una tarea programada llamada `SysMon` y recurría a la carpeta Startup si el primer método fallaba.

Por qué los atacantes no pudieron acceder a miles de máquinas

A pesar de la sofisticación del ataque, un detalle técnico importante impidió que los atacantes alcanzaran acceso remoto efectivo en la mayoría de las máquinas comprometidas: el código del malware contenía un error crítico al intentar habilitar el servicio SSH local. En casi todas las instalaciones de macOS y Windows, la activación del servicio SSH requiere privilegios de administrador. Como la extensión maliciosa no tenía derechos administrativos, este paso fallaba silenciosamente — y, consecuentemente, el túnel reverso nunca se establecía.

Esto significa que, aunque el malware hubiera instalado la clave SSH y los mecanismos de persistencia, los atacantes probablemente no pudieron conectarse efectivamente a las máquinas afectadas. La excepción serían los entornos Linux, donde muchos desarrolladores ejecutan IDEs con privilegios de root o tienen Remote Login habilitado por defecto, pero incluso en ese caso el error de verificación de privilegios puede haber impedido la conexión.

Phorion, que detectó la amenaza a través de sus herramientas de detección comportamental, describió la situación como un caso raro de malware que "sabe" que falló pero continúa ejecutando todos los demás pasos — enviando datos, instalando persistencia, pero incapaz de abrir el túnel de acceso. El servidor atacante fue llevado fuera de línea por la proveedora de hosting involucrada, cerrando cualquier posibilidad remota de conexión.

El impacto real: datos recolectados, no máquinas invadidas

El verdadero daño del incidente reside en los datos recopilados y las marcas dejadas en las máquinas. Incluso sin acceso remoto, los atacantes obtenían información que podría combinarse con otras fuentes para reconstruir el perfil de un desarrollador: nombre de usuario, email de Git, entorno de trabajo, variables de entorno que contenían tokens y claves de API. La propia Cursor confirmó que hasta 5.000 usuarios fueron impactados en su plataforma, pero la extensión también estaba disponible en Open VSX — el registro de extensiones open source utilizado por VS Codium y otros forks — ampliando potencialmente el alcance.

La pregunta sin respuesta es cuánto tiempo una versión modificada de la extensión oficial del Claude Code de Anthropic permaneció en el marketplace de Cursor y cuál fue el alcance exacto de la recolección de datos. Cursor dijo que el paquete malicioso existió por unas 11 horas, pero la extensión con auto-update pudo haber sido descargada por usuarios que no actualizaron durante la ventana exacta del compromiso, sino semanas después.

La respuesta y las preguntas sin respuesta

La respuesta de Cursor fue inmediata: eliminar la versión maliciosa, apagar el marketplace por precaución, girar sus claves, reconstruir el marketplace y publicarlo nuevamente. Anthropic publicó la versión 2.1.314 tanto en Open VSX como en el Microsoft VS Code Marketplace. Sin embargo, la respuesta fue criticada por dos motivos.

Primero, Cursor afirmó que la versión maliciosa "no fue desarrollada por Anthropic", lo que, aunque técnicamente cierto, puede ser engañosamente vago. El paquete fue cargado bajo la cuenta verificada de Anthropic, con el mismo ID de extensión `anthropic.claude-code`, y distribuido por los mismos canales oficiales — lo que significa que, para el usuario, la línea entre "hecho por Anthropic" y "distribuido por Anthropic" es prácticamente inexistente.

Segundo, investigadores como Kevin Beaumont, de DoublePulsar, observaron que las versiones de reemplazo publicadas por Anthropic no eliminan las backdoors y los mecanismos de persistencia ya instalados. Esto significa que los desarrolladores que instalaron la versión 2.1.313 durante la ventana de compromiso necesitan ejecutar manualmente scripts de remediación y verificar sus sistemas — el auto-update no resuelve el problema, solo impide que se propague a nuevos usuarios.

Las preguntas sin respuesta son tan preocupantes como los hechos confirmados: ¿cómo exactamente los atacantes lograron publicar una versión modificada bajo la cuenta verificada de Anthropic? ¿Fue comprometido el sistema de publicación de Cursor, o la propia cuenta de Anthropic? ¿Y qué revela el ataque sobre la fragilidad del modelo de confianza que sustenta el ecosistema de extensiones de IDE en la era de la IA?

Lo que es cierto es que la cadena de suministro de software — ya vulnerable por naturaleza — ha ganado una nueva capa de complejidad cuando las herramientas de IA se distribuyen a través de los mismos canales que cualquier otro plugin. La próxima extensión maliciosa puede no cometer el mismo error al habilitar SSH. Y la próxima vez, puede ser peor.

Fuentes: Wired, Cursor, The Hacker News

✓ Fuentes independientes cruzadas y verificadas antes de la publicación