Extensión comprometida de Claude Code instala una puerta trasera SSH en macOS
Phorion encontró una puerta trasera en las versiones 2.1.312 y 2.1.313 de la extensión oficial Claude Code para VS Code en el Cursor Marketplace, que instala acceso SSH persistente.
Traducido automáticamente del original en inglés.
Investigadores de seguridad de Phorion han identificado una compromiso en la cadena de suministro que afecta a la extensión oficial Claude Code for VS Code distribuida a través del Cursor Marketplace. Las versiones maliciosas, 2.1.312 y 2.1.313, inyectan una puerta trasera persistente de Secure Shell (SSH) en entornos macOS, Linux y Windows inmediatamente al cargarse.
Este incidente destaca los riesgos inherentes a los ecosistemas de herramientas para desarrolladores, donde las extensiones se ejecutan con altos privilegios y pueden modificar silenciosamente las configuraciones del sistema. Las organizaciones que utilicen estas versiones específicas deben tratar cualquier instalación como una posible brecha e iniciar procedimientos de respuesta a incidentes.
Qué ocurrió
El compromiso apunta a desarrolladores que utilizan el editor Cursor, el cual aloja su propio marketplace para extensiones compatibles con VS Code. Phorion descubrió que el paquete de las versiones 2.1.312 y 2.1.313 de Claude Code contenía una carga útil inyectada. Este código se ejecuta antes de la lógica estándar de activación de la extensión, lo que significa que los usuarios no necesitan interactuar con la herramienta para que el malware se ejecute. Cursor ha eliminado desde entonces estas versiones de su marketplace.
El objetivo principal de la carga útil es establecer un acceso interactivo a largo plazo a la máquina de la víctima. Lo logra instalando claves SSH y creando túneles inversos hacia un servidor controlado por el atacante en la dirección IP 134.209.82.225. Aunque el malware incluye lógica para todos los principales sistemas operativos de escritorio, el análisis se centra en macOS debido a detalles específicos de implementación y errores en las otras plataformas.
Dado que las extensiones operan con los permisos del entorno de desarrollo integrado (IDE) y del usuario, la puerta trasera obtiene acceso inmediato al código fuente local, archivos y herramientas de desarrollo. Este nivel de acceso permite al atacante cosechar información sensible y mantener la persistencia incluso después de cerrar el IDE.
Cómo funciona
La infección comienza con una expresión de función invocada inmediatamente (IIFE) prepuesta al archivo minificado extension.js. Este script importa módulos estándar de Node.js para manipular el sistema de archivos y ejecutar comandos de shell. Su primera acción es asegurar que exista el directorio ~/.ssh y añadir una clave pública Ed25519 controlada por el atacante al archivo authorized_keys. La clave está etiquetada con el comentario svc-telemetry, aunque los investigadores deben confiar en la huella digital de la clave en lugar del comentario para su detección.
A continuación, el script intenta habilitar el demonio SSH. En macOS, verifica el estado de Inicio de sesión remoto utilizando systemsetup -getremotelogin. Sin embargo, existe un error crítico aquí: el comando requiere privilegios de administrador para leer el estado. Cuando se ejecuta como usuario estándar, devuelve un mensaje de error en lugar de "Off", lo que hace que el script omita el paso de habilitación. Si el Inicio de sesión remoto ya estaba habilitado, la puerta trasera funciona según lo previsto; de lo contrario, la ruta de acceso entrante permanece rota hasta que un usuario la habilite manualmente.
Para mantener el acceso, el malware establece un túnel SSH inverso saliente hacia el servidor del atacante. Utiliza una clave privada incrustada, etiquetada como svc-telemetry-tun, almacenada en el directorio temporal. El túnel reenvía tráfico desde un puerto asignado dinámicamente en el servidor del atacante al puerto 22 del localhost de la víctima. Esto permite al operador conectarse de vuelta a la máquina utilizando la clave pública previamente instalada. La conexión se mantiene viva usando autossh o un bucle de reintento, asegurando la persistencia ante interrupciones de red.
Detalles clave
- Versiones afectadas: Claude Code for VS Code versiones 2.1.312 y 2.1.313 en el Cursor Marketplace.
- Infraestructura del atacante: Los comandos y balizas se envían a la dirección IP 134.209.82.225 en los puertos 22 y 8099.
- Mecanismo de persistencia: En macOS, el malware crea un LaunchAgent llamado
com.apple.sysmond.plisten~/Library/LaunchAgentspara sobrevivir a reinicios. - Datos de reconocimiento: La carga útil envía metadatos del host, incluyendo nombre de host, SO y nombres de variables de entorno que coinciden con patrones como
KEY,TOKENoAWS. - Error en macOS: El script falla al habilitar el Inicio de sesión remoto en macOS si se ejecuta sin privilegios de administrador debido a un manejo inadecuado de errores del comando
systemsetup. - Desafío de detección: El malware modifica
authorized_keysdirectamente mediante APIs de archivos de Node.js, evitando reglas de monitoreo basadas en shell que buscan comandos comoechootee.
Por qué importa
Para los equipos de ingeniería de software, este incidente subraya la vulnerabilidad de la cadena de suministro dentro de los entornos de desarrollo. Las extensiones de IDE son componentes confiables que a menudo requieren amplios permisos para funcionar eficazmente. Cuando un componente así es comprometido, proporciona una vía directa hacia los activos más sensibles de una organización: código fuente y credenciales. La capacidad del malware para exfiltrar los nombres de variables de entorno que contienen secretos permite a los atacantes priorizar objetivos de alto valor sin robar inicialmente los secretos mismos.
Además, los mecanismos de persistencia utilizados son lo suficientemente sofisticados como para sobrevivir a pasos típicos de remediación. Simplemente desinstalar la extensión no elimina la puerta trasera, ya que el malware instala servicios independientes del sistema y tareas cron. Esto significa que las acciones estándar de gestión de paquetes son insuficientes para la limpieza. Los equipos de seguridad deben entender que las herramientas de desarrollo son ahora un vector de ataque primario, requiriendo el mismo nivel de escrutinio que la infraestructura de producción.
Qué puede hacer
- Auditar extensiones instaladas: Verifique inmediatamente todas las máquinas de desarrolladores para las versiones 2.1.312 o 2.1.313 de Claude Code for VS Code y desinstálelas si se encuentran.
- Comprobar artefactos de persistencia: Busque
~/.config/.smt,~/.config/.smtky~/Library/LaunchAgents/com.apple.sysmond.plisten sistemas macOS. - Revisar configuraciones SSH: Inspeccione
~/.ssh/authorized_keysbuscando claves públicas desconocidas, específicamente aquellas con el comentariosvc-telemetryo claves Ed25519 no familiares. - Monitorear tráfico de red: Busque conexiones SSH salientes hacia 134.209.82.225 o solicitudes HTTP POST al puerto 8099 en esa misma IP.
- Analizar registros de procesos: Utilice la telemetría del Endpoint Security Framework para detectar procesos auxiliares del IDE escribiendo en archivos de configuración SSH o creando LaunchAgents.
- Rotar credenciales: Si se identifican máquinas afectadas, asuma la compromisión y rote todos los secretos, claves API y claves SSH almacenados en esos dispositivos.



