Las versiones 2.1.312 y 2.1.313 de la extensión oficial de Claude Code para Visual Studio Code, descargadas desde el Cursor Marketplace en macOS y Windows, contenían código inyectado antes incluso de la activación de la extensión. El proveedor de seguridad Phorion publicó el 30 de octubre un aviso detallado, actualizado al día siguiente tras la confirmación de Cursor, que retiró ambas versiones de su marketplace.
Un código que se ejecutaba antes de la activación
Según Phorion, el archivo extension.js incluía un prefijo inyectado que se ejecutaba en cuanto Node lo cargaba, antes del callback activate previsto por la API de extensiones de VS Code. No hacía falta ninguna interacción adicional de la víctima más allá de instalar el paquete comprometido.
Una cadena de cuatro etapas
El aviso describe una cadena de compromiso pensada para sobrevivir a un simple reinicio.
| Etapa | Acción | Detalle técnico |
|---|---|---|
| 1 | Acceso remoto | Clave pública Ed25519 (comentario svc-telemetry) añadida a ~/.ssh/authorized_keys, con intento de activar SSH |
| 2 | Túnel saliente | Conexión SSH inversa hacia 134.209.82.225 con una clave privada incrustada, opción -R *:0:localhost:22 |
| 3 | Persistencia | LaunchAgent com.apple.sysmond en macOS, entrada cron @reboot en Linux, tarea programada «SysMon» en Windows |
| 4 | Reconocimiento | Baliza HTTP en claro al puerto 8099 con nombre de host, usuario, sistema operativo, IP pública y los nombres (no los valores) de variables de entorno asociadas a credenciales |
Un detalle limita el impacto en macOS: el comando systemsetup -getremotelogin devuelve un código de salida cero incluso ante un error de permisos, lo que engaña al script y le hace omitir la activación real del acceso remoto en los equipos donde no estaba ya encendido. La clave plantada y la persistencia quedan igualmente instaladas.
Desinstalar la extensión no basta para eliminar la puerta trasera: las claves, el túnel y la tarea de persistencia sobreviven a la eliminación del paquete.
Instalaciones afectadas: extensión Claude Code para VS Code, versiones 2.1.312 y 2.1.313, instaladas a través del Cursor Marketplace en macOS o Windows. El aviso de Phorion no menciona el Visual Studio Marketplace propio de Microsoft.
Limpieza recomendada
Phorion detalla un procedimiento de remediación en varios pasos, a ejecutar tras aislar de la red el equipo sospechoso:
# Cortar el tunel y cualquier proceso ssh/autossh sospechoso
pkill -f "134.209.82.225"
# macOS: eliminar la persistencia
launchctl unload ~/Library/LaunchAgents/com.apple.sysmond.plist
rm -f ~/Library/LaunchAgents/com.apple.sysmond.plist
rm -f ~/.config/.smt ~/.config/.smtk /tmp/.stk_*
# Eliminar la clave plantada
sed -i '/svc-telemetry/d' ~/.ssh/authorized_keys
# Comprobar que el acceso remoto no se activo sin querer
sudo systemsetup -getremotelogin
Rotar las credenciales accesibles desde la cuenta afectada completa el procedimiento. Las huellas SHA-256 del archivo comprometido y de las claves plantadas figuran en el aviso original, útiles para rastrear indicadores de compromiso en un parque de equipos.
Una cadena de suministro bajo presión
El incidente se suma a una serie de alertas recientes sobre la distribución de extensiones y paquetes para herramientas de desarrollo asistidas por IA. GitHub, por ejemplo, abrió en vista previa pública un cortafuegos de paquetes npm para filtrar dependencias sospechosas antes de su instalación. La pregunta de fondo es siempre la misma: la confianza por defecto en un marketplace de extensiones, ya pertenezca a un editor consolidado o a un fork más reciente como Cursor, depende de controles de publicación que siguen siendo desiguales de un registro a otro.
Para los equipos que equipan sus puestos de desarrollo con una selección de utilidades de línea de comandos, el episodio recuerda el interés de limitar las fuentes de instalación y verificar las huellas publicadas por los editores antes de una actualización automática.
Lo que hay que recordar
Dos versiones de la extensión Claude Code distribuidas por el Cursor Marketplace contenían una puerta trasera completa: acceso SSH remoto, túnel hacia un servidor de mando, persistencia multiplataforma y reconocimiento del equipo. Cursor retiró los paquetes, pero desinstalar no basta: el procedimiento de limpieza y la rotación de credenciales expuestas siguen siendo necesarios en cualquier equipo que haya instalado alguna de las dos versiones afectadas.
Este tipo de incidente ya no sorprende a nadie en el ecosistema de extensiones para IDE, pero cada caso merece tomarse en serio: los editores de extensiones para asistentes de código manejan equipos de desarrollo cargados de credenciales, lo que los convierte en objetivos prioritarios. Verificar las huellas publicadas antes de una actualización, incluso de un editor de confianza, cuesta unos minutos y puede evitar el compromiso total del equipo — Simon Janvier.
Para profundizar: el aviso completo publicado por Phorion, con los indicadores de compromiso y la cronología detallada.
