Douze heures et cinq mille machines : l'extension Claude Code qui n'était pas celle d'Anthropic

Quelque part dans la journée de jeudi, une build de l'extension Claude Code présente dans le marketplace de Cursor a cessé d'être ce qu'elle prétendait être. Deux versions, 2.1.312 et 2.1.313, portaient une backdoor SSH persistante. La fiche est restée en ligne près de douze heures. Le décompte de Cursor lui-même parle de « jusqu'à 5 000 » développeurs touchés.
Les détails viennent d'un faisceau d'analyses de sécurité publiées à un jour d'intervalle : Step Security, Sophos, BleepingComputer, le blog sécurité de Microsoft, et Ars Technica, qui a cadré la chronologie avec le plus de précision. Selon ces rapports, l'extension altérée faisait ce qu'une backdoor est censée faire : elle ouvrait un accès qui survit à un redémarrage, ici via SSH. Le résumé de The Verge note que la charge utile collectait noms d'hôte, noms d'utilisateur et adresses IP.
C'est la version courte. La version longue porte sur ce qu'est un marketplace d'extensions, et sur pourquoi ça devait arriver.
Ce qui a été compromis, au juste
Pas les serveurs d'Anthropic. Pas le modèle Claude. Un canal de distribution.
Claude Code est distribué comme CLI et comme extensions d'éditeur. Cursor exploite son propre marketplace d'extensions, comme le fait VS Code, et la fiche en question était estampillée extension officielle Claude Code. Pour un développeur qui cherche « claude code » dans son éditeur, la fiche avait l'air correcte : bon nom, bonne icône, bonne description.
Ce qui s'exécutait à l'installation était une build trojanisée. Le mécanisme décrit dans les rapports est une backdoor SSH persistante, une modification qui permet à un attaquant de se connecter plus tard à la machine, via SSH, sans que l'utilisateur ait autre chose à faire. Pour un portable de développeur, c'est à peu près la pire charge utile possible. Ce n'est pas un mineur de cryptomonnaie qui apparaît dans le moniteur d'activité. C'est une porte silencieuse.

