加载页面就够了
Anthropic 的 Frontier Red Team 表示,一个未发布的模型发现了浏览器和内核的漏洞,并把它们串成可用的漏洞利用,其中一条在页面加载后几秒内就接管了 macOS 上默认配置的 Chrome。编程代理整天都在打开网页。在 Bromure Agentic Coding 中,代理的浏览器运行在自己的一次性 VM 里,远离代码、凭据和 Mac;代码审查自动化则在你自己的机器上落实 Anthropic 关于扫描每个 pull request 的建议。
四个漏洞,一个页面,几秒钟。这样的漏洞利用链过去需要一支专家团队,如今一个模型就能造出来。你的编程代理所操控的浏览器,每打开一个页面都暴露在这种风险之下。
10 月 27 日,Anthropic 的 Frontier Red Team 发布了一份关于五条漏洞利用链的报告,这些利用链是一个尚未发布的内部研究模型“在初始提示之后”发现并构建的。漏洞利用链把多个漏洞串联起来,让每个漏洞带着攻击越过上一个漏洞无法越过的防线。目标是 Chrome、Safari、Android、Windows 和 Linux。Anthropic 已通过协调披露把五条全部报告给厂商,而昨天报道此事的 The Hacker News 指出,其中没有一条在真实攻击中出现过。
Anthropic 的结论只有一句:“前沿模型有能力发现多个漏洞,并将它们组合成可用的漏洞利用。”
一个页面,四个漏洞
最值得细读的是 Chrome 这条链。它的概念验证从 macOS 上默认配置的 Chrome“在页面加载后几秒内”启动了计算器。计算器是传统的证明:如果漏洞利用能在你的 Mac 上启动一个应用,它就能启动任何东西。
它用了四个漏洞:
- Chrome 的 JavaScript 引擎 V8 中的一个缺陷,让页面能够破坏引擎的内存。
- V8 的第二个缺陷突破了 V8 自身的内存沙箱,让攻击者控制了渲染器,也就是绘制页面的进程。
- CacheStorage 中的一个竞态条件,让该渲染器能读取沙箱外的内存,并摸清权限更高的浏览器进程的布局。
- Chrome 联合登录功能 FedCM 中的一个 use-after-free,让攻击者的代码完全在沙箱之外运行。
Chrome 的沙箱假定渲染器迟早会被攻破,并把损害关在渲染器内部。第三步和第四步推翻了这一点。Anthropic 表示,它已报告 62 个获得 CVE、且在 Chrome 156 时已修复的 Chrome 漏洞,全部被评为严重或高危,其中 13 个是沙箱逃逸,21 个是攻陷渲染器的漏洞。
Safari 这条链从不执行代码。它获得浏览器内存的读写权限,只改一个值就关闭了同源策略(same-origin policy),也就是阻止一个网站读取另一个网站的规则。规则一关,任何页面都能读取 Safari 的历史记录、Cookie 和会话数据,并以已登录的身份向其他网站发送请求。Apple 已在 iOS 和 iPadOS 26.5.2 中修复。
Linux 这条链通过网络、无需登录,就能在任何运行多路径 TCP 监听器的机器上拿到 root shell。泄露一个内核地址用了大约 48 分钟,拿到 shell 又用了五分钟。这个漏洞 CVE-2026-98432 已于 10 月 15 日在上游修复。
你的代理打开的网页比你还多
这些是浏览器漏洞,而编程代理如今是开发者机器上最忙碌的浏览器用户之一。它阅读文档、点开 issue 里的链接、打开软件包的主页、查看搜索结果、加载刚构建好的应用来截图。浏览器 MCP 服务器和浏览器扩展让这一切成了常态:代理操控的是真正的 Chromium,而且往往就是开发者每天早上登录的那个 Chrome 配置文件。
这些页面大多不是开发者自己挑的。GitHub issue 里的一个链接、README 里的一个 URL、搜索错误信息时的第三个结果:任何一个都可能投放像 Anthropic 那样的利用链,而就 Chrome 这条链而言,代理什么都不用点。页面一加载,四个步骤就全部执行完毕。
在笔记本上,这条链的终点是开发者在 Mac 上的账户。同一个账户里有 ~/.ssh、~/.aws/credentials、gh 的登录、代理自己的 API 密钥,以及每一个检出的仓库。把计算器换成一个脚本,它就能把这些全部复制走。若是 Safari 那条链,战利品就是浏览器本身的内容:开发者登录的每个网站的 Cookie 和会话,一个页面就能全部拿到。
同一个页面在 Bromure Agentic Coding 中
Bromure Agentic Coding 在你 Mac 上的 Ubuntu VM 中运行 Claude Code、Codex、Grok、Kimi 和 omp。每台机器还有自己的浏览器:一个完整的 Chromium,以窗格形式打开在聊天旁边,由你和代理共用。代理通过内置的 browser MCP 服务器操控它,有 23 个工具用于导航、点击、读取 DOM、截图,以及读取控制台和网络日志。你什么都不用配置。
浏览器独占一台 VM
那个 Chromium 不在你的 Mac 上运行,也不在代理的 VM 里运行。它运行在另一台独立的 sidecar VM 中。代理的 VM 和浏览器 VM 共用一个私有网络,好让浏览器能加载代理启动的开发服务器,而它们共用的也就只有这个。代理写入的文件不会出现在浏览器的磁盘上。就连浏览器里的 localhost,指向的也是浏览器自己的 VM。
拿 Anthropic 的 Chrome 利用链去打这个浏览器。第一步到第四步都按设计运行:渲染器被攻破、沙箱被攻破,攻击者的代码以浏览器的身份运行。但这段代码此时身处一台只有 Chromium、别无他物的 VM 里。没有 ~/.ssh 可以复制,也没有 ~/.aws 可以读取。仓库、代理的配置和它的令牌全都在另一台 VM 中,而你的 Mac 位于 hypervisor 边界之后。代理的浏览器工具也不和 Chromium 共用进程:它们通过一个经由 vsock 与主机通信的小型 shim 连到浏览器。用手册的话说:“恶意页面永远碰不到代理的文件或你的 Mac。”
浏览器会遗忘
默认情况下,浏览器是一次性的。它的磁盘是共享镜像的 copy-on-write 克隆,浏览器拆除时即被删除。隐藏的浏览器大约十秒后挂起,五分钟后拆除,下一个浏览器则从干净的镜像启动。落进浏览器 VM 的恶意载荷,会随 VM 一起消失。
这也覆盖了 Safari 那类利用链,也就是读取 Cookie 和会话、而不执行代码的那种。一次性浏览器没有昨天的会话。它只保有代理在这次任务中登录的内容,没有任何你日常浏览的东西,因为你日常使用的浏览器是另一台机器上的另一个程序。
当项目需要持久登录时,机器 Browser 设置中的 Stay signed in to websites 会在一块只属于该机器的加密磁盘上保留配置文件。为代理测试所用的 staging 网站打开它,而在任何处理不可信代码的机器上,都让它保持关闭。
代理自己的 VM 里只有替身
假设攻击者更进一步,从别的途径进入了代理的 VM,例如代理照着页面上的指示安装了一个恶意软件包。那里的密钥都是替身。gh 配置和 ~/.git-credentials 里的 GitHub 令牌是假的,你 Mac 上的代理服务器只会在它发往 github.com 的途中换成真的。发往其他主机的替身会在离开 Mac 之前被拦下,VM 也会暂停,并弹出警报,指出是哪个凭据、要发往哪里。
扫描每个 pull request,在你的 Mac 上
Anthropic 告诉防守方:“扫描你自己的代码比以往任何时候都更重要。”报告还补充说,扫描应该放在 pull request 阶段,因为只要新代码不断进来,清理积压“只解决了一半的问题”。
Bromure Agentic Coding 内置了这一功能。code review 自动化会用你某台机器上的代理监视一个 GitHub 仓库,并把发现的问题记录为 findings,在每次扫描之间去重。一个监视可以运行三种扫描:
- 每个新的 pull request,审查该 pull request 的改动。
- 被监视分支上的每个新 commit。
- 定时审查,每周一次,审查自上次以来的新 commit,或整个仓库。完整的基线审查按风险高低逐个目录进行,先从请求处理程序、认证和输入解析开始。
五个代理中的任何一个都能运行它。每次审查都绑定到它所覆盖的 commit,代理会用 findings_done 加一段摘要结束本次运行。扫描在你的 Mac 上、用机器的凭据、在它的 VM 里运行。Mac 每三分钟用机器的令牌轮询一次 GitHub,而这个令牌从不进入 VM。没有 webhook,也没有开放的端口。
pull request 扫描器读取的是打开 pull request 的人所写的不可信文本,而无人值守的审查者运行时会跳过审批提示。Bromure 会在代理看到之前,让每个 pull request 的标题、正文、作者和评论都通过强制的提示注入筛查。如果没有安装 PromptGuard 模型,由事件触发的运行会被阻止,而不是直接放行。审查本身则在一台满是替身的 VM 里运行。在 Guardrails 中把机器的 GitHub 写入策略设为 Read-only,审查者就能读取令牌允许的一切,而任何 push 或 REST 写入都会在 Mac 上被拒绝。findings 发往 Bromure,而不是仓库。
浏览器是另一台 VM
代理的 Chromium 运行在 sidecar VM 中。沙箱逃逸只会落在 Chromium 旁边,远离代码、密钥和你的 Mac。
默认即一次性
浏览器的磁盘是一个在拆除时删除的克隆。恶意载荷和 Cookie 都活不过这次任务。
背后只有替身
代理的 VM 里放的是假令牌。真的留在 Mac 上,只在发往所属主机时才会加上。
每个 PR 都审查
代码审查自动化会扫描每个 pull request 和 commit,筛查 PR 文本中的注入,也能以只读方式运行。
打补丁、做扫描,并给浏览器一台自己的机器
报告中的每个漏洞都已修复,第一步一如既往:把 Chrome 更新到 156 或更高版本、更新 Apple 设备,并给运行多路径 TCP 监听器的内核打补丁。Anthropic 说得对,防守方需要攻击者很快就会拥有的同一批模型,而且要先用来对准自己的代码。
报告更大的论点在于下一批漏洞。如果模型能这么快把一小撮缺陷变成可用的利用链,其中一些利用链会在补丁发布之前就已投入使用。一个整天上网的编程代理,迟早会加载这样的页面。在 Bromure Agentic Coding 中,那个页面是在一台本就准备被丢掉的 VM 里加载的,而你的代码、密钥和 Mac 都在别处。
想了解 Bromure 浏览器在编程代理之外如何应对浏览器零日漏洞,请阅读为什么浏览器零日漏洞不会消失。关于一条通过下载文件送到代理手上的恶意指令,请阅读下达命令的是那个下载文件。