Neutron, notre moteur d’IA, a obtenu un score de 97,1 % sur le benchmark CyberGym de l’UC Berkeley. En savoir plus

Analyse approfondie

Analyse approfondie

L’extension Claude Code trojanisée sur Cursor installe une porte dérobée SSH

Une version malveillante 2.1.313 de l’extension Claude Code sur le marketplace Cursor a ajouté une porte dérobée SSH ; 5 000 utilisateurs au plus l’ont installée le 29 octobre 2026.

En bref

  • Une version malveillante de l’extension VS Code Claude Code d’Anthropic, la 2.1.313, a été distribuée via le marketplace d’extensions de Cursor pendant environ 11 heures le 29 octobre 2026. Cursor indique qu’au plus 5 000 utilisateurs l’ont installée et que cette version n’a pas été développée par Anthropic.
  • Cette version contient un chargeur de 66 lignes inséré au début du fichier JavaScript principal de l’extension. Il ajoute une clé SSH contrôlée par l’attaquant dans ~/.ssh/authorized_keys, tente d’activer le service SSH local, ouvre un tunnel SSH inversé et installe une persistance par plateforme.
  • OpenSourceMalware a publié l’analyse du code le 30 octobre 2026. Cursor a retiré la version, fermé son marketplace, l’a reconstruit et fait mettre hors ligne le serveur de l’attaquant. Aucune autre extension n’a été altérée. Aucune CVE n’est attribuée, et l’incident ne figure pas au catalogue KEV de la CISA au 30 octobre 2026.
  • Si vous avez installé ou mis à jour Claude Code depuis le marketplace de Cursor le 29 octobre, lancez le contrôle svc-telemetry ci-dessous, puis suivez les étapes de suppression. Désinstaller l’extension ne suffit pas : la charge utile dépose une persistance autonome.

Suis-je concerné ?

Toutes ces conditions doivent être réunies :

  • Vous utilisez l’EDI Cursor, pas VS Code, et vous avez installé ou mis à jour l’extension Claude Code depuis le marketplace d’extensions de Cursor.
  • L’installation ou la mise à jour a eu lieu entre environ 2 h 27 et 13 h 35, heure du Pacifique, le 29 octobre 2026, pendant la disponibilité de la version malveillante.
  • La version installée est la 2.1.313. Cursor installe les extensions automatiquement quand les mises à jour sont activées, donc la version importe plus que le souvenir d’avoir choisi d’installer.

Vous n’êtes pas concerné par ces canaux, qu’OpenSourceMalware a confirmés sains :

  • Le paquet npm @anthropic-ai/claude-code.
  • L’extension Claude Code sur Open VSX.
  • L’extension Claude Code sur le Microsoft Visual Studio Code Marketplace.

La version 2.1.313 n’a jamais été une version officielle d’Anthropic. Les versions publiées par Anthropic passent de la 2.1.312 du 27 octobre 2026 à la 2.1.314 du 30 octobre 2026 : le numéro malveillant n’a existé que dans le marketplace de Cursor.

Vérifiez si la charge utile a tourné sur votre machine. L’artefact le plus fiable du chargeur est la clé SSH qu’il ajoute. Sur macOS et Linux :

grep -qs svc-telemetry ~/.ssh/authorized_keys && echo "svc-telemetry key found" || echo "No key found; machine not impacted"

Sur Windows, lancez dans 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" }

Ces contrôles viennent de l’avis de sécurité de Cursor. Une clé absente ne prouve pas que l’extension n’a jamais tourné ; elle prouve que l’étape d’ajout de clé de la porte dérobée ne s’est pas terminée. Les indicateurs de la section « Comment vérifier si j’ai été compromis ? » couvrent le reste.

Comment corriger ?

La version malveillante a disparu du marketplace : la correction passe par la suppression et la vérification.

  1. Dans Cursor, désinstallez l’extension Claude Code et redémarrez l’EDI. Si vous avez toujours besoin de Claude Code dans Cursor, réinstallez-le depuis le marketplace reconstruit et confirmez une version 2.1.314 ou ultérieure.
  2. Lancez le contrôle svc-telemetry ci-dessus. S’il trouve la clé, passez d’abord par « Que faire si le contrôle trouve la clé ? ».
  3. Lancez le script de remédiation de Cursor pour votre plateforme : remediate-macos.sh en tant qu’utilisateur concerné sur macOS, ou remediate-windows.ps1 depuis un PowerShell administrateur sur Windows. Les scripts suppriment l’extension, les mécanismes de persistance, les processus de tunnel et la clé de l’attaquant, et sortent en code non nul s’il reste quelque chose.
  4. Relancez le contrôle svc-telemetry jusqu’à ce qu’il ne trouve plus de clé.