Pourquoi les développeurs sont la cible idéale
Une machine de développeur compromise, ce n'est pas un simple portable. C'est un jeu d'identifiants à la portée inhabituellement large : code source de dépôts privés, tokens de CI, clés cloud, chaînes de connexion à des bases dans un fichier .env que quelqu'un comptait nettoyer en mars, clés SSH qui se font mutuellement confiance d'une machine à l'autre dans une flotte.
Une backdoor SSH est particulièrement bien adaptée à cet environnement, parce que les machines de dev font déjà tourner SSH, ont déjà des fichiers authorized_keys, et attendent déjà des connexions entrantes d'autres machines. Une nouvelle clé dans ce fichier ne paraît pas anormale comme le paraîtrait une nouvelle connexion sortante vers une IP inconnue.
Ajoutez le timing : un jeudi, en pleine journée de travail, au milieu d'un cycle de lancement pour beaucoup d'équipes. La fenêtre n'a pas été longue, mais douze heures suffisent pour quelques milliers d'installations si la fiche est en haut des résultats de recherche.
La partie que personne ne veut dire tout haut
Les marketplaces d'extensions ne sont pas des app stores au sens où le grand public l'entend. Elles ressemblent davantage à des registres de paquets. Il existe un processus de revue, mais il vise à détecter un comportement manifestement malveillant au moment de la soumission, pas à vérifier en continu que l'éditeur est toujours l'éditeur et que le binaire est toujours le binaire.
Ce n'est pas une défaillance propre à Cursor. C'est la faiblesse structurelle de tout écosystème qui laisse des tiers publier du code s'exécutant avec tous les privilèges locaux : npm, PyPI, extensions VS Code, extensions de navigateur, et maintenant les marketplaces qui ont poussé autour des outils de code IA. La surface d'attaque, ce n'est pas le modèle. C'est l'installeur.
Ce qui rend ce cas notable, c'est le nom. Une extension portant le nom d'un produit IA connu, dans un marketplace où la plupart des utilisateurs cherchent exactement ce produit, c'est un raccourci de confiance contre lequel il est difficile de se défendre. Le nom fait l'ingénierie sociale.
À quoi a ressemblé la réponse
La fiche a été retirée, et Cursor a publié un décompte d'utilisateurs. Les éditeurs de sécurité ont publié des indicateurs. Anthropic, selon la couverture, n'était pas la partie qui avait livré la mauvaise build : l'extension du marketplace de Cursor était un canal de distribution distinct de celui d'Anthropic.
Cette distinction compte pour attribuer les responsabilités, pas pour évaluer le risque. Du point de vue d'un développeur, « j'ai installé l'extension Claude Code depuis le marketplace de mon éditeur » est une action unique, et la chaîne de traçabilité derrière est invisible.
Que faire cette semaine
Si vous utilisez Cursor, ou n'importe quel éditeur avec un marketplace tiers, c'est une bonne semaine pour faire trois choses ennuyeuses.
Un : listez vos extensions installées et vérifiez les éditeurs. Pas les noms, les éditeurs, et idéalement la source d'installation. Tout ce que vous ne reconnaissez pas, supprimez-le. Tout ce qui double une fonctionnalité que vous avez déjà auprès d'une source officielle, supprimez-le.
Deux : inspectez ~/.ssh/authorized_keys sur vos machines de développement. Vous cherchez des clés que vous ne reconnaissez pas. Sur un portable qui ne fait que se connecter vers l'extérieur, ce fichier est souvent vide ou inexistant, ce qui rend une entrée inattendue facile à repérer.
Trois : renouvelez les identifiants auxquels cette machine pouvait accéder. C'est l'étape coûteuse, et c'est celle que les gens sautent. Si vous ne pouvez pas tout renouveler, renouvelez ce qui ferait le plus mal : clés de fournisseur cloud, tokens de registre de paquets, et tout ce qui a un accès en écriture à un dépôt de production.
Pour les équipes, ajoutez-en une : épinglez les versions d'extension et installez depuis une liste validée, plutôt que de laisser chacun installer ce qui remonte bien dans la recherche. C'est une politique que la plupart des équipes ont déjà pour les dépendances npm et que presque aucune n'a pour les plugins d'éditeur.
Pourquoi personne n'a rien vu pendant une demi-journée
Douze heures, ce n'est pas long en valeur absolue, mais c'est très long dans la vie d'un canal de distribution. Pendant cette fenêtre, l'extension était installable, installable voulait dire exécutable, et exécutable voulait dire que chaque développeur qui cliquait sur installer pendant une journée de travail normale était potentiellement exposé.
La détection, curieusement, est venue de l'extérieur. Des éditeurs de sécurité à l'affût de comportements suspects l'ont signalée ; le marketplace ne l'a pas fait. Ce n'est pas une charge contre Cursor en particulier, c'est le fonctionnement de ces écosystèmes. Les registres sont optimisés pour la disponibilité, pas pour la surveillance comportementale continue de chaque artefact qu'ils hébergent. L'économie d'un scan en temps réel de chaque mise à jour de chaque extension est brutale, et l'incitation à le faire est faible tant que rien ne casse.
La remédiation a été plus rapide que la détection. Fiche retirée, avis publiés, indicateurs partagés. Mais la séquence compte : exposition d'abord, explication ensuite. Pour ceux qui ont installé pendant la fenêtre, l'information utile est arrivée après la décision qui comptait.
La conclusion inconfortable
La catégorie des outils de code IA passe deux ans à se battre sur les capacités : fenêtres de contexte, boucles d'agent, combien de fichiers l'outil peut modifier sans perdre le fil. Elle n'a passé presque aucun temps à se battre sur l'intégrité de la chaîne d'approvisionnement, parce que jusqu'ici le modèle de menace était « le modèle écrit du mauvais code », pas « l'extension est un malware ».
Cinq mille machines et douze heures, c'est un incident mineur au regard de la dernière décennie d'attaques sur la chaîne logicielle. C'est aussi un aperçu. Le prochain sera un serveur MCP, ou un paquet de compétences, ou un plugin qu'un agent populaire recommande par son nom. Le schéma est le même : un nom de confiance, un canal de distribution à la vérification légère, et une charge utile qui n'a pas besoin d'être bruyante.
La leçon n'est pas « n'utilisez pas d'extensions ». C'est que « officiel » sur une fiche de marketplace ne veut à peu près rien dire, et que la seule défense qui passe à l'échelle consiste à traiter les plugins d'éditeur avec la même méfiance que vous appliquez déjà à un npm install lancé sur un paquet dont vous n'avez jamais entendu parler.
Articles associés
Meta teste ses applications IA les plus étranges d'abord en Asie du Sud-Est
Une cabine d'essayage IA en Indonésie, à Singapour et en Thaïlande. Un journal pour animaux aux Philippines. Aucune des deux apps n'a été annoncée, et c'est précisément le propos.
Ollie avait la certification SOC 2 et 7,5 millions de dollars. Ça n'a pas suffi face à Muse.
Un assistant familial axé sur la vie privée, un tour de table mené par Khosla et un vrai audit SOC 2 : Ollie ferme le 6 novembre. La leçon ne porte pas sur la confidentialité, mais sur la distribution.
Runware veut construire des data centers comme Detroit construisait des voitures
Trente mégawatts par jour d'ici 2028, des pods en ligne en 48 heures, un gigawatt par mois. La contrainte de la capacité IA n'est plus le silicium, mais les deux ans qu'il faut pour construire un bâtiment.
Genspark a transformé une équipe de tournage en menu
Trois modèles de langage réalisent, soixante-dix versions de modèles exécutent, et votre travail devient trente-cinq validations d'affilée. Ce que donne vraiment une production vidéo orchestrée.