/// Signal
Une fausse mise à jour de Claude Code est restée onze heures sur la place de marché de Cursor

Le fait : le 29 octobre, la place de marché d’extensions de Cursor a distribué une version modifiée de l’extension Claude Code, publiée sous l’identifiant « Anthropic.claude-code » et numérotée 2.1.313. Elle est restée en ligne de 10 h 27 à 21 h 35, heure de Paris. Cursor donne comme borne haute 5 000 utilisateurs touchés, et écrit dans sa notice de sécurité que cette version « was not developed by Anthropic » — n’a pas été développée par Anthropic (notre traduction).
Onze heures et huit minutes : c’est la fenêtre d’exposition, bornée à 10 h 27 et 21 h 35 heure de Paris — les deux heures que donne Numerama, et que Cursor situe « about 2:27am PT and 1:35pm PT », donc à quelques minutes près. L’identifiant du paquet est au centre du problème : « Anthropic.claude-code » est le nom sous lequel un développeur s’attend à trouver l’extension officielle. Cursor écrit que « At most 5,000 users were affected, and we will reach out directly » — au plus 5 000 utilisateurs touchés, qu’elle contactera directement (notre traduction). Ce que la notice ne dit pas : comment l’attaquant a réussi à publier sous cet identifiant. Elle ne dit pas non plus si quelqu’un est effectivement entré — elle demande d’isoler « hosts showing evidence of payload execution or backdoor installation », ce qui suppose que la réponse n’est pas encore connue.
Le code, Cursor le détaille point par point. À l’installation, l’extension relevait le nom de la machine, le nom d’utilisateur, le système, l’architecture du processeur, le chemin du dossier personnel, les noms des variables d’environnement, les dossiers de travail, l’adresse email configurée dans Git et l’adresse IP publique. Elle tentait ensuite d’ajouter une clé SSH contrôlée par l’attaquant aux « authorized_keys », d’activer le service SSH local et d’ouvrir un tunnel SSH inverse. La clé porte une étiquette, « svc-telemetry ». La persistance passait par un LaunchAgent sous macOS, ou par une tâche planifiée qui tente de s’exécuter en compte SYSTEM sous Windows avec un script de démarrage en secours ; les scripts d’arrière-plan réessaient le tunnel toutes les soixante secondes environ. Le tout rendait compte par un POST HTTP vers « /beacon », sur le port 8099.
Le tunnel, lui, ne s’est pas ouvert sur la plupart des machines — et les sources ne racontent pas la même chose sur la raison. La notice donne deux causes. Les fautes de l’attaquant d’abord : « Outside of highly unusual circumstances where Cursor was started with administrator privileges, due to errors in the malicious code, this step would fail », en dehors de cas très inhabituels où Cursor était lancé avec les droits d’administrateur, cette étape échouait à cause d’erreurs dans le code malveillant (notre traduction). Une barrière qui ne doit rien au hasard ensuite : activer le service SSH local « requires admin rights », des droits que l’extension n’a pas sur la plupart des machines macOS et Windows, et « On those hosts the step fails and the attacker could not have logged in through the tunnel » — sur ces machines, l’étape échoue et l’attaquant n’aurait pas pu se connecter par le tunnel (notre traduction). Sur ce point, Reuters ne retient que la seconde cause : une étape clé « would have failed on most machines because it requires administrator rights » (notre traduction). Le bug de l’attaquant n’est donc pas le seul rempart — le modèle de privilèges du système en est un autre, et il était là avant l’incident.
Ce qui n’a pas échoué est plus gênant. La notice est explicite : même quand le tunnel échoue, « the extension still adds the attacker’s SSH key, installs persistence, and sends host details to the attacker » (notre traduction). Et désinstaller ne suffit pas — « the payload drops standalone persistence scripts that keep running » : la charge dépose des scripts de persistance autonomes qui continuent de tourner. Cursor ajoute que la collecte, limitée aux noms des variables d’environnement, « does not rule out later credential access over the backdoor ». Côté réponse, l’entreprise a retiré la version, bloqué sa distribution, puis éteint l’ensemble de sa place de marché VS Code « out of an abundance of caution », avant d’auditer les accès — « no other extensions were tampered with », selon elle —, de faire tourner ses clés et de reconstruire la place de marché. Le serveur de l’attaquant ne fonctionne plus : Cursor dit avoir travaillé avec son hébergeur pour le mettre hors ligne. Restent les machines. La notice demande de vérifier « svc-telemetry » dans les clés autorisées, de supprimer la clé, la persistance et les processus de tunnel, de faire tourner les identifiants et les sessions accessibles depuis la machine — depuis un système de confiance —, et d’évaluer s’il faut reconstruire le poste, « assess whether the host should be rebuilt ». Numerama le dit en une phrase : « Les ordinateurs touchés ne sont pas sains pour autant ». La limite de l’incident est réelle — au plus 5 000 utilisateurs, un tunnel qui n’a pas pu s’ouvrir sur la plupart des machines, et « no evidence » que d’autres versions ou la distribution officielle soient touchées, ce qui n’est pas la même chose que l’assurance qu’elles ne le sont pas. Mais deux points manquent, et la notice ne les comble pas : elle ne nomme aucune version saine à réinstaller, et elle n’explique pas comment l’extension a pu être publiée sous le nom d’Anthropic. Sur la réaction d’Anthropic, le seul élément daté que nous ayons vient de Reuters : la société « did not immediately respond » à une demande de commentaire (notre traduction).
Verdict SassyNow
Onze heures de fausse mise à jour sous le nom d’Anthropic, au plus 5 000 utilisateurs touchés : le tunnel n’a pas pu s’ouvrir sur la plupart des machines — code fautif d’un côté, droits d’administrateur requis de l’autre —, mais la clé SSH, la persistance et les remontées d’informations, elles, sont bien arrivées.