Les versions 2.1.312 et 2.1.313 de l’extension officielle Claude Code pour Visual Studio Code, téléchargées depuis le Cursor Marketplace sous macOS et Windows, contenaient un code injecté avant même l’activation du plugin. L’éditeur de sécurité Phorion a publié le 30 octobre une alerte détaillée, mise à jour le lendemain après confirmation de Cursor, qui a retiré les deux versions de sa place de marché.
Un code qui s’exécute avant l’activation de l’extension
Selon Phorion, le fichier extension.js comportait un préfixe injecté qui s’exécute dès le chargement par Node, avant même le rappel activate normalement prévu par l’API des extensions VS Code. Aucune interaction de la victime n’était nécessaire au-delà de l’installation du paquet piégé.
Le mécanisme en quatre étapes
L’analyse décrit une chaîne de compromission structurée, construite pour durer au-delà d’un simple redémarrage.
| Étape | Action | Détail technique |
|---|---|---|
| 1 | Accès distant | Ajout d’une clé publique Ed25519 (commentaire svc-telemetry) dans ~/.ssh/authorized_keys, tentative d’activation de SSH |
| 2 | Tunnel sortant | Connexion SSH inversée vers 134.209.82.225 avec une clé privée embarquée, option -R *:0:localhost:22 |
| 3 | Persistance | LaunchAgent com.apple.sysmond sur macOS, tâche cron @reboot sur Linux, tâche planifiée « SysMon » sur Windows |
| 4 | Reconnaissance | Balise HTTP en clair vers le port 8099 : nom d’hôte, utilisateur, OS, adresse IP publique, et les noms (pas les valeurs) de variables d’environnement liées à des identifiants |
Un détail limite l’impact côté macOS : la commande systemsetup -getremotelogin renvoie un code de sortie à zéro même en cas d’erreur de droits, ce qui trompe le script et lui fait sauter l’activation effective du partage distant sur les postes où il n’était pas déjà actif. La clé et la persistance restent toutefois installées.
Désinstaller l’extension ne suffit pas à retirer la porte dérobée : les clés, le tunnel et la tâche de persistance survivent à la suppression du paquet.
Postes concernés : extension Claude Code pour VS Code, versions 2.1.312 et 2.1.313, installées via le Cursor Marketplace sous macOS ou Windows. Le Visual Studio Marketplace de Microsoft n’est pas cité dans l’alerte de Phorion.
Nettoyage recommandé
Phorion détaille une procédure de remédiation en plusieurs temps, à exécuter après avoir coupé l’accès réseau de la machine suspectée :
# Couper le tunnel et les process ssh/autossh suspects
pkill -f "134.209.82.225"
# macOS : retirer la persistance
launchctl unload ~/Library/LaunchAgents/com.apple.sysmond.plist
rm -f ~/Library/LaunchAgents/com.apple.sysmond.plist
rm -f ~/.config/.smt ~/.config/.smtk /tmp/.stk_*
# Retirer la cle plantee
sed -i '/svc-telemetry/d' ~/.ssh/authorized_keys
# Verifier que le partage distant n'a pas ete active
sudo systemsetup -getremotelogin
La rotation des identifiants accessibles depuis le compte touché complète la procédure. Les empreintes SHA-256 du fichier piégé et des clés plantées figurent dans l’alerte originale pour permettre une recherche d’indicateurs de compromission sur un parc de postes.
Une chaîne d’approvisionnement sous tension
L’incident s’ajoute à une série d’alertes récentes sur la distribution d’extensions et de paquets pour outils de développement assistés par IA. GitHub avait par exemple ouvert en préversion publique un pare-feu de paquets npm pour filtrer les dépendances suspectes avant leur installation. La question posée est la même à chaque fois : la confiance accordée par défaut à une place de marché d’extensions, qu’elle appartienne à un éditeur historique ou à un fork plus récent comme Cursor, repose sur des contrôles de publication qui restent inégaux d’un registre à l’autre.
Pour les équipes qui outillent leurs postes de développement avec une sélection d’utilitaires en ligne de commande, l’épisode rappelle l’intérêt de limiter les sources d’installation et de vérifier les empreintes publiées par les éditeurs avant une mise à jour automatique.
Ce qu’il faut retenir
Deux versions de l’extension Claude Code distribuées par le Cursor Marketplace contenaient une porte dérobée complète : accès SSH distant, tunnel vers un serveur de commande, persistance multiplateforme et reconnaissance de la machine. Cursor a retiré les paquets, mais la désinstallation seule ne suffit pas : la procédure de nettoyage et la rotation des identifiants exposés restent nécessaires sur tout poste ayant installé l’une des deux versions touchées.
Ce type d’incident ne surprend plus personne dans l’écosystème des extensions IDE, mais il mérite d’être pris au sérieux à chaque occurrence : les éditeurs d’extensions pour assistants de code manipulent des postes de développement truffés d’identifiants, ce qui en fait des cibles de choix. Un contrôle systématique des empreintes avant mise à jour, même pour un éditeur de confiance, coûte quelques minutes et peut éviter une compromission complète du poste — Simon Janvier.
Pour aller plus loin : l’alerte complète publiée par Phorion, avec les indicateurs de compromission et la chronologie détaillée.
