En bref : selon les analyses du 30 octobre d’OpenSourceMalware et de Phorion, l’extension Claude Code for VS Code publiée sur Open VSX sous anthropic.claude-code@2.1.313 contenait une porte dérobée. Elle laisse sur votre machine une clé SSH de l’attaquant, un tunnel inverse vers 134.209.82.225 et une persistance au démarrage. Selon Phorion, Anthropic a retiré la 2.1.313 d’Open VSX, de npm et du VS Code Marketplace ; selon Sesame Disk, la version actuelle sur Open VSX est la 2.1.314.
Désinstaller l’extension ne supprime pas la porte dérobée. Si vous utilisez Cursor, VSCodium, Windsurf ou un autre éditeur qui installe ses extensions depuis Open VSX, et que vous avez installé ou mis à jour l’extension Claude Code aujourd’hui, suivez les 5 étapes ci-dessous.
Nous avons exécuté toutes les commandes de vérification sur une machine Linux : l’ensemble s’est terminé en moins d’une seconde, avec une sortie normale. Nous n’avons installé la version malveillante sur aucune machine.
Ce qui s’est passé
Selon OpenSourceMalware :
- La version malveillante se présente comme
anthropic.claude-code2.1.313. Une fois décompressée, elle est identique à la version normale et embarque le binaire officiel. Seulextension.jsdiffère : une fonction immédiatement invoquée de 66 lignes précède le vrai code de l’extension. - Pas besoin d’ouvrir une conversation avec Claude : le simple chargement du module suffit. Le paquet n’a aucun script install ou postinstall, le déclenchement a lieu à l’exécution.
- Presque toutes les exceptions sont ignorées : l’extension continue de fonctionner normalement.
Selon RuntimeWire, le chercheur Adnan Khan (@adnanthekhan) a été le premier à le signaler publiquement sur X. Voir aussi le message de @mattjay sur X.
Ce que fait la porte dérobée
Selon OpenSourceMalware et Phorion, le chargeur :
- Ajoute une clé : crée
~/.sshet ajoute à~/.ssh/authorized_keysune clé publique Ed25519 de commentairesvc-telemetry, d’empreinteSHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk. Le détenteur de la clé privée correspondante peut se connecter sous votre compte. - Tente d’activer SSH : sous Linux via
systemctlet d’autres méthodes ; sous macOS viasudo -n systemsetup -setremotelogin on; sous Windows en installant et démarrant OpenSSH Server avec PowerShell. - Tunnel inverse : écrit une seconde clé privée intégrée (commentaire
svc-telemetry-tun) dans un fichier.stk_*du répertoire temporaire, puis se connecte en tant quetunnelà134.209.82.225:22avec-R '*:0:localhost:22', en réessayant toutes les 60 secondes et en préférantautosshs’il est présent. - Persistance : sous macOS,
~/.config/.smt,~/.config/.smtket~/Library/LaunchAgents/com.apple.sysmond.plist(nom trompeur, ce n’est pas un composant Apple) ; sous Linux, les deux mêmes fichiers et une ligne crontab@reboot; sous Windows,.config\smt.cmd,.config\smtk, une tâche planifiéeSysMonou, à défaut,sysmon.cmddans le dossier Démarrage. - Balise : après 1,5 seconde, envoie en HTTP non chiffré vers
134.209.82.225:8099/beaconle nom d’hôte, l’utilisateur, le système, l’architecture, les répertoires, l’e-mail Git et jusqu’à 40 noms de variables d’environnement contenant KEY/TOKEN/SECRET/PASS/AWS/GCP. Selon les deux analyses, ce sont les noms qui partent, pas les valeurs.
Selon Phorion, un bug existe sous macOS : en utilisateur standard, systemsetup -getremotelogin ne renvoie jamais Off, donc le script n’active pas la Session à distance. La clé et la persistance sont malgré tout écrites, et la porte dérobée fonctionne dès que la Session à distance est activée. Les utilisateurs Mac doivent donc vérifier aussi.
Ce qui reste inconnu
- Comment la version malveillante a été publiée : les rapports publics ne l’ont pas encore précisé. Selon OpenSourceMalware, l’extension Open VSX appartient à un employé d’Anthropic, mais on ne sait pas si son compte ou une autre étape de publication a été compromis : les rapports publics ne l’ont pas encore précisé.
- Si le VS Code Marketplace de Microsoft a distribué cette version : les rapports publics ne l’ont pas encore précisé. Selon Sesame Disk, l’historique public du Marketplace ne mentionne pas la 2.1.313 ; OpenSourceMalware a tout de même ouvert un rapport de menace par précaution.
- L’identité de l’attaquant et le contrôle de
134.209.82.225: les rapports publics ne l’ont pas encore précisé.
Créer une API Key pour remplacer votre clé Claude Code / Codex après la vérification →
Étape 1 : vérifier la version de l’extension et passer en 2.1.314 ou plus
Terminal 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 vous voyez anthropic.claude-code@2.1.313 ou un dossier contenant 2.1.313, cette version a été installée. Ne vous contentez pas de la supprimer : passez aux étapes 2 à 4, puis à l’étape 5. Même sans 2.1.313, fixez l’extension 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 dernière ligne affiche la version de la CLI Claude Code. Selon Phorion, la 2.1.313 a aussi été retirée de npm ; si elle s’affiche, mettez à jour.
Étape 2 : auditer authorized_keys par empreinte, pas seulement par commentaire
grep -n "svc-telemetry" ~/.ssh/authorized_keys
ssh-keygen -lf ~/.ssh/authorized_keys
ssh-keygen -lf ~/.ssh/authorized_keys | grep "0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk"
La première ligne cherche le commentaire, les deux suivantes l’empreinte. Selon Phorion, le malware vérifie seulement la présence du commentaire svc-telemetry : fiez-vous à l’empreinte, un commentaire se modifie facilement. Dans un fichier de démonstration, nous avons placé une de nos clés et la clé de l’attaquant renommée renamed : grep svc-telemetry ne trouve rien, alors que ssh-keygen -lf affiche toujours l’empreinte :
256 SHA256:fcpk2HR713pxnLll4jbnb7Bu9k5gvtf8n7UREAQe1dI me@laptop (ED25519)
256 SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk renamed (ED25519)
Au-delà de cette empreinte, vous devez reconnaître chaque ligne affichée par ssh-keygen -lf. Toute ligne inconnue est suspecte. Sous Windows :
Select-String -Path "$env:USERPROFILE\.ssh\authorized_keys" -Pattern "svc-telemetry"
ssh-keygen -lf "$env:USERPROFILE\.ssh\authorized_keys"
Étape 3 : chercher les connexions vers 134.209.82.225 et les processus de tunnel
# 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
Une connexion vers 134.209.82.225, ou un processus ssh / autossh dont la ligne de commande contient localhost:22, .smtk ou .stk_, indique presque à coup sûr une compromission. Selon Phorion, le tunnel tourne de façon détachée : fermer l’éditeur ne l’arrête pas.
Étape 4 : vérifier la persistance et l’état de 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 com.apple.sysmond.plist, ~/.config/.smt, une ligne @reboot mentionnant .smt, une tâche SysMon ou sysmon.cmd dans Démarrage existe, considérez la machine comme compromise. Vérifiez aussi SSH : s’il est actif alors que vous ne l’avez jamais activé, c’est suspect.
Étape 5 : si vous êtes touché
D’après les recommandations d’OpenSourceMalware et de Phorion :
- Déconnectez d’abord la machine et bloquez
134.209.82.225sur les ports 22 et 8099 au pare-feu ou au routeur. - Conservez les preuves avant de nettoyer :
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
- Arrêtez le tunnel, supprimez la persistance et la clé (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 ne supprime que par commentaire. Si l’étape 2 a révélé une ligne renommée, ouvrez ~/.ssh/authorized_keys et supprimez-la à la main. 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
- Changez tous les identifiants accessibles depuis cette machine : clés SSH privées, jetons Git / GitHub, clés AWS / GCP, jetons des fichiers
.envet API Keys utilisées par Claude Code et Codex, depuis une autre machine saine. Selon Phorion, si SSH a été activé ou si les journaux SSH montrent des connexions depuis127.0.0.1/::1avec la clésvc-telemetry, l’attaquant est peut-être déjà entré : cette étape est alors obligatoire. - Désactivez la mise à jour automatique des extensions et envisagez de réinstaller la machine. Selon OpenSourceMalware, après une connexion de l’attaquant, les fichiers connus ne racontent peut-être pas tout : réinstaller est plus sûr.
Si vous utilisez une clé de ce site, supprimez l’ancienne dans la console, créez-en une nouvelle et mettez à jour la valeur dans le fichier global ~/.claude/settings.json et dans ~/.codex/config.toml.
Créer une API Key pour remplacer une clé potentiellement exposée →
Prévenir la prochaine fois
- Fixez les versions d’extension et désactivez la mise à jour automatique dans le
settings.jsonde l’éditeur :
{
"extensions.autoUpdate": false,
"extensions.autoCheckUpdates": false
}
À chaque nouvelle version, attendez un jour ou deux et surveillez la communauté sécurité avant de mettre à jour.
- Privilégiez la CLI officielle pour Claude Code plutôt que les places de marché d’extensions :
curl -fsSL https://claude.ai/install.sh | bash
claude --version
Installation et configuration d’une API tierce : guide Claude Code avec une API tierce.
- Comprenez les limites de permission des extensions, plugins et MCP : une extension d’éditeur a vos permissions complètes et peut lire fichiers, terminaux et identifiants. Voir les limites Codex Plugin, Skill, MCP et Internet Access et le guide sécurité automatisation Codex et Playwright MCP.
- Auditez régulièrement vos projets, par exemple avec le skill security-audit de Cloudflare pour Claude Code.
- Ne laissez pas vos clés dans des variables d’environnement visibles par tous les processus. Pour changer de clé : configuration de l’API Key Codex.



