Le chargement de la page a suffi
La Frontier Red Team d'Anthropic affirme qu'un modèle non publié a trouvé des failles dans des navigateurs et des noyaux, puis les a enchaînées en exploits fonctionnels, dont un qui prenait le contrôle d'un Chrome standard sur macOS quelques secondes après le chargement d'une page. Les agents de code ouvrent des pages toute la journée. Dans Bromure Agentic Coding, le navigateur de l'agent tourne dans sa propre VM jetable, loin du code, des identifiants et du Mac, et les automatisations de revue de code appliquent sur votre propre machine le conseil d'Anthropic d'analyser chaque pull request.
Quatre failles, une page, quelques secondes. Ce genre de chaîne d'exploits demandait autrefois une équipe de spécialistes ; aujourd'hui, un modèle sait en construire une. Le navigateur que pilote votre agent de code y est exposé à chaque page qu'il ouvre.
Le 27 octobre, la Frontier Red Team d'Anthropic a publié un rapport sur cinq chaînes d'exploits qu'un modèle de recherche interne, non publié, a trouvées et construites « après un premier prompt ». Une chaîne d'exploits relie plusieurs failles de sorte que chacune fasse franchir à l'attaque une défense que la précédente ne pouvait pas passer. Les cibles étaient Chrome, Safari, Android, Windows et Linux. Anthropic a signalé les cinq aux éditeurs dans le cadre d'une divulgation coordonnée, et The Hacker News, qui a couvert le rapport hier, note qu'aucune n'a été observée dans une attaque réelle.
La conclusion d'Anthropic tient en une ligne : « Les modèles de pointe sont capables de découvrir et de combiner plusieurs vulnérabilités en un exploit fonctionnel. »
Une page, quatre failles
La chaîne Chrome est celle qu'il faut lire de près. Sa preuve de concept lançait la Calculatrice depuis un Chrome en configuration par défaut sur macOS « quelques secondes après le chargement de la page ». La Calculatrice est la preuve traditionnelle : si un exploit peut lancer une application sur votre Mac, il peut lancer n'importe quoi d'autre.
Il a fallu quatre failles :
- Une faille dans V8, le moteur JavaScript de Chrome, permettait à la page de corrompre la mémoire du moteur.
- Une deuxième faille de V8 sortait du bac à sable mémoire propre à V8 et donnait à l'attaquant le contrôle du renderer, le processus qui dessine la page.
- Une race condition dans CacheStorage permettait à ce renderer de lire de la mémoire hors de son bac à sable et de cartographier le processus navigateur, plus privilégié.
- Un use-after-free dans FedCM, la fonction de connexion fédérée de Chrome, exécutait le code de l'attaquant entièrement hors du bac à sable.
Le bac à sable de Chrome part du principe que le renderer tombera tôt ou tard et en contient les dégâts. Les étapes trois et quatre défont cela. Anthropic indique avoir signalé 62 failles de Chrome qui ont reçu un CVE et étaient corrigées à la version 156 de Chrome, toutes classées critiques ou élevées, dont 13 évasions du bac à sable et 21 failles de compromission du renderer.
La chaîne Safari n'exécute jamais de code. Elle obtient un accès en lecture et en écriture à la mémoire du navigateur et modifie une seule valeur pour désactiver la same-origin policy, la règle qui empêche un site de lire un autre site. Une fois la règle désactivée, n'importe quelle page pouvait lire l'historique, les cookies et les données de session de Safari, et envoyer des requêtes authentifiées à d'autres sites. Apple l'a corrigée dans iOS et iPadOS 26.5.2.
La chaîne Linux obtenait un shell root par le réseau, sans connexion, sur toute machine faisant tourner un listener multipath TCP. La fuite d'une adresse du noyau a pris environ 48 minutes, et le shell cinq de plus. La faille, CVE-2026-98432, a été corrigée en amont le 15 octobre.
Votre agent ouvre plus de pages que vous
Ce sont des failles de navigateur, et un agent de code est désormais l'un des plus gros utilisateurs de navigateur sur la machine d'un développeur. Il lit de la documentation, suit un lien depuis une issue, ouvre la page d'accueil d'un paquet, vérifie un résultat de recherche, charge l'application qu'il vient de construire pour en faire une capture d'écran. Les serveurs MCP de navigateur et les extensions de navigateur ont rendu cela banal : l'agent pilote un vrai Chromium, souvent le même profil Chrome que celui auquel le développeur se connecte chaque matin.
La plupart de ces pages, le développeur ne les a jamais choisies. Un lien dans une issue GitHub, une URL dans un README, le troisième résultat de recherche pour un message d'erreur : chacune peut servir une chaîne comme celle d'Anthropic, et avec la chaîne Chrome, l'agent n'a rien à cliquer. Le chargement de la page exécute les quatre étapes.
Sur un portable, le bout de cette chaîne, c'est le compte du développeur sur
le Mac. Ce même compte contient ~/.ssh, ~/.aws/credentials, la connexion
gh, les clés d'API de l'agent lui-même et chaque dépôt cloné. Remplacez la
Calculatrice par un script, et il copie le tout. Avec la chaîne Safari, c'est
le contenu même du navigateur qui est la cible : les cookies et les sessions
de chaque site où le développeur est connecté, à la portée d'une seule page.
La même page dans Bromure Agentic Coding
Bromure Agentic Coding fait tourner Claude Code, Codex,
Grok, Kimi et omp dans des VM Ubuntu sur votre Mac. Chaque machine a aussi son
propre navigateur : un Chromium complet qui s'ouvre dans un panneau à côté du
chat, que vous partagez avec l'agent. L'agent le pilote via un serveur MCP
browser intégré, avec 23 outils pour naviguer, cliquer, lire le DOM, prendre
des captures d'écran et lire la console et le journal réseau. Vous n'avez rien
à configurer.
Le navigateur a une VM pour lui seul
Ce Chromium ne tourne pas sur votre Mac, ni dans la VM de l'agent. Il tourne
dans une VM annexe distincte. La VM de l'agent et la VM du navigateur
partagent un réseau privé pour que le navigateur puisse charger le serveur de
développement lancé par l'agent, et c'est tout ce qu'elles partagent. Un
fichier écrit par l'agent n'est pas sur le disque du navigateur. Même
localhost, dans le navigateur, désigne la propre VM du navigateur.
Lancez la chaîne Chrome d'Anthropic contre ce navigateur. Les étapes une à
quatre fonctionnent comme prévu : le renderer tombe, le bac à sable tombe, et
le code de l'attaquant s'exécute en tant que navigateur. Ce code se trouve
alors dans une VM qui contient un Chromium et rien d'autre. Il n'y a pas de
~/.ssh à copier ni de ~/.aws à lire. Le dépôt, la configuration de l'agent
et ses jetons sont tous dans une autre VM, et votre Mac est derrière une
frontière d'hyperviseur. Les outils de navigateur de l'agent ne partagent pas
non plus de processus avec Chromium : ils l'atteignent par un petit shim qui
parle à l'hôte via vsock. Selon les mots du manuel, « une page hostile ne peut
jamais toucher aux fichiers de l'agent ni à votre Mac ».
Le navigateur oublie
Par défaut, le navigateur est jetable. Son disque est un clone copy-on-write d'une image partagée, supprimé quand le navigateur est démonté. Un navigateur masqué se suspend après une dizaine de secondes et est démonté au bout de cinq minutes, et le suivant démarre d'une image propre. Une charge utile qui atterrit dans la VM du navigateur disparaît avec elle.
Cela couvre aussi le type de chaîne de Safari, celle qui lit les cookies et les sessions au lieu d'exécuter du code. Un navigateur jetable n'a aucune session d'hier. Il contient ce à quoi l'agent s'est connecté pendant cette tâche, et rien de votre navigation quotidienne, parce que votre navigateur de tous les jours est un autre programme, sur une autre machine.
Quand un projet a besoin d'une connexion qui dure, Stay signed in to websites, dans les réglages Browser de la machine, conserve un profil sur un disque chiffré, pour cette machine uniquement. Activez-le pour le site de staging sur lequel l'agent fait ses tests, et laissez-le désactivé sur toute machine pointée vers du code non fiable.
La VM de l'agent ne contient que des substituts
Supposons qu'un attaquant aille plus loin et atteigne la VM de l'agent par un
autre moyen, par exemple un paquet malveillant que l'agent installe en suivant
les instructions de la page. Les clés qui s'y trouvent sont des substituts. Le
jeton GitHub de la configuration de gh et de ~/.git-credentials est un
faux, que le proxy sur votre Mac remplace par le vrai uniquement en route vers
github.com. Un substitut envoyé à tout autre hôte est bloqué avant de quitter
le Mac, et la VM se met en pause avec une alerte qui nomme l'identifiant et sa
destination.
Analyser chaque pull request, sur votre Mac
Anthropic dit aux défenseurs qu'« analyser votre propre code est plus important que jamais ». Le rapport ajoute que l'analyse a sa place au moment de la pull request, parce que résorber l'arriéré « ne résout que la moitié du problème » tant que du nouveau code continue d'arriver.
Bromure Agentic Coding l'intègre d'office. Une automatisation code review surveille un dépôt GitHub avec un agent sur l'une de vos machines et enregistre ce qu'elle trouve sous forme de findings, dédoublonnés d'une analyse à l'autre. Une surveillance peut lancer trois types d'analyse :
- Chaque nouvelle pull request, en examinant ce que la pull request modifie.
- Chaque nouveau commit sur la branche surveillée.
- Une revue planifiée, hebdomadaire, des nouveaux commits depuis la précédente ou du dépôt entier. La base de référence complète avance répertoire par répertoire par ordre de risque, en commençant par les gestionnaires de requêtes, l'authentification et l'analyse des entrées.
N'importe lequel des cinq agents peut la lancer. Chaque revue est rattachée au
commit qu'elle a couvert, et l'agent clôt l'exécution avec findings_done et
un résumé. L'analyse tourne sur votre Mac, avec les identifiants de la
machine, dans sa VM. GitHub est interrogé depuis le Mac toutes les trois
minutes avec le jeton de la machine, et ce jeton n'entre jamais dans la VM. Il
n'y a ni webhooks ni ports ouverts.
Un outil d'analyse de pull requests lit du texte non fiable, écrit par quiconque a ouvert la pull request, et un relecteur sans surveillance tourne avec ses demandes d'approbation désactivées. Bromure fait passer le titre, le corps, l'auteur et les commentaires de chaque pull request par un filtre obligatoire contre l'injection de prompt avant que l'agent ne les voie. Si le modèle PromptGuard n'est pas installé, les exécutions déclenchées par un événement sont bloquées au lieu d'être laissées passer. La revue elle-même tourne dans une VM remplie de substituts. Réglez la politique d'écriture GitHub de la machine sur Read-only dans Guardrails, et le relecteur peut lire tout ce que son jeton autorise, tandis que tout push ou toute écriture REST est refusé sur le Mac. Les findings vont dans Bromure, pas dans le dépôt.
Le navigateur est une VM à part
Le Chromium de l'agent tourne dans une VM annexe. Une évasion du bac à sable atterrit à côté de Chromium, loin du code, des clés et de votre Mac.
Jetable par défaut
Le disque du navigateur est un clone supprimé au démontage. Les charges utiles et les cookies ne survivent pas à la tâche.
Des substituts derrière
La VM de l'agent contient de faux jetons. Les vrais restent sur le Mac et ne sont ajoutés que pour l'hôte auquel ils appartiennent.
Une revue à chaque PR
Les automatisations de revue de code analysent chaque pull request et chaque commit, filtrent le texte des PR contre l'injection et peuvent tourner en lecture seule.
Corriger, analyser, et donner au navigateur sa propre machine
Toutes les failles du rapport sont corrigées, et la première étape est la même que d'habitude : mettez Chrome à jour vers la version 156 ou ultérieure, mettez à jour vos appareils Apple, et corrigez les noyaux qui font tourner des listeners multipath TCP. Anthropic a raison : les défenseurs ont besoin des mêmes modèles que ceux dont les attaquants disposeront bientôt, braqués d'abord sur leur propre code.
Le propos plus large du rapport concerne la prochaine série de failles. Si les modèles savent transformer une poignée de défauts en chaîne fonctionnelle aussi vite, certaines de ces chaînes seront actives avant que le correctif ne sorte. Un agent de code qui navigue toute la journée finira par charger une de ces pages. Dans Bromure Agentic Coding, cette page se charge dans une VM conçue pour être perdue, et votre code, vos clés et votre Mac sont ailleurs.
Pour savoir comment le navigateur Bromure gère les zero-days de navigateur en dehors du coding agentique, lisez Pourquoi les zero-days de navigateur ne disparaîtront pas. Pour une instruction malveillante arrivée jusqu'à un agent par un fichier téléchargé, lisez Le téléchargement donnait les ordres.