En resumen: según los análisis del 30 de octubre de OpenSourceMalware y Phorion, la extensión Claude Code for VS Code publicada en Open VSX como anthropic.claude-code@2.1.313 contenía una puerta trasera. Deja en tu máquina una clave SSH del atacante, un túnel inverso a 134.209.82.225 y persistencia al arrancar. Según Phorion, Anthropic retiró la 2.1.313 de Open VSX, npm y VS Code Marketplace; según Sesame Disk, la versión actual en Open VSX es la 2.1.314.
Desinstalar la extensión no elimina la puerta trasera. Si usas Cursor, VSCodium, Windsurf u otro editor que instala extensiones desde Open VSX, y hoy instalaste o actualizaste automáticamente la extensión de Claude Code, sigue los 5 pasos de abajo.
Ejecutamos todos los comandos de revisión en una máquina Linux: el conjunto terminó en menos de 1 segundo con salida normal. No instalamos la versión maliciosa en ninguna máquina.
Qué pasó
Según OpenSourceMalware:
- La versión maliciosa se identifica como
anthropic.claude-code2.1.313. Al desempaquetarla es igual a la versión normal y trae el binario oficial. Solo cambiaextension.js: una función autoejecutable de 66 líneas va delante del código real de la extensión. - No hace falta iniciar una conversación con Claude: basta con que el editor cargue el módulo. El paquete no tiene scripts install ni postinstall; se activa en tiempo de ejecución.
- Casi todas las excepciones se silencian, así que la extensión sigue funcionando sin señales visibles.
Según RuntimeWire, el investigador Adnan Khan (@adnanthekhan) fue el primero en señalarlo públicamente en X. Ver también la publicación de @mattjay en X.
Qué hace la puerta trasera
Según OpenSourceMalware y Phorion, el cargador:
- Añade una clave: crea
~/.sshy agrega a~/.ssh/authorized_keysuna clave pública Ed25519 con el comentariosvc-telemetryy la huellaSHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk. Quien tenga la clave privada correspondiente puede entrar como tú. - Intenta activar SSH: en Linux con
systemctly alternativas; en macOS consudo -n systemsetup -setremotelogin on; en Windows instalando e iniciando OpenSSH Server con PowerShell. - Túnel inverso: escribe una segunda clave privada incrustada (comentario
svc-telemetry-tun) en un archivo.stk_*del directorio temporal y se conecta como usuariotunnela134.209.82.225:22con-R '*:0:localhost:22', reintentando cada 60 segundos y usandoautosshsi existe. - Persistencia: en macOS escribe
~/.config/.smt,~/.config/.smtky~/Library/LaunchAgents/com.apple.sysmond.plist(parece de Apple, pero no lo es); en Linux, los mismos dos archivos y una línea@rebooten crontab; en Windows,.config\smt.cmd,.config\smtk, una tarea programadaSysMono, si falla,sysmon.cmden la carpeta Inicio. - Baliza: a los 1,5 segundos envía por HTTP sin cifrar a
134.209.82.225:8099/beaconel nombre del equipo, usuario, sistema, arquitectura, directorios, correo de Git y hasta 40 nombres de variables de entorno con KEY/TOKEN/SECRET/PASS/AWS/GCP. Según ambos análisis, se envían los nombres, no los valores.
Según Phorion, hay un fallo en macOS: como usuario estándar, systemsetup -getremotelogin nunca devuelve Off, así que el script no activa el Inicio de sesión remoto. La clave y la persistencia se escriben igualmente, y la puerta trasera funciona en cuanto el Inicio de sesión remoto esté activo. Los usuarios de Mac también deben revisar.
Lo que aún no se sabe
- Cómo se publicó la versión maliciosa: los informes públicos aún no lo han aclarado. Según OpenSourceMalware, la extensión de Open VSX pertenece a un empleado de Anthropic, pero si se comprometió su cuenta u otra parte del proceso de publicación, los informes públicos aún no lo han aclarado.
- Si el VS Code Marketplace de Microsoft llegó a distribuir esta versión: los informes públicos aún no lo han aclarado. Según Sesame Disk, el historial público del Marketplace no muestra la 2.1.313; OpenSourceMalware abrió de todos modos un informe de amenaza por precaución.
- Quién es el atacante y quién controla
134.209.82.225: los informes públicos aún no lo han aclarado.
Crear API Key y poner una clave nueva de Claude Code / Codex tras la revisión →
Paso 1: comprobar la versión y pasar a 2.1.314 o superior
Terminal en macOS / Linux:
code --list-extensions --show-versions | grep -i anthropic.claude-code
cursor --list-extensions --show-versions | grep -i anthropic.claude-code
codium --list-extensions --show-versions | grep -i anthropic.claude-code
ls -d ~/.vscode/extensions/anthropic.claude-code-* \
~/.cursor/extensions/anthropic.claude-code-* \
~/.vscode-oss/extensions/anthropic.claude-code-* \
~/.windsurf/extensions/anthropic.claude-code-* 2>/dev/null
Windows PowerShell:
Get-ChildItem "$env:USERPROFILE\.vscode\extensions","$env:USERPROFILE\.cursor\extensions","$env:USERPROFILE\.vscode-oss\extensions" -Filter "anthropic.claude-code-*" -ErrorAction SilentlyContinue | Select-Object Name
Si aparece anthropic.claude-code@2.1.313 o un directorio con 2.1.313 en el nombre, esa versión estuvo instalada. No te limites a borrarla: sigue los pasos 2 a 4 y luego el 5. Aunque no tengas la 2.1.313, fija la extensión en 2.1.314:
code --install-extension anthropic.claude-code@2.1.314 --force
cursor --install-extension anthropic.claude-code@2.1.314 --force
codium --install-extension anthropic.claude-code@2.1.314 --force
claude --version
La última línea muestra la versión de la CLI de Claude Code. Según Phorion, la 2.1.313 también se retiró de npm; si aparece, actualiza.
Paso 2: revisar authorized_keys por huella, no solo por comentario
grep -n "svc-telemetry" ~/.ssh/authorized_keys
ssh-keygen -lf ~/.ssh/authorized_keys
ssh-keygen -lf ~/.ssh/authorized_keys | grep "0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk"
La primera línea busca por comentario; la segunda y la tercera, por huella. Según Phorion, el malware solo comprueba si existe el comentario svc-telemetry, así que guíate por la huella: un comentario se cambia fácilmente. En un archivo de prueba pusimos una clave nuestra y la clave del atacante con el comentario cambiado a renamed: grep svc-telemetry no encontró nada, mientras que ssh-keygen -lf siguió mostrando la huella:
256 SHA256:fcpk2HR713pxnLll4jbnb7Bu9k5gvtf8n7UREAQe1dI me@laptop (ED25519)
256 SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk renamed (ED25519)
Además de esa huella, deberías reconocer cada línea que muestra ssh-keygen -lf. Cualquier entrada desconocida es sospechosa. En Windows:
Select-String -Path "$env:USERPROFILE\.ssh\authorized_keys" -Pattern "svc-telemetry"
ssh-keygen -lf "$env:USERPROFILE\.ssh\authorized_keys"
Paso 3: buscar conexiones a 134.209.82.225 y procesos de túnel
# macOS
lsof -nP -i @134.209.82.225
pgrep -fl 'localhost:22|\.smtk|\.stk_'
# Linux
ss -tnp | grep 134.209.82.225
pgrep -af 'localhost:22|\.smtk|\.stk_'
Windows:
Get-NetTCPConnection -RemoteAddress 134.209.82.225 -ErrorAction SilentlyContinue
Get-CimInstance Win32_Process | Where-Object { $_.CommandLine -match 'localhost:22|smtk' } | Select-Object ProcessId,CommandLine
Una conexión a 134.209.82.225, o un proceso ssh / autossh con localhost:22, .smtk o .stk_ en la línea de comandos, indica casi con seguridad que la máquina está afectada. Según Phorion, el túnel corre desacoplado: cerrar el editor no lo detiene.
Paso 4: revisar la persistencia y si se activó SSH
macOS:
ls -la ~/Library/LaunchAgents/com.apple.sysmond.plist ~/.config/.smt ~/.config/.smtk "$TMPDIR"/.stk_* 2>/dev/null
launchctl list | grep sysmond
sudo systemsetup -getremotelogin
Linux:
crontab -l | grep -n smt
ls -la ~/.config/.smt ~/.config/.smtk /tmp/.stk_* 2>/dev/null
systemctl is-enabled ssh sshd 2>/dev/null
systemctl is-active ssh sshd 2>/dev/null
Windows:
Get-ScheduledTask -TaskName SysMon -ErrorAction SilentlyContinue
Test-Path "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\sysmon.cmd"
Get-ChildItem "$env:USERPROFILE\.config" -Force -ErrorAction SilentlyContinue | Where-Object Name -match 'smt'
Get-Service sshd -ErrorAction SilentlyContinue
Si existe com.apple.sysmond.plist, ~/.config/.smt, una línea @reboot con .smt, una tarea SysMon o sysmon.cmd en Inicio, trata la máquina como afectada. Revisa también SSH: si está activo y nunca lo activaste, también es sospechoso.
Paso 5: si te afectó
Siguiendo las recomendaciones de OpenSourceMalware y Phorion:
- Desconecta primero la máquina y bloquea
134.209.82.225en los puertos 22 y 8099 en el cortafuegos o el router. - Conserva las pruebas antes de limpiar:
mkdir -p ~/ir-evidence
cp -p ~/.ssh/authorized_keys ~/ir-evidence/ 2>/dev/null
cp -p ~/.config/.smt ~/Library/LaunchAgents/com.apple.sysmond.plist ~/ir-evidence/ 2>/dev/null
crontab -l > ~/ir-evidence/crontab.txt 2>/dev/null
ps auxww > ~/ir-evidence/ps.txt
- Detén el túnel y elimina la persistencia y la clave (macOS / Linux):
pkill -f '\.config/\.smt'
pkill -f 'localhost:22'
# macOS
launchctl unload -w ~/Library/LaunchAgents/com.apple.sysmond.plist
rm -f ~/Library/LaunchAgents/com.apple.sysmond.plist
# Linux
crontab -l | grep -v '\.smt' | crontab -
# macOS + Linux
rm -f ~/.config/.smt ~/.config/.smtk "${TMPDIR:-/tmp}"/.stk_*
sed -i.bak '/svc-telemetry/d' ~/.ssh/authorized_keys
ssh-keygen -lf ~/.ssh/authorized_keys
sed solo borra por comentario. Si el paso 2 encontró una línea renombrada por huella, abre ~/.ssh/authorized_keys y bórrala a mano. Windows:
Unregister-ScheduledTask -TaskName SysMon -Confirm:$false -ErrorAction SilentlyContinue
Remove-Item "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\sysmon.cmd" -ErrorAction SilentlyContinue
Remove-Item "$env:USERPROFILE\.config\smt.cmd","$env:USERPROFILE\.config\smtk" -ErrorAction SilentlyContinue
- Rota todas las credenciales a las que llega esta máquina: claves SSH privadas, tokens de Git / GitHub, claves de AWS / GCP, tokens en archivos
.envy las API Keys de Claude Code y Codex, desde otra máquina limpia. Según Phorion, si SSH llegó a estar activo o los registros SSH muestran accesos desde127.0.0.1/::1con la clavesvc-telemetry, el atacante pudo haber entrado, y este paso es obligatorio. - Desactiva la actualización automática de extensiones y plantéate reinstalar el sistema. Según OpenSourceMalware, si el atacante llegó a entrar, los archivos conocidos pueden no ser todo; reinstalar es más seguro.
Si usas una clave de este sitio, borra la antigua en la consola, crea una nueva y actualiza el valor en el archivo global ~/.claude/settings.json y en ~/.codex/config.toml.
Crear API Key para sustituir una clave que pudo quedar expuesta →
Cómo prevenirlo
- Fija versiones de extensiones y desactiva la actualización automática en el
settings.jsondel editor:
{
"extensions.autoUpdate": false,
"extensions.autoCheckUpdates": false
}
Cuando salga una versión nueva, espera uno o dos días y sigue a la comunidad de seguridad antes de actualizar.
- Instala Claude Code preferentemente con la CLI oficial y depende menos de los mercados de extensiones:
curl -fsSL https://claude.ai/install.sh | bash
claude --version
Instalación y API de terceros: guía de Claude Code con API de terceros.
- Conoce los límites de permisos de extensiones, plugins y MCP: una extensión del editor tiene todos tus permisos y puede leer archivos, terminales y credenciales. Consulta los límites de Codex Plugin, Skill, MCP e Internet Access y la guía de seguridad de automatización con Codex y Playwright MCP.
- Audita tus proyectos con regularidad, por ejemplo con el skill security-audit de Cloudflare para Claude Code.
- No dejes claves en variables de entorno visibles para todos los procesos. Para cambiar de clave: configuración de la API Key de Codex.



