Agent 安不安全,到底看模型还是看框架?复旦大学等团队把网页 Agent 拆成四段执行流程,造了 WebTrap Farm 做对照实验。结果两头都难堪:任务完成率最高的 Skyvern 2.0 防御成功率只有 58.01%,防御最强的 Agent-E 完成率只有 61.33%。更强不等于更安全。
论文:Harness Matters: Measuring and Dissecting Security Resilience in Web Agents
机构:复旦大学、上海创智学院、中关村实验室、上海市浦东新区密码研究院
代码:https://github.com/Agrfeblve/WebTrapFarm
网页 Agent 的工作方式是:理解目标、感知网页、规划动作、落地成浏览器操作。这四步不由模型一手包办,中间隔着一层执行外壳,论文叫它 harness,它承担大量判断:用户那句话什么意思、网页用文本还是截图、一步动作靠规则还是模型选、异常怎么重试。这些选择直接决定 Agent 遇袭时的行为。
已有研究承认「Agent 安全不只看后端模型」,但很少量化框架贡献了多少。原因不难理解:换框架要重写集成、统一日志、跑同一批任务,工程量极大,结论容易被实现细节污染。
WebTrap Farm 就是想把这个量测出来。它先给出一套框架抽象,再按抽象造评测环境,最后用统计方法把「框架效应」和「模型效应」分开。
抽象是四段式:目标理解把用户指令转成结构化目标,网页感知把页面表示成文本或截图,推理规划决定下一步做什么,动作执行把规划落地成点击、输入、下载、授权。
划分有实测依据。论文调查 68 个 GitHub 项目:目标理解上 85.0% 用 LLM 解析意图、15.0% 直接转发原文;网页感知上 67.7% 用文本、39.8% 用多模态;推理规划上 73.0% 用单控制器、27.0% 用多角色;动作执行上 83.8% 用规则映射、16.2% 用 LLM 选择。这些偏好就是安全性的来源或漏洞。
造这样的评测,最大的难点不是攻击手段,是测量本身。论文列了三道坎。
第一道是攻击覆盖不全。既有数据集各有侧重:有的只做恶意提示,有的只做提示注入,有的只做欺骗界面,投递方式与内容也窄,跨框架比较时结果容易绑在某批特定提示上。
WebTrap Farm 按攻击面切两条线。用户侧攻击来自恶意指令,压的是目标理解、推理规划、动作执行三段;网页侧攻击来自页面内容或界面设计,压的是网页感知、推理规划、动作执行三段。每条线内部再变攻击目标、方法、内容,避免过拟合到单一类型。
第二道是能力失败被误判成安全防御,这是最隐蔽的一道。Agent 没被攻击成功,可能因为它识别风险并拒绝,也可能因为压根不会用这个网站、点错按钮、填错表单。后者是能力不足,不是安全性。
解法是配对校准。每个攻击任务配一个良性任务,两者页面结构、交互路径一致,只是目标不同。执行完比两者的结果,就能把三种结局分开:攻击成功、防御成功、能力失败。只有在前两种里才计入安全指标,能力失败单独剔除。
第三道是跨框架集成成本高。每个框架有自己的日志、重试与浏览器控制方式。WebTrap Farm 把所有框架统一到一套任务格式与执行监护上,不改核心架构、推理逻辑与内置安全机制,全按官方默认配置。
采样温度设为 0,每个任务要求一次完整执行,被限流或网络问题中断的运行重试到自然终止。

指标体系的设计是这份工作最扎实的部分。三个量都做了同一件事:把能力失败从分母剔掉。
攻击成功率是
ASR = |{ t ∈ 𝒯 : Outcome_t = 攻击成功 }| / |{ t ∈ 𝒯 : Outcome_t ≠ 能力失败 }|
分母不是全部任务,而是「模型能够完成的任务」。这一步修正很关键,否则一个弱框架会因为大量任务做不完而显得「攻击成功率低」。
防御成功率是对称的
DSR = |{ t ∈ 𝒯 : Outcome_t = 防御成功 }| / |{ t ∈ 𝒯 : Outcome_t ≠ 能力失败 }|
任务完成率则反映能力
TCR = |{ t ∈ 𝒯 : Outcome_t ≠ 能力失败 }| / |𝒯|
三个量一起看才有意义:只看 DSR 会奖励「不作为」,只看 TCR 会奖励「照做」。
论文还加了一个更细的量:条件防御成功率,按组件逐段统计防御发生在哪一段。算法是沿偏序找最早成功点
(i*, j*) = min_{𝒬} { (i, j) ∈ 𝒬 : S(i,j) = 1 }
偏序集 𝒬 按「组件顺序优先、同类内顺序次之」排列,S(i,j) 表示第 i 段第 j 个组件是否阻断了攻击。它回答「防御发生在哪一环」。对应还有一个归因量,判断某段是否为「首次成功」的转折点
(i*, j*) = max_{𝒬} { (i, j) ∈ 𝒬 : S(prev(i,j)) = 0 ∧ S(i,j) = 1 }
条件 DSR 的定义是
Conditional_DSR(j) = |D_j| / ( |𝒯_valid| − Σ_{k<j} |d_k|="" )<="" span="" style="margin: 0px; padding: 0px;">
D_j 是在第 j 个组件首次防住的任务集合,𝒯_valid 是剔除能力失败后的任务集。分母减去前面组件已经防住的部分,所以这个量测的是「轮到这一段时还剩多少能防」。