Anthropic a publié la version 2.1.314 sur Open VSX et le Microsoft VS Code Marketplace le 30 octobre 2026 : les extensions venant de ces deux marketplaces se mettent donc normalement à jour vers une version saine.

Que fait le code malveillant ?

Le seul fichier modifié est extension.js. OpenSourceMalware y a trouvé une fonction immédiatement invoquée de 66 lignes, insérée avant le paquet légitime de l’extension : le code malveillant s’exécute au chargement du module de l’extension, c’est-à-dire au démarrage de VS Code et à l’ouverture de la webview de l’extension. Aucun script de cycle de vie de paquet n’intervient ; charger le module suffit.

Le chargeur déroule la même chaîne sur macOS, Linux et Windows :

  1. Reconnaissance. Il collecte le nom d’hôte, le nom d’utilisateur local, le système d’exploitation, l’architecture CPU, le répertoire personnel, le répertoire de travail courant, l’e-mail Git global depuis git config --global user.email, et les noms d’environ 40 variables d’environnement contenant les chaînes KEY, TOKEN, SECRET, PASS, AWS ou GCP. Les valeurs ne sont pas envoyées ; les noms révèlent déjà quels fournisseurs de cloud et quels types d’identifiants la machine utilise.
  2. Ajout de clé autorisée. Il crée ~/.ssh en mode 0700, ajoute une clé publique Ed25519 avec le commentaire svc-telemetry à ~/.ssh/authorized_keys, et passe le fichier en mode 0600.
  3. Activation du service SSH. Il tente d’activer Remote Login sur macOS avec sudo -n systemsetup -setremotelogin on, de démarrer sshd sur Linux via systemctl, et d’installer puis démarrer OpenSSH Server sur Windows via PowerShell.
  4. Tunnel SSH inversé. Il décode une clé privée OpenSSH intégrée dans un fichier temporaire nommé .stk_<identifier>, puis se connecte de façon répétée en tunnel@134.209.82[.]225 avec la requête de transfert -N -R '*:0:localhost:22', demandant au serveur de l’attaquant d’allouer un port qui renvoie vers le service SSH de la victime. La vérification de clé d’hôte est désactivée et la connexion est retentée toutes les 60 secondes, avec une préférence pour autossh quand il est disponible.
  5. Persistance. Sur macOS il écrit ~/.config/.smt et ~/.config/.smtk plus un LaunchAgent nommé com.apple.sysmond.plist avec RunAtLoad et KeepAlive. Sur Linux il écrit les deux mêmes fichiers sous ~/.config et ajoute le script de tunnel au crontab de l’utilisateur avec une entrée @reboot. Sur Windows il crée une tâche planifiée nommée SysMon qui tente de tourner en SYSTEM, avec repli sur un script dans le dossier de démarrage.
  6. Balise. Après 1,5 seconde il récupère l’IP publique via curl ifconfig.me et curl https://api.ipify.org et envoie les détails collectés en JSON par POST vers http://134.209.82[.]225:8099/beacon en HTTP non chiffré, avec un second POST vers http://127.0.0.1:8099/beacon. La réponse est ignorée.

Presque toutes les exceptions sont supprimées, donc les échecs ne laissent aucun signe visible et l’extension légitime continue de se charger. La partie injectée ne télécharge rien de plus ; OpenSourceMalware n’a trouvé aucun téléchargeur de second étage, seulement les requêtes d’IP, la balise et le tunnel interactif.

Comment la mise à jour trojanisée a-t-elle atteint les utilisateurs ?

La version malveillante a été publiée via le marketplace d’extensions VS Code de Cursor sous l’identité légitime de l’extension Claude Code, anthropic.claude-code, et Cursor l’a servie en version 2.1.313. Porteuse de l’identité réelle de l’éditeur, elle est arrivée chez les utilisateurs et dans la mise à jour automatique comme une mise à jour ordinaire, pas comme une nouvelle extension. La version est restée disponible environ 11 heures, d’environ 2 h 27 à 13 h 35 heure du Pacifique, entre deux versions officielles d’Anthropic.

