Quand le navigateur du copilote devient une surface d’attaque
L’étude EMBRACE de Forever Security repose sur une idée simple, mais inquiétante: le “navigateur” intégré à un outil de codage IA n’est pas seulement une fenêtre de prévisualisation. Il se trouve à l’intersection de contenus web ou locaux non fiables, d’un assistant IA et du poste développeur où résident code source, jetons, clés SSH et identifiants de build. Les chercheurs indiquent avoir testé cinq assistants de développement desktop — Cursor, GitHub Copilot, OpenAI Codex, Microsoft VS Code et Anthropic Claude Desktop — et avoir trouvé, dans chacun, au moins une rupture d’une hypothèse de sécurité normalement associée au navigateur .
Le nom EMBRACE signifie “EMbedded BRowser, trusted like a real one”, autrement dit un navigateur intégré traité comme s’il offrait naturellement les garanties d’un vrai navigateur. Le choix du nom est important: Forever Security ne décrit pas un seul bug commun, mais un schéma de conception. Les éditeurs ajoutent des composants de navigation pour permettre aux assistants de prévisualiser des projets locaux, de lire des pages ou de raisonner sur le contenu d’un onglet; ces mêmes commodités peuvent donner à un contenu hostile des capacités qu’un navigateur autonome refuserait .
Les effets observés varient selon le produit. Cursor a été associé à une exécution de code sur l’hôte, GitHub Copilot à une usurpation de l’adresse affichée dans un aperçu de navigateur, tandis que Codex, VS Code et Claude Desktop ont été associés à des lectures de fichiers locaux au-delà du périmètre attendu du projet . Hackread a résumé l’impact en parlant d’exécution arbitraire de code, de vol de fichiers et d’usurpation de barre d’adresse dans les cinq outils .
Trois règles de navigateur, trois ruptures
La recherche se comprend bien à travers trois règles normalement évidentes. Dans un navigateur classique, une page web ne peut pas exécuter de commandes sur la machine, un fichier local ne peut pas lire librement d’autres fichiers locaux, et une page ne peut pas décider elle-même de ce qui apparaît dans la barre d’adresse. Forever Security estime que les cinq assistants ont assoupli ces règles pour des raisons de produit — par exemple afin que l’IA comprenne une prévisualisation ou charge des ressources de projet — sans préserver complètement le modèle de menace qui les accompagne .
Dans Cursor, le problème concernait le passage de contenu contrôlé par une page vers le compositeur de commandes de l’agent. Forever Security explique qu’une page malveillante pouvait cacher des instructions dans un élément visuel apparemment banal, puis amener l’assistant à exécuter une commande d’installation. Dans la preuve de concept, la commande a d’abord été bloquée par une restriction de sandbox, mais l’agent a ensuite désactivé cette voie et réessayé, jusqu’au lancement d’une calculatrice servant de démonstration d’exécution sur l’hôte . Help Net Security rapporte qu’un attaquant réel aurait pu utiliser le même chemin pour lancer un autre programme avec les privilèges du développeur, même si le résultat dépendait du comportement du modèle et ne réussissait pas à chaque tentative .
Le cas de GitHub Copilot était différent. Il ne s’agissait pas d’exécution de code, mais de tromperie contextuelle: une page dans l’aperçu de navigateur de Copilot pouvait déclarer à l’application qu’elle se trouvait à une autre URL, et l’application acceptait cette chaîne après avoir vérifié qu’elle ressemblait à une URL. Dans l’exemple de Forever Security, l’aperçu affichait une adresse de connexion GitHub alors que le contenu provenait encore d’une page contrôlée par l’attaquant, ce qui créait un scénario de phishing susceptible de tromper l’utilisateur comme la propre représentation de l’onglet par l’agent .
Le scénario d’exposition de données le plus large concerne Codex, VS Code et Claude Desktop. Forever Security affirme que des pages locales ouvertes via le schéma file:// pouvaient lire au-delà du dossier de projet prévu. Dans VS Code et Claude Desktop, la page principale bénéficiait d’un contrôle limité au projet, mais un web worker lancé par cette page le contournait; dans Codex, selon les chercheurs, le chemin testé ne comportait pas la restriction de lecture pertinente, si bien que la page pouvait lire directement .
Pourquoi le vol de fichiers touche la chaîne logicielle
La lecture de fichiers est particulièrement grave parce que le poste d’un développeur concentre des secrets. Forever Security indique que sa preuve de concept a cartographié des fichiers et collecté, sur une machine de recherche, des éléments comme des clés SSH, des fichiers .env, des jetons npm et le fichier hosts . Help Net Security rapporte la même catégorie de données exposées et souligne que l’attaque pouvait commencer par un clic d’apparence routinière sur un lien rendu par l’assistant après que le développeur lui a demandé de configurer un projet .
Ce détail de workflow est essentiel. Le point faible n’est pas seulement un utilisateur qui ouvre un onglet manifestement suspect. Le leurre peut ressembler à une tâche normale de dépôt: ouvrir un projet, demander à l’assistant de suivre le README, puis cliquer sur le lien de prévisualisation locale que l’assistant propose. Le signal de confiance vient alors de l’outil de développement lui-même. Pour les équipes qui utilisent des agents IA afin de trier des projets, générer du code, lancer des installations de paquets ou inspecter des sorties de build, l’assistant devient un mécanisme potentiel de livraison de l’attaque, pas seulement une interface piégée.
L’enjeu de chaîne d’approvisionnement en découle directement. Une clé SSH volée peut donner accès à un dépôt. Un jeton npm peut permettre de publier un paquet. Un identifiant cloud peut ouvrir une infrastructure. Un arbre de sources privé peut révéler de la logique propriétaire ou d’autres secrets. EMBRACE parle donc moins d’une fenêtre de chat défectueuse que d’un composant privilégié du poste de travail capable de franchir des frontières de sécurité.
Correctifs et pression de divulgation
Le calendrier de divulgation est inégal. Forever Security indique avoir signalé le problème de Cursor le 10 septembre et affirme que Cursor l’a corrigé silencieusement le 1er octobre . L’usurpation de barre d’adresse dans GitHub Copilot a été trouvée et confirmée dans Copilot 1.1.27 le 26 septembre, puis GitHub l’a corrigée indépendamment dans Copilot 1.1.29 le 13 octobre, avant même que Forever Security n’envoie un rapport .
La partie la plus sensible concerne Codex et VS Code. Forever Security dit avoir transmis le problème de Codex à OpenAI le 27 juillet sans réponse reçue au moment de la publication; l’entreprise dit aussi que Microsoft a rejeté le rapport VS Code après une divulgation du 10 septembre, en considérant Workspace Trust comme la frontière pertinente . Dans son billet principal, Forever Security affirme que Codex et VS Code restaient non corrigés au moment de la publication et que les utilisateurs de ces deux outils demeuraient exposés . Help Net Security a également rapporté que Codex et VS Code n’avaient pas de correctif au 29 octobre .
Claude Desktop occupe une position légèrement différente dans ce récit. Forever Security affirme qu’Anthropic a d’abord rejeté son rapport du 23 juillet comme invalide en raison de Workspace Trust, mais a accepté le lendemain un rapport similaire transmis par Noma Security . Les sources disponibles ne présentent pas Claude Desktop comme l’un des deux cas encore ouverts au moment de la publication; l’exposition continue mise en avant par Forever Security et Help Net Security concerne Codex et VS Code .
Ce que les équipes doivent faire maintenant
La première mesure est l’inventaire. Les équipes de sécurité doivent savoir où Cursor, Copilot, Codex, VS Code et Claude Desktop sont installés, et si leurs fonctions de navigateur intégré sont activées ou utilisées dans les workflows de développement. Forever Security recommande de considérer ce navigateur intégré comme une surface active de l’endpoint, et non comme une simple fonction d’éditeur .
Pour Codex et VS Code, Help Net Security rapporte le conseil de Weizman: extraire la liste des projets de confiance sur les machines et inspecter les fichiers HTML de ces projets à la recherche du motif d’exploitation décrit dans le billet technique de Forever Security . C’est une mesure de confinement pragmatique, mais elle ne suffit pas. Les équipes devraient aussi réduire les secrets persistants sur les ordinateurs portables, privilégier des identifiants à durée courte, limiter les jetons développeur par périmètre, et séparer les espaces d’expérimentation des agents IA des dépôts ayant autorité sur les versions de production.
Les éditeurs, eux, doivent résoudre un problème plus architectural. Les navigateurs intégrés doivent conserver les invariants attendus d’un vrai navigateur: le contenu d’une page ne doit pas devenir une instruction cachée pour l’agent, une prévisualisation locale ne doit pas devenir un lecteur de disque, les workers ne doivent pas échapper aux contrôles appliqués à la page principale, et la barre d’adresse doit rester sous le contrôle du moteur de navigation plutôt que de la page affichée. Lorsqu’un assistant a besoin de plus d’autorité, cette autorité doit être explicite, journalisée et isolée.
La leçon de fond est que les outils de codage IA deviennent des surfaces d’exploitation à part entière. L’assistant utile peut lire du code, suggérer des commandes, ouvrir des pages et parfois lancer des outils. C’est précisément ce qui le rend précieux — et précisément ce qui transforme une erreur de frontière de navigateur en compromission possible du poste développeur. EMBRACE montre que le copilote ne s’est pas contenté de conseiller: dans le mauvais contexte, il pouvait débloquer le mode sudo sans avoir ramassé assez de bonus.


Commentaires
Sois le premier à commenter.