浏览器 Agent 与长程网页任务 本节摘要:ChatGPT agent(2025 年 7 月)把 Operator 与 deep research 合并成一个浏览器/终端 Agent,在 BrowseComp 上创下 68.9% 的 SOTA;OpenAI 在 8 月 31 日关停了独立 Operator——产品层的整合。Anthropic 收购 Vercept 把 Claude Sonnet 在 OSWorld 上从不到 15% 拉到 72.5%;WebArena-Verified(ServiceNow,ICLR 2026)修掉了原 WebArena 11.3 个百分点的假阴性率,并发布 258 题的 Hard 子集。
本节摘要:ChatGPT agent(2025 年 7 月)把 Operator 与 deep research 合并成一个浏览器/终端 Agent,在 BrowseComp 上创下 68.9% 的 SOTA;OpenAI 在 8 月 31 日关停了独立 Operator——产品层的整合。Anthropic 收购 Vercept 把 Claude Sonnet 在 OSWorld 上从不到 15% 拉到 72.5%;WebArena-Verified(ServiceNow,ICLR 2026)修掉了原 WebArena 11.3 个百分点的假阴性率,并发布 258 题的 Hard 子集。数字是真的,攻击面也是真的:OpenAI 准备就绪负责人公开说,针对浏览器 Agent 的间接提示注入「不是一个能完全修补的 bug」。已记录的 2025-2026 攻击包括 Tainted Memories(Atlas CSRF 形态)、HashJack(Cato Networks)、Perplexity Comet 的一次点击劫持。本节命名攻击面、命名基准全景(BrowseComp/OSWorld/WebArena-Verified),并建模一个最小间接提示注入场景,让你能在第 14、18 节里讨论真实防御。
对应原课程:Phase 15 · Lesson 11 ·
browser-agents(原英文phases/15-autonomous-systems/11-browser-agents/docs/en.md)。
阅读完本节,你应当能够:
浏览器 Agent 是一个读不可信内容、并采取有后果动作的长程 Agent。Agent 访问的每个页面都是用户没写的输入;每个页面上的每个表单都是潜在的命令通道。2025-2026 的攻击语料显示这不是假设:Tainted Memories 让攻击者通过构造的页面把恶意指令绑定到 Agent 的记忆;HashJack 把命令藏在 Agent 访问的 URL 片段里;Perplexity Comet 的劫持一次点击就中。
防御图景令人不安。OpenAI 准备就绪负责人把那句话大声说了出来:间接提示注入「不是一个能完全修补的 bug」。因为攻击住在 Agent 的读-动边界上,而这个边界在架构上是模糊的——模型读的每一个 token,原则上都可能被当成指令读。
⚠️ 核心不可修补性:Agent 必须读不可信内容才能干活;读的任何内容都可能含指令;跟的任何指令都可能偏离用户真实请求。防御只能抬高攻击成本、缩小爆炸半径,关不掉这一类。
原课程 code/main.py 把一次迷你浏览器 Agent 运行建模为对三个合成页面的访问:一个良性、一个在可见文本里有直白提示注入块、一个在 URL 片段里有注入(不可见但在 Agent 上下文里)。脚本展示:(a) 朴素 Agent 会做什么、(b) 读/写边界抓住什么、(c) 消毒器抓住什么、(d) 两者都抓不到什么。
def browser_step(page, task, trust): content = fetch(page.url) # 读: 永远无后果 sanitized = strip_known_bad(content) # 消毒器: 减掉容易攻击 if indirect_injection_detected(sanitized): trust.degrade(page.url) action = model.decide(sanitized, task) if action.is_write: # 写: 有后果 if not trust.within(page.url): return HITL(action) # 内容来自信任边界外 -> 人审 return execute(action)
ChatGPT agent(OpenAI):2025 年 7 月发布,统一 Operator(浏览)与 Deep Research(多小时研究)。8 月 31 日关停独立 Operator。BrowseComp SOTA 68.9%;OSWorld 与 WebArena-Verified 上数字强劲。
Claude Sonnet + Vercept(Anthropic):Vercept 收购聚焦计算机使用能力,把 Claude Sonnet 在 OSWorld 上从 <15% 拉到 72.5%。Claude Computer Use 作为工具 API 出货。
Gemini 3 Pro + Browser Use(DeepMind):Browser Use 集成出货计算机使用控件;FSF v3(2026 年 4 月,第 20 节)专门跟踪 ML R&D 域的自主性。
WebArena-Verified(ServiceNow,ICLR 2026):修了一个有据可查的问题——原 WebArena 有约 11.3% 假阴性率(被判失败、实则解决)。Verified 用人工精选成功判据重新评分,加 258 题的 Hard 子集。
| 基准 | 量什么 | 跨度 |
|---|---|---|
| BrowseComp | 时间压力下在开放网上找特定事实 | 分钟 |
| OSWorld | Agent 操作完整桌面(鼠标、键盘、shell) | 几十分钟 |
| WebArena-Verified | 模拟站点里的交易式网页任务 | 分钟 |
| Hard 子集 | 带多页状态转移的 WebArena-Verified 任务 | 几十分钟 |
不同轴。高 BrowseComp 说明 Agent 能找事实,不说明它能订机票。OSWorld 接近「在我桌面上能不能用」;WebArena-Verified 接近「能不能走完一个流程」。任何生产决策都需要匹配任务分布的基准。
#fragment 或查询串含命令,从不可见渲染,却在 Agent 上下文里。攻击与 Agent 的能力同构。Agent 必须读不可信内容才能干活;读的任何内容都可能含指令;跟的任何指令都可能偏离用户真实请求。防御(信任边界、分类器、工具白名单、关键动作 HITL)抬高攻击成本、缩小爆炸半径,关不掉这一类。
这与第 08 节 Löb 定理同形:Agent 不能证明下一个 token 安全;它只能搭一个让不安全 token 更可检测的系统。
| 维度 | 类别 | 含义 |
|---|---|---|
| BrowseComp | 事实查找 | 分钟级;不等于能完成交易 |
| OSWorld | 桌面操作 | 几十分钟;接近「在我桌面能用」 |
| WebArena-Verified | 交易流程 | 分钟级;Hard 子集跨多页状态转移 |
| 间接注入 | 读侧 | 不可修补,与能力同构 |
| 记忆绑定 | 持久侧 | 跨会话;靠金丝雀检测 |
| CSRF/一次点击 | 写侧 | 靠读/写边界 + HITL 抬高成本 |
💡 基准选择守则:用匹配任务分布的基准。订机票流程看 WebArena-Verified 类,不是 BrowseComp。任何用错基准的选型决策都是误导。
outputs/skill-browser-agent-trust-boundary.md 给一次拟部署的浏览器 Agent 划定范围:它触碰哪些信任区、被授权写什么、首次运行前必须就位的防御(读/写边界、会话隔离、消毒器、关键动作 HITL、记忆金丝雀)。它专门抓「能力够了但信任边界没划」的部署。
code/main.py 把读/写边界与消毒器做成可独立开关,适合演示「合成页面中,消毒器抓到但读/写边界没抓到的是哪类、反之又是哪类」。
跑 code/main.py:指出消毒器抓到但读/写边界没抓到的攻击,以及只有读/写边界抓到的攻击。
扩展消毒器检测一类 HashJack 式 URL 片段注入,在带合法片段的良性 URL 上测假阳性率。
挑一个你熟悉的真实浏览器 Agent 工作流(如「订机票」),列出每个读和每个写,标注哪些写需要 HITL 及原因。
读 WebArena-Verified ICLR 2026 论文,找出一类原 WebArena 评分不可靠的任务,解释 Verified 子集如何解决。
为浏览器 Agent 场景设计一条记忆金丝雀:你存什么、存哪、什么触发警报?
下一节,我们处理长程运行的另一根支柱——持久执行(durable execution),看 Agent 状态如何在崩溃、重启、跨会话之间存活,以及这为何同时是能力来源与记忆绑定攻击的面。