Chronologie de la version officielle 2.1.312 du 27 octobre à la version saine 2.1.314 du 30 octobre, avec la version malveillante 2.1.313 disponible 11 heures dans le marketplace Cursor le 29 octobre.
Figure 1 : La version malveillante de l’extension Claude Code a été disponible dans le marketplace de Cursor entre deux versions officielles d’Anthropic, du 27 au 30 octobre 2026. Source : avis de sécurité Cursor, versions Anthropic et OpenSourceMalware, consultés le 30 octobre 2026.

Cursor indique avoir identifié l’incident, retiré la version et bloqué sa distribution, puis fermé tout le marketplace, audité les accès, tourné ses clés et reconstruit le marketplace. L’entreprise a aussi travaillé avec l’hébergeur pour mettre hors ligne le serveur de l’attaquant, donc le tunnel inversé et la balise ne fonctionnent plus.

Comment l’attaquant a introduit la version n’est pas établi publiquement. The Hacker News rapporte que la méthode reste inconnue. OpenSourceMalware écrit que la provenance de l’artefact analysé n’est pas établie et que ses constats démontrent que l’artefact est malveillant sans prouver que l’infrastructure de publication d’Anthropic elle-même a été compromise. Cursor a indiqué à OpenSourceMalware que l’extension Claude Code de son marketplace « a subi une forme de compromission », ce qui situe l’incident dans le chemin de distribution de Cursor plutôt que dans Open VSX.

Quel est le flux de l’attaque ?

En une phrase : l’attaquant a fabriqué une 2.1.313 trojanisée que le marketplace de Cursor a servie comme une mise à jour normale, et le chargeur inséré au début a transformé chaque redémarrage de l’éditeur en route SSH persistante vers le serveur de l’attaquant.

