Extension Claude Code pour VS Code 2.1.313 piégée par une porte dérobée SSH : vérification et nettoyage en 5 minutes pour Cursor / VSCodium

Selon OpenSourceMalware et Phorion, l’extension Claude Code 2.1.313 publiée sur Open VSX contenait un chargeur de 66 lignes ajouté en tête d’extension.js. Dès le chargement, il ajoute une clé de l’attaquant à ~/.ssh/authorized_keys, tente d’activer SSH, ouvre un tunnel inverse vers 134.209.82.225 et installe une persistance. Ce guide donne 5 étapes de vérification pour macOS, Linux et Windows, puis la conservation des preuves, le nettoyage et la rotation des identifiants.

8 分钟阅读
Extension Claude Code pour VS Code 2.1.313 piégée par une porte dérobée SSH : vérification et nettoyage en 5 minutes pour Cursor / VSCodium

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-code 2.1.313. Une fois décompressée, elle est identique à la version normale et embarque le binaire officiel. Seul extension.js diffè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 :

  1. Ajoute une clé : crée ~/.ssh et ajoute à ~/.ssh/authorized_keys une clé publique Ed25519 de commentaire svc-telemetry, d’empreinte SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk. Le détenteur de la clé privée correspondante peut se connecter sous votre compte.
  2. Tente d’activer SSH : sous Linux via systemctl et d’autres méthodes ; sous macOS via sudo -n systemsetup -setremotelogin on ; sous Windows en installant et démarrant OpenSSH Server avec PowerShell.
  3. 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 que tunnel à 134.209.82.225:22 avec -R '*:0:localhost:22', en réessayant toutes les 60 secondes et en préférant autossh s’il est présent.
  4. Persistance : sous macOS, ~/.config/.smt, ~/.config/.smtk et ~/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ée SysMon ou, à défaut, sysmon.cmd dans le dossier Démarrage.
  5. Balise : après 1,5 seconde, envoie en HTTP non chiffré vers 134.209.82.225:8099/beacon le 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 :

bash
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 :

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 :

bash
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

bash
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 :

text
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 :

powershell
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

bash
# 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 :

powershell
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 :

bash
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 :

bash
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 :

powershell
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 :

  1. Déconnectez d’abord la machine et bloquez 134.209.82.225 sur les ports 22 et 8099 au pare-feu ou au routeur.
  2. Conservez les preuves avant de nettoyer :
bash
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
  1. Arrêtez le tunnel, supprimez la persistance et la clé (macOS / Linux) :
bash
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 :

powershell
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
  1. Changez tous les identifiants accessibles depuis cette machine : clés SSH privées, jetons Git / GitHub, clés AWS / GCP, jetons des fichiers .env et 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 depuis 127.0.0.1 / ::1 avec la clé svc-telemetry, l’attaquant est peut-être déjà entré : cette étape est alors obligatoire.
  2. 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.json de l’éditeur :
json
{
  "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 :
bash
curl -fsSL https://claude.ai/install.sh | bash
claude --version

Installation et configuration d’une API tierce : guide Claude Code avec une API tierce.

Sources

相关文章

Claude API 413 request_too_large : la limite passe à 128 Mo — limites Bedrock et passerelles tierces, envoyer de gros PDF et des captures

Claude API 413 request_too_large : la limite passe à 128 Mo — limites Bedrock et passerelles tierces, envoyer de gros PDF et des captures

La limite des requêtes Messages de l'API Claude passe de 32 Mo à 128 Mo, mais Bedrock reste à 20 Mo, Vertex géré par Google à 30 Mo, et les passerelles tierces ont leurs propres plafonds. Reconnaître l'erreur 413 request_too_large, tableau des limites par plateforme, compresser les images, envoyer les PDF par file_id, alléger les longues sessions computer use et Claude Code, et notre test de 10 Mo à 130 Mo.

Arrêt de Google Jules (31 décembre) : exporter vos données et migrer vers les agents en arrière-plan de Claude Code / Codex

Arrêt de Google Jules (31 décembre) : exporter vos données et migrer vers les agents en arrière-plan de Claude Code / Codex

Google arrête Jules le 31 décembre 2026, et le service passe en lecture seule après le 11 novembre. Ce guide suit l'export officiel (paramètres, variables d'environnement, tâches planifiées, dépôts, mémoires, scripts de setup, toutes les sessions et leurs patchs) puis place chaque élément dans Claude Code et Codex, avec les durées mesurées sur le même export dans les deux clients (Claude Code environ 15 s, Codex environ 44 s).

Pourquoi Claude bannit-il des comptes ? La théorie communautaire du « système de points » et Claude Code sans changer de compte

Pourquoi Claude bannit-il des comptes ? La théorie communautaire du « système de points » et Claude Code sans changer de compte

Depuis le 28 octobre, deux publications affirmant que « Claude bannit les comptes selon un système de points » ont cumulé environ 770 000 vues sur X. Nous séparons les affirmations de la communauté de ce qu'Anthropic publie réellement sur les bannissements et les recours, puis nous testons Claude Code 2.1.310 avec une API Key de notre site : les requêtes simples répondent en 1,4 à 1,7 seconde environ, et une petite tâche de correction de bug avec tests se termine en 8,5 secondes. Configuration de Codex et Cursor et dépannage 401/429 inclus.