评测集有六个开源框架:SeeAct、Browser-Use(文本版与视觉版)、Agent-E、Skyvern 1.0 与 2.0,选的标准是 GitHub 星数超一千或来自代表性论文,都具备基本任务完成能力。另有 Gemini Computer Use 与 Claude Computer Use 两个商业 Agent,用自带集成模型,不换后端。
后端模型七个,用来隔离框架效应:GPT-4o、GPT-5.1、GPT-5.2、Claude Opus 4.5、Claude 3.7 Sonnet,加两个开放权重的 Qwen3-VL(30B-A3B 与 235B-A22B)。
用意是分清两种效应:同一框架换模型跑,差异随模型走就是模型效应;同一模型换框架跑,差异随框架走就是框架效应。两者都跑才能估交互项。
结果分三块。第一块是脆弱性。SeeAct 三项为 50.00%、49.37%、50.59%,都在半百上下;Browser-Use 文本版 31.19%、35.89%、41.27%,视觉版 37.40%、40.95%、34.91%;Agent-E 更低,22.77%、25.46%、22.48%;Skyvern 1.0 最低,3.57%、8.59%、16.13%;Skyvern 2.0 又回到 35.25%、40.38%、39.60%。
这个分布否掉了「新一代更安全」的直觉——Skyvern 2.0 比 1.0 差得多。
第二块是模型与框架效应。两者都显著,交互项也显著(p < 10⁻³)。论文做了极端重标注检验:把能力失败按最保守与最激进两种方式重新归类,三个效应依然显著(p < 10⁻³⁹),说明结论对标签口径不敏感。
模型效应有个反直觉例子。Claude Opus 4.5 安全对齐做得很好,整体 DSR 77.10%,但在 Agent-E 框架里只有 75.19%,低于 GPT-4o 的 83.79% 与 Qwen3-VL-235B 的 82.16%——框架一换,安全性掉到别人下面。
第三块是能力与安全的解耦,这组数据最刺眼。Skyvern 2.0 的 TCR 是 85.25%,六个框架里最高;但它的 DSR 只有 58.01%,倒数第二。Agent-E 反过来:TCR 61.33%,DSR 79.76%,安全性第一。
一个完成率 85% 的框架,安全性只有 58%;一个安全性 80% 的框架,完成率只有 61%。这个反向关系说明:能把网页操作做得更可靠的框架,也可能把不安全动作更可靠地做完。
第三块还有个更尖锐的发现:朴素攻击的威胁不比显式攻击小。页面里没塞任何攻击内容的任务,成功率有时反而更高。这意味着部分不安全事故不是被外部内容诱发,而是框架默认行为导致的,论文称之为框架内在脆弱性。

条件 DSR 的逐段分析给出了可直接用于工程的结论。
用户侧攻击上,第一段目标理解里 Agent-E 的 LLM 目标解释器拿到 82.71%,是所有组件最高的;原始提示转发在这一段是 0.00%——恶意指令被原样传到下游,这一环根本没有防御。第三段推理规划上,单控制器规划器在 64% 到 70%,多角色在 45% 到 70%,说明分工本身不带来安全,关键看规划环节是否含风险判断。第四段最一致:所有框架的规则映射落地器都是 0.00%,因为它只负责把「点这个按钮」翻译成浏览器操作,不判断该不该点;换成 LLM 落地器后是 26.94%(SeeAct)与 23.51%(Skyvern 2.0),有但不高。
这组数字的含义是:防御的有效位置在前面,防守放在动作落地那一环基本无效。这个判断对工程有直接指导——想加安全层,该加在目标理解与规划环节,而不是在最后一刻拦动作。
消融实验固定后端为 GPT-4o,用户侧与网页侧各抽 100 个任务,单独换组件看效果,排除了模型变化的混淆。
三个原因。第一,配对校准把「不会」和「不敢」分开了。网页 Agent 评测里最容易被高估的就是安全性——连表单都填不对的 Agent,攻击也不可能成功。配对任务用同构页面与路径、只换目标,把能力差异控住。这一条不成立,后面所有数字都不能信。
第二,四段抽象让归因成为可能。如果不拆段,只能说「这个框架不安全」;拆了段,就能说「不安全的根源在原始提示转发没有防线」或「规则映射落地器不承担安全判断」。后者才是能改的东西。
第三,统计设计把两个混淆源拆了。框架与模型天然混淆——不同框架常绑定不同推荐模型。交叉设计加交互项估计,配合极端重标注检验,才让「框架独立影响安全性」立得住。
一句话总结这份工作:它把「Agent 安不安全」从一个关于模型的模糊判断,拆成了关于框架四段的、可归因的、剔除能力失败后的具体数字。
边界要说清楚。六个开源框架加两个商业 Agent 覆盖主流但不完整,WebTrap Farm 号称可扩展,实际验证只在有限集合上。攻击任务从既有数据集改编,统一了格式但新颖度受限于原始数据。后端模型版本偏新(GPT-5.2、Claude Opus 4.5),API 行为可能随提供商更新,复现性依赖版本冻结。
评分口径有混合:提示注入与欺骗界面用规则评分(查页面事件是否触发),恶意提示用 GPT-4o 当判官。判官做了人工验证——随机抽 10%(672 条)双人标注,标注者间一致率 99.26%,判官与人工共识一致率 99.55%。一致性很高,但仍是单一判官。
稳定性做了三次重复,固定 Qwen3-VL-235B 与 GPT-5.1 两个后端,平均标准差在报告范围内,但没有逐框架的方差明细。
对做网页 Agent 的团队来说,最实用的是拿条件 DSR 做体检:目标理解段为 0(用了原始提示转发),意味着不管后端模型多强,恶意指令都会直达下游,这是换模型补不了的架构缺口;只在动作执行段设防,防住的也只是最后一厘米。加固顺序应是先目标理解、再规划、最后动作拦截。
点击小程序链接加入:大模型技术知识星球

欢迎关注我们的公众号【大模型技术】,每日AI相关新闻推送、arxiv论文分享