flowchart LR A["L’attaquant crée
la 2.1.313"] --> B["Le marketplace Cursor la sert
comme mise à jour"] B --> C["VS Code charge
extension.js"] C --> D["Le chargeur de 66 lignes
s’exécute en premier"] D --> E["Clé svc-telemetry ajoutée
à authorized_keys"] D --> F["Tunnel SSH inversé vers
134.209.82[.]225"] D --> G["Persistance : LaunchAgent,
cron, tâche planifiée"] D --> H["Balise avec les détails
de l’hôte vers :8099"]

Que peut faire un attaquant ?

Le but de la chaîne est l’accès distant persistant par SSH. Sa portée réelle a des limites, et l’analyse de Cursor les énonce clairement :

  • Sur la plupart des hôtes macOS et Windows, l’étape d’activation du SSH a échoué. Activer le service SSH local exige des droits administrateur, et Cursor indique qu’en dehors de « circonstances hautement inhabituelles où Cursor a été démarré avec des privilèges administrateur », des erreurs dans le code malveillant faisaient échouer cette étape. Sans service SSH à l’écoute, le tunnel n’avait aucun port 22 à joindre : l’opérateur n’a pas pu s’y connecter sur ces hôtes.
  • L’ajout de clé, la persistance et la balise s’installent quand même sur ces hôtes, et les détails de la machine atteignent quand même l’attaquant. Cursor demande aux utilisateurs concernés de suivre la remédiation dans tous les cas.
  • Sur les hôtes où le service SSH a démarré, un opérateur détenant la clé privée correspondante pouvait se connecter via le tunnel inversé et lancer des commandes comme le compte de la victime ; c’est ainsi qu’OpenSourceMalware décrit le rôle du tunnel.
  • La balise transporte des détails d’hôte et des noms de variables d’environnement, pas leurs valeurs. OpenSourceMalware note qu’un accès SSH réussi laisserait l’opérateur inspecter le compte directement : la balise sous-estime l’accès plutôt qu’elle ne l’exagère.

Aucune charge utile supplémentaire n’a été observée par les deux analyses.

Que faire si le contrôle trouve la clé ?

Traitez la machine comme compromise et répondez dans cet ordre, en combinant les recommandations de Cursor et d’OpenSourceMalware :

  1. Déconnectez la machine du réseau et isolez-la. Bloquez 134.209.82[.]225 sur les ports 22 et 8099 dans vos contrôles.
  2. Préservez les preuves légales avant le nettoyage : les fichiers déposés, la ligne dans authorized_keys, le LaunchAgent ou la tâche planifiée, et toute télémétrie de processus. OpenSourceMalware conseille de collecter les preuves d’abord, car les fichiers observables peuvent ne pas représenter l’ensemble de la compromission.
  3. Supprimez l’extension, les mécanismes de persistance et tout processus de tunnel ssh ou autossh en cours, avec les scripts de Cursor ou à la main depuis les indicateurs ci-dessous.
  4. Révoquez et réinitialisez les identifiants et sessions accessibles depuis ce compte, depuis un système sain : clés SSH, hôtes Git, registres de paquets, consoles cloud, coffres de mots de passe et sessions de navigateur.
  5. Évaluez s’il faut reconstruire. OpenSourceMalware écrit que reconstruire l’hôte est plus sûr que de supposer que retirer les artefacts connus restaure la confiance, car le tunnel créait un chemin interactif vers le compte.

Comment vérifier si j’ai été compromis ?

Au-delà du contrôle de la clé svc-telemetry, cherchez les indicateurs publiés sur les terminaux, les journaux réseau et la télémétrie d’installation d’extensions. Tous viennent de l’avis de Cursor et de l’analyse d’OpenSourceMalware.

Fichiers et persistance à chercher :

  • ~/.ssh/authorized_keys contenant le commentaire svc-telemetry
  • ~/.config/.smt et ~/.config/.smtk (macOS, Linux), ou %USERPROFILE%\.config\smt.cmd et smtk (Windows)
  • Fichiers de $TMPDIR ou %TEMP% correspondant à .stk_<10 hex> ou .nc<PID>.js
  • LaunchAgent macOS ~/Library/LaunchAgents/com.apple.sysmond.plist avec le label com.apple.sysmond
  • Tâche planifiée Windows nommée SysMon, ou sysmon.cmd dans le dossier de démarrage
  • Un dossier d’extension nommé anthropic.claude-code-2.1.313-darwin-arm64 ou anthropic.claude-code-2.1.313-win32-x64 dont le extension.js contient 134.209.82.225 et svc-telemetry

Indicateurs réseau :

  • Toute connexion vers 134.209.82[.]225, en particulier les ports 22 et 8099
  • POST HTTP vers /beacon, y compris les tentatives en boucle locale vers 127.0.0.1:8099
  • Les requêtes vers ifconfig.me et api.ipify.org sont des services légitimes ; traitez-les comme du contexte, pas comme une preuve

Lignes de commande de processus à chercher :

  • ssh -N -R '*:0:localhost:22' ou autossh -M 0
  • Options SSH StrictHostKeyChecking=no avec UserKnownHostsFile=/dev/null
  • schtasks /create /tn SysMon, systemsetup -setremotelogin on, ou Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Empreintes des paquets pour les scans de terminaux : les VSIX modifiés hachent vers 432ccdee3801f99e52b8fe31f69ea9870118e96ea7ef9ecabed1479621b5ab62 (darwin-arm64) et 3de1722901165769893bef57c72594e9a54459faa23f3091b136b79966edd081 (win32-x64), et le extension.js malveillant vers ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15.

Un seul indicateur trouvé est une piste, pas la preuve de la chaîne complète. Une tentative dont toutes les étapes ont échoué peut quand même avoir laissé la balise et la clé.

Chronologie

  • 2026-10-27 : Anthropic publie la version 2.1.312 de l’extension Claude Code, la dernière version officielle avant l’incident.
  • 2026-10-29 : Entre environ 2 h 27 et 13 h 35 heure du Pacifique, la version malveillante 2.1.313 est disponible dans le marketplace d’extensions de Cursor. Cursor indiquera ensuite qu’au plus 5 000 utilisateurs ont été concernés.
  • 2026-10-29 : Cursor identifie la version malveillante, la retire, bloque sa distribution et ferme le marketplace VS Code par précaution, puis le reconstruit après rotation des clés et audit des accès.
  • 2026-10-29 : Cursor travaille avec l’hébergeur pour mettre hors ligne le serveur de l’attaquant à l’adresse 134.209.82[.]225.
  • 2026-10-30 : Anthropic publie la version 2.1.314 de l’extension Claude Code sur Open VSX et le Microsoft VS Code Marketplace.
  • 2026-10-30 : OpenSourceMalware publie son analyse technique et ses indicateurs de compromission ; l’avis de sécurité de Cursor, avec ses contrôles et ses scripts de remédiation, est en ligne.

FAQ

Le paquet npm @anthropic-ai/claude-code était-il malveillant ?

Non. OpenSourceMalware a vérifié le paquet npm, l’extension Open VSX et l’extension du Microsoft VS Code Marketplace, et les a trouvés sains tous les trois. Seule la version 2.1.313 du marketplace de Cursor portait le chargeur, et ce numéro de version n’a jamais existé dans les versions officielles d’Anthropic.

Des attaquants ont-ils réellement pu se connecter via la porte dérobée ?

Sur la plupart des hôtes, non. Cursor indique que l’activation du service SSH local exige des droits administrateur et que des erreurs dans le code malveillant faisaient échouer cette étape sauf si Cursor lui-même tournait avec des privilèges administrateur. Sans service SSH à l’écoute, le tunnel inversé n’avait rien à transmettre. La clé, la persistance et la balise restaient installées, et Cursor demande la remédiation dans tous les cas.

Quelqu’un a-t-il reçu la version malveillante automatiquement ?

Oui, c’est le chemin le plus probable pour la plupart des utilisateurs concernés. Jenn Gile, d’OpenSourceMalware, a noté que toute personne ayant Claude Code en mise à jour automatique a pu recevoir le logiciel malveillant, car les marketplaces livrent les mises à jour sous l’identité de l’éditeur. Cursor contacte directement les utilisateurs concernés.

L’attaquant est-il encore joignable ?

Non. Cursor indique que le serveur de l’attaquant ne fonctionne plus : l’entreprise a travaillé avec le fournisseur de cloud qui l’hébergeait pour le mettre hors ligne, donc le tunnel SSH inversé et le POST de balise avec les détails d’hôte sont inopérants. La clé et la persistance sur une machine touchée restent en place jusqu’à leur suppression.

Faut-il reconstruire une machine touchée ?

À évaluer. OpenSourceMalware écrit que reconstruire est plus sûr que de supposer que retirer les artefacts connus restaure la confiance, car le tunnel offrait à l’opérateur une route vers le service SSH et qu’une activité ultérieure n’apparaîtrait pas dans l’artefact statique. Au minimum, retirez la clé et la persistance, révoquez les identifiants joignables et examinez les journaux d’authentification, SSH et processus.

Qui a trouvé et révélé cet incident ?

Dean Hardcastle a repéré la mise à jour malveillante en temps réel et alerté OpenSourceMalware, dont les chercheurs Paul McCarty et Jenn Gile ont publié l’analyse le 30 octobre 2026. Cursor a publié son propre avis de sécurité avec indicateurs, contrôle et scripts de remédiation. The Hacker News a rendu compte de l’incident le 30 octobre 2026, en corrigeant une première version de son article qui citait Open VSX comme registre compromis.

Références

  • Avis de sécurité de Cursor, « Security notice — malicious version of Anthropic.claude-code (2.1.313) identified in the Cursor Extension Marketplace », 29 octobre 2026, avec la fenêtre concernée, le chiffre de 5 000 utilisateurs, l’analyse de l’échec de l’étape SSH, le contrôle, les scripts de remédiation et les indicateurs : https://cursor.com/blog/claude-code-extension-security-notice (consulté le 30 octobre 2026)
  • Analyse d’OpenSourceMalware, « Trojanized Claude Code Extension Plants an SSH Backdoor », 30 octobre 2026, avec le détail du chargeur de 66 lignes, la balise, le tunnel, la persistance et les empreintes : https://opensourcemalware.com/blog/trojanized-claude-code-extension-plants-persistent-ssh-backdoor (consulté le 30 octobre 2026)
  • Déclaration de Cursor sur l’incident, publiée le 29 octobre 2026 : https://x.com/cursor_ai/status/2116074289053175808 (consulté le 30 octobre 2026)
  • Versions de Claude Code d’Anthropic, où la 2.1.314 a été publiée le 30 octobre 2026 et où la 2.1.313 n’existe pas : https://github.com/anthropics/claude-code/releases (consulté le 30 octobre 2026)
  • The Hacker News, « Official Claude Code Extension on Cursor Marketplace Trojanized with Persistent SSH Backdoor », 30 octobre 2026, rapportant que la méthode d’introduction de la mise à jour reste inconnue : https://thehackernews.com/2026/10/official-claude-code-vs-code-extension.html (consulté le 30 octobre 2026)
  • Page npm du paquet @anthropic-ai/claude-code, qui affiche 12 837 062 téléchargements pour la semaine du 22 au 28 octobre 2026, pour l’échelle du paquet sain avec lequel l’extension partage son nom : https://www.npmjs.com/package/@anthropic-ai/claude-code (consulté le 30 octobre 2026)