← Claude Code Hub
Oct 30, 2026 · 5 min de lectura ✦ Tip #245

Claude Code VSCode extension con malware: actualizar no soluciona el problema

La extensión de Claude Code 2.1.313 que sirvieron Cursor y Open VSX el 29 de octubre deja una clave SSH del atacante y un arranque automático que sobreviven a la actualización. Cómo comprobar en un minuto si tu máquina la recibió, y qué hacer si es así.

Actualizar la extensión de Claude Code a la 2.1.314 no limpia la máquina: la clave svc-telemetry en authorized_keys, el LaunchAgent, la tarea SysMon, la línea de crontab y la clave privada en TMPDIR se quedan

TL;DR Si usas la extensión de Claude Code en Cursor o en otro editor que instala desde Open VSX, ejecuta grep svc-telemetry ~/.ssh/authorized_keys. Si devuelve una línea, tu máquina instaló la 2.1.313 troyanizada: ejecuta el script de limpieza de Cursor y rota tus credenciales desde otro ordenador. Que hoy veas la 2.1.314 no prueba nada.

La versión 2.1.313 de anthropic.claude-code, publicada el 29 de octubre, traía un cargador malicioso dentro de su extension.js. Basta con que el editor cargue la extensión, sin escribir ningún prompt. Añade una clave SSH del atacante a tu authorized_keys, instala un arranque automático propio y envía datos de tu máquina a un servidor externo. Ese arranque vive fuera de la carpeta de la extensión, así que actualizar a la 2.1.314, o desinstalarla, no lo borra.

No la publicó Anthropic: el paquete reempaquetaba la extensión oficial bajo el nombre legítimo del publisher, y cómo llegó al registro aún no se ha aclarado.

Quién pudo recibirla

Estuvo disponible unas once horas, de 10:27 a 21:35 hora peninsular del 29 de octubre (de 2:27 a 13:35 PT). Según el canal por el que instalas la extensión:

Dónde instalas la extensión ¿Recibió la 2.1.313?
Cursor (su marketplace replica Open VSX) Sí. Cursor calcula como máximo 5.000 usuarios
VSCodium, Windsurf, Gitpod y otros editores con Open VSX Sí, si actualizaron en esa ventana
VS Code con el marketplace de Microsoft Sin pruebas de que la sirviera; hoy lista la 2.1.312 y salta a la 2.1.314
La CLI (claude en la terminal) No: la CLI nunca tuvo una 2.1.313, el changelog salta de la 2.1.312 a la 2.1.314

La extensión se actualiza sola, así que lo que veas hoy en la lista de extensiones no sirve de prueba. Lo que importa es lo que el payload dejó en disco.

Qué deja en tu máquina

Analizado por StepSecurity y Cursor en los paquetes de macOS (Apple Silicon) y Windows x64; el código también trae una rama para Linux:

Sistema Qué deja
Todos Una clave ssh-ed25519 ... svc-telemetry al final de ~/.ssh/authorized_keys, y una clave privada en $TMPDIR/.stk_ seguido de 10 caracteres hexadecimales
macOS ~/.config/.smt, ~/.config/.smtk y el LaunchAgent ~/Library/LaunchAgents/com.apple.sysmond.plist, con un nombre que imita uno de Apple
Windows %USERPROFILE%\.config\smt.cmd, la tarea programada SysMon o, si no puede crearla, sysmon.cmd en la carpeta Inicio
Linux Una línea @reboot en tu crontab que ejecuta ~/.config/.smt

Además intenta activar el servidor SSH local y abrir un túnel inverso hacia 134.209.82.225, reintentando cada 60 segundos. Activar el SSH local necesita permisos de administrador, que la extensión no tiene en la mayoría de los Mac y PC, así que en esos equipos el túnel falla. La clave, el arranque automático y el envío de datos funcionan igual. El servidor del atacante ya está fuera de línea.

Compruébalo en un minuto

En macOS o Linux, copia este bloque en una terminal. Cada línea busca una de las huellas de la tabla y no imprime nada si no la encuentra:

ls -d ~/.*/extensions/anthropic.claude-code-2.1.313-* 2>/dev/null
grep -lF svc-telemetry ~/.*/extensions/anthropic.claude-code-*/extension.js 2>/dev/null
grep -nF svc-telemetry ~/.ssh/authorized_keys 2>/dev/null
ls ~/.config/.smt ~/.config/.smtk ~/Library/LaunchAgents/com.apple.sysmond.plist "${TMPDIR:-/tmp}"/.stk_* 2>/dev/null
crontab -l 2>/dev/null | grep -F .smt
pgrep -fl '\.stk_|\.config/\.smt'

