系统:运行中
← 返回所有攻击
DEFENSE MEDIUM NEW

不可信内容遮蔽:面向 Web 智能体的可证明注入防御

2026 年 7 月的一篇论文修复了 Web 智能体在读取渲染页面时失去的信任边界——遮蔽 DOM 中的不可信区域,并将其转交给类型受限的模型处理,从构造上阻断提示注入。

2026-07-07 // 7 min affects: claude-sonnet-4-5, claude-sonnet-4-6, gpt-5-4, claude-in-chrome

这是什么?

2026 年 7 月 6 日,Kristina Nikolić(苏黎世联邦理工学院 ETH Zurich)、Egor Zverev(ISTA)、Javier Rando(Anthropic / ETH Zurich)、Matthew Jagielski(Anthropic)、Edoardo Debenedetti 与 Florian Tramèr(ETH Zurich)在 arXiv 发布了 Untrusted Content Masking for Web Agents with Security Guarantees。论文提出了一种防御方法——不可信内容遮蔽(Untrusted Content Masking,UCM)——它为 Web 浏览智能体提供针对提示注入控制流劫持的可证明保证,同时仍允许智能体读取并操作页面。

出发点是一个已知的缺口。凡是带有形式化保证、能对抗提示注入的防御,都依赖于在可信指令不可信数据之间做严格隔离。在基于文本的工具调用 API 中,这条边界是天然存在的:智能体读取的是函数接口,而非原始的不可信载荷。Web 智能体没有这份便利——它必须观察渲染后的页面,而正如作者所言,页面「将可信内容与不可信内容交织在一起」。这种结构性纠缠瓦解了保证所依赖的信任边界。UCM 试图在浏览器内部重建这条边界。本文是关于一种防御方法的同行评审学术研究;此处不复现任何可用的漏洞利用。

工作原理

关键观察是:页面的 DOM 本身已编码了足够的结构信息,可以在不读取内容的前提下区分可信区域与不可信区域。UCM 在不可信区域到达智能体之前就将其遮蔽,把每个区域替换为一个带标签的占位符,保留布局,并在可用时保留语义标签(advertisementuser commentreview)以及元素 ID。智能体看到完整的可信页面及其结构,却从不接触攻击者控制的文本或图像。

当某项任务确实需要某个不可信值时,智能体仍然不去读取它。它会查询一个隔离的隔离模型(Quarantined Model,Q-Model):引用被遮蔽元素的 ID,用自然语言提问,并声明一个取自固定集合的返回类型——boolintfloatdateenum。Q-Model 读取被隐藏的内容,返回一个受类型约束的答案。

渲染页面
   ├── 可信区域 ─────────────────────► 智能体(完全可见)
   └── 不可信区域
          │  被替换为带标签的占位符 [#c12: "user comment"]

   智能体需要该值? ──► 询问 Q-Model:「#c12 是五星好评吗?」-> bool

   Q-Model 读取隐藏文本,返回:  true
          │  (bool 无法携带 "navigate to evil.com")

   被注入的指令无法传播进智能体的控制流

由于布尔值或整数无法夹带自由文本指令,无论注入手法多么巧妙,控制流劫持都在构造层面被阻断。谁来划定边界?主动型站点所有者直接为不可信区域打标签——作者发现,每个站点 15 到 30 个 CSS 选择器就足以覆盖 GitLab、Booking.com 和 Reddit。对于什么都不提供的被动型所有者,则由一个 LLM 从已清除内容的 DOM(保留结构与标签、删除全部文本,使打标签者本身无法被注入)推断边界,并输出 CSS 选择器。

为何重要

关键在数字。面对施加了强化攻击的 WASP 基准,UCM 在 Claude Sonnet 4.5、Claude Sonnet 4.6 和 GPT-5.4 上均达到 0% 的攻击成功率。可用性得以保持:在十套定制任务集上,被遮蔽的智能体与未防护的智能体表现相当,成本开销为 1.05×–1.84×——而且约 15% 的任务实际上更便宜,因为更清爽的页面更易于导航。在真实的 WebArena GitLab 任务中,类型受限的 Q-Model 解决了大多数情形,而一个可选的、经用户批准的字符串回退机制则恢复了完整的未防护可用性。

这条架构层面的教训延续了致命三要素等既有研究。启发式过滤器可能被自适应攻击者击破;此前的有保证防御以让智能体对页面内容失明为代价换取保证,从而牺牲了可用性。UCM 则反其道而行,消除了攻击面——不可信内容从不进入智能体的上下文——同时让智能体照常运行其推理与行动循环。

防御建议

对于构建或加固计算机使用型智能体的团队而言,本文给出的是一套具体范式,而非又一个过滤器。

在 DOM 层而非 token 流上划定信任边界。从结构判断何为可信——在读取任何不可信文本之前——正是隔离得以稳固实施的原因,这不同于必须先摄入载荷的关键词或分类器过滤器。

让不可信读取经由一个隔离的、类型受限的模型。强制 Q-Model 以 bool/int/date/enum 作答,正是阻止被注入指令以控制流形式返回的机制。自由文本提取应保留给显式的用户批准路径。

留意残余的数据流风险。UCM 保证的是控制流完整性,而非取值的正确性:一个类型正确却由攻击者选定的答案仍可能造成误导。作者通过在全新且隔离的 Q-Model 调用中查询每个不可信元素来约束此风险,从而使聚合操纵需要攻击者控制很大一部分输入;并将多个正向匹配标记为篡改信号。请配合动作级策略与对敏感操作的用户确认一并使用。

明确信任锚点。该保证假设站点所有者诚实且打标签正确;一个彻底恶意的站点无论如何都不安全,而活动内容缺陷(逃逸出已标注区域或在运行时改写 DOM 的 XSS)被明确排除在范围之外。

状态

项目详情
披露arXiv 预印本 2607.05277 v1,2026 年 7 月 6 日发布(CC BY 4.0)
类别防御——通过 DOM 遮蔽 + 隔离的类型化模型,对 Web 智能体提示注入实现可证明的控制流完整性
测试对象智能体:Claude Sonnet 4.5、Claude Sonnet 4.6、GPT-5.4 · Q-Model:Claude Sonnet 4.5
报告结果在强化 WASP 上 0% ASR;可用性保持;成本开销 1.05×–1.84×
边界标注主动型所有者:每站点 15–30 个 CSS 选择器 · 被动型所有者:在已清除内容的 DOM 上进行 LLM 推断(F1 0.84–0.997)
已知局限数据流攻击(类型正确但取值错误);诚实所有者 + 正确标注的假设;XSS / 活动内容不在范围内
代码github.com/ethz-spylab/untrusted-content-masking

Sources