Los investigadores de seguridad en Phorion han identificado un compromiso significativo en el paquete de la extensión oficial Claude Code para VS Code alojado en el Cursor Marketplace. La versión maliciosa, identificada como 2.1.313, contiene una puerta trasera diseñada para establecer acceso persistente de Secure Shell (SSH) en sistemas macOS, Linux y Windows. Debido a que las extensiones de VS Code se ejecutan con los mismos permisos que el IDE y el usuario, el módulo comprometido obtiene acceso inmediato a archivos locales, código fuente y herramientas de desarrollo tan pronto como es cargado por la aplicación anfitriona.
La imagen sirve como un ancla visual para el aviso de seguridad sobre el paquete de extensión comprometido.
Este icono se relaciona con las herramientas de desarrollo y el código fuente a los que la extensión comprometida puede acceder.
La cadena de infección comienza con una expresión de función invocada inmediatamente (IIFE) inyectada y antepuesta al paquete de la extensión minificado. Este código se ejecuta antes de la lógica de activación estándar de la extensión, lo que le permite ejecutarse sin ninguna interacción del usuario. La carga útil primero modifica el archivo `~/.ssh/authorized_keys` del usuario añadiendo una clave pública Ed25519 controlada por el atacante. Luego, intenta habilitar el demonio SSH local. Aunque el malware incluye lógica para habilitar el Inicio de sesión remoto en macOS, Linux y Windows, los investigadores notaron un error de implementación específico en macOS: el script no interpreta correctamente la salida del comando `systemsetup` cuando se ejecuta sin privilegios de root, lo que puede impedir la habilitación automática de SSH en algunos sistemas.
Más allá de la configuración local, el malware establece un túnel SSH inverso a un servidor remoto (134.209.82.225). Utiliza una clave privada integrada para autenticarse y configura un reenvío de puertos que permite a un atacante conectarse a la máquina de la víctima a través de un puerto asignado dinámicamente en el servidor del atacante. Para asegurar que el túnel sobreviva a los reinicios, el script instala persistencia específica de la plataforma, como un LaunchAgent en macOS o una tarea programada en Windows. Finalmente, el script realiza reconocimiento del host, enviando el nombre del host de la víctima, la arquitectura del SO y una lista de nombres de variables de entorno —específicamente aquellas que coinciden con patrones como `KEY`, `TOKEN` o `SECRET`— a la infraestructura del atacante para identificar objetivos de alto valor para una mayor explotación.
Cursor ha retirado desde entonces la versión comprometida de su mercado y ha retirado las versiones afectadas de los registros de NPM y VS Code. Sin embargo, los investigadores de seguridad advierten que eliminar la extensión de un mercado no soluciona las máquinas que ya han sido infectadas por el paquete. Se aconseja a las organizaciones auditar sus entornos en busca de la presencia de la versión 2.1.313 y supervisar cualquier modificación no autorizada en los archivos de configuración de SSH o la creación de LaunchAgents y tareas programadas inesperadas.