En una máquina limpia no sale nada. Esta es la salida en un home de prueba con las huellas recreadas como ficheros vacíos y una clave de ejemplo, ejecutado en Linux:

/Users/dev/.cursor/extensions/anthropic.claude-code-2.1.313-darwin-arm64
/Users/dev/.cursor/extensions/anthropic.claude-code-2.1.313-darwin-arm64/extension.js
1:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEXAMPLEonlyEXAMPLEonlyEXAMPLEonlyEXAMPLE dev@laptopssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDdvylCEJ/k2TpezcTfedrkHyFSK9IZ3vmP6vhY4Ss0P svc-telemetry
/Users/dev/.config/.smt
/Users/dev/.config/.smtk
/Users/dev/Library/LaunchAgents/com.apple.sysmond.plist
/var/folders/x7/T/.stk_3f9a1c07be

Fíjate en la tercera línea. El payload añade su clave sin un salto de línea delante, así que puede quedar pegada a tu última clave legítima en la misma línea. Si la limpias a mano, borra solo el tramo que termina en svc-telemetry, no la línea entera.

En Windows, la comprobación de Cursor en PowerShell:

$files = "$HOME\.ssh\authorized_keys", "C:\ProgramData\ssh\administrators_authorized_keys" | Where-Object { Test-Path $_ }
if ($files -and (Select-String svc-telemetry $files)) { "svc-telemetry key found" } else { "No key found; machine not impacted" }

Si aparece algo

1. Ejecuta el script de limpieza de tu sistema

Cursor publica remediate-macos.sh y remediate-windows.ps1. Quitan las carpetas de la extensión infectada (las busca por contenido, no por versión), el arranque automático, los ficheros, los procesos del túnel y la clave, y terminan con error si algo sigue ahí.

# macOS: como tu usuario, no con sudo
bash remediate-macos.sh
# Windows: cierra antes todos los editores; PowerShell como administrador
powershell -ExecutionPolicy Bypass -File .\remediate-windows.ps1

En macOS, si al terminar imprime note: something listens on localhost:22, tenías el SSH local activo (por ejemplo, Remote Login), y el túnel sí pudo exponer tu máquina. En Linux no hay script: borra la línea del crontab con crontab -e, los ficheros de la tabla y el tramo de la clave, y mata los procesos que listó pgrep.

2. Rota tus credenciales desde otro ordenador

El payload envió los nombres de tus variables de entorno que contienen KEY, TOKEN, SECRET, PASS, AWS o GCP, tu email de git y tu IP pública. No los valores, pero sí el mapa de qué buscar. Rota los tokens de GitHub, CI, nube, registros de paquetes y claves SSH que se usan desde esa máquina, desde un equipo que sepas limpio. Si el túnel llegó a conectarse, StepSecurity recomienda reinstalar el equipo.

3. Vuelve a comprobar

Vuelve a ejecutar el bloque de comprobación: tiene que terminar sin una sola línea. Si usas la extensión en VS Code, el tip del panel nativo explica en qué se diferencia de la CLI que tienes en la terminal, que no se vio afectada.

Fuentes: Aviso de seguridad de Cursor · Análisis de StepSecurity

Documentación oficial: Usar Claude Code en VS Code

¿Te ha servido? Haz que wmedia.es te salga antes en Google.

Añadir wmedia.es como fuente preferida en Google
GUÍA GRATUITA

No necesitas Opus siempre.

Modelo y effort son dos ajustes, no uno. 8 páginas con la configuración que de verdad mueve la factura, el diagnóstico en tres preguntas cuando algo falla y la escalera de precios.

  • 1. Qué es «mejor» capacidad, tiempo y dinero
  • 2. Modelo a quién mandas
  • 3. Effort cuánta cuerda le das
  • 4. Diagnóstico tres preguntas cuando algo falla
  • 5. La factura por dónde llega
¿Eres desarrollador/a Web profesional?

Te llega por email · Te unes a la newsletter Gravitas · Cancela cuando quieras

Deja de pagar de más en Claude Code
GUÍA GRATUITA

No necesitas Opus siempre.

¿Eres desarrollador/a Web profesional? · Cancela cuando quieras
Workshop para equipos

Multiplica el output de tu equipo sin sacrificar calidad: workshop AI First de 6 a 8 horas, online, sobre la plataforma Claude.

Ver el workshop

¿Usas Opus para todo? Mira cuándo no hace falta.