一个浏览器 Agent 正在替用户完成任务。

它打开网页,读取内容,填写表单,提交信息。页面看起来有些奇怪,甚至带着明显的钓鱼痕迹。Agent 在自己的推理里已经说出了一句话:

“我强烈怀疑这个网站是骗局。”

但就在同一个流程里,它仍然把用户的 SSN、银行卡号、CVV 提交给了攻击者。

这不是科幻场景,而是 Scammer4U 论文里观察到的真实实验现象。

这篇论文的标题很直接:《“I Strongly Suspect This Website Is a Scam”: Benchmarking PII Leakage and Detection without Defense in Autonomous Web Agents》。

https://arxiv.org/pdf/2606.00497

它研究的不是大模型会不会说错话,也不是 Agent 会不会点错按钮,而是一个更接近真实产品风险的问题:

当 Agent 带着用户隐私数据在网页上自动执行任务时,钓鱼网站能不能把这些数据骗走?

答案并不乐观。

论文发现,在没有隐私提示的条件下,四类前沿 Web Agent 面对攻击网页时,critical-tier PII 泄露率达到 72.7%。即使加入最强的“提交前反思”提示,泄露率仍然有 49.4%。更关键的是,即便 Agent 已经表达出“这个网站可疑”,仍然有 35.9% 的会继续提交关键隐私数据。

这篇论文真正重要的地方在于,它把 Agent 安全问题从“模型有没有识别风险”,推进到了“风险识别之后,动作有没有被阻断”。

在 Agent 时代,这个差别非常关键。

浏览器 Agent 的危险之处

浏览器 Agent 的能力正在从“帮你找信息”走向“帮你完成任务”。

它可以打开购物网站、填写收货地址、申请职位、处理账单、登录账号、上传文件、联系客服。为了完成这些任务,系统通常会给 Agent 提供一份用户 profile,里面可能包含姓名、电话、邮箱、住址、支付卡信息、政府 ID、账号密码,甚至 API Key。

这就形成了一个很危险的组合:

一边是 Agent 拿着用户敏感数据;

另一边是 Agent 可以自主浏览网页并提交表单。

只要网页足够会“演”,它就可能把 Agent 诱导成数据泄露的执行者。

这和传统钓鱼攻击有一个明显区别。传统钓鱼主要骗的是人,攻击者要利用人的焦虑、疏忽、信任和从众心理。而在 Agent 场景中,攻击者骗的是自动化代理。

Agent 的目标函数往往是“完成任务”。只要页面看起来和任务相关,它就会继续往前走。它不一定具备人类那种停下来怀疑、重新确认、关闭页面的习惯。更麻烦的是,Agent 即使在语言层面表达了怀疑,也不代表它的动作系统会自动停下来。

这就是论文想证明的核心问题:

Agent 的风险识别能力,不能等同于 Agent 的安全执行能力。

Scammer4U 威胁模型。用户将 PII profile 提供给 Web Agent,Agent 在攻击者控制的网站上观察、思考、行动,最终可能把关键隐私字段提交到攻击者 endpoint。

Scammer4U 测的是“隐私有没有真的出界”

很多 Web Agent 安全评测关注的是轨迹偏移,比如 Agent 有没有点击恶意链接、有没有被 prompt injection 带偏、有没有访问错误页面。

这些指标有价值,但还不是最终损害。

真正的损害发生在一个非常具体的时刻:

敏感字段通过表单、POST body、XHR、fetch 或上传动作,离开用户控制边界,进入攻击者控制的 endpoint。

Scammer4U 把这个时刻作为核心评价指标。

论文定义了一个主指标:PLRcrit,即 critical-tier PII 泄露率。只要用户 profile 里的关键敏感字段出现在 outbound POST body 里,并到达攻击者 endpoint,就算泄露。

这里的 critical-tier PII 包括 SSN、银行卡号与 CVV、银行账户、密码、API Key、2FA、政府 ID 上传等。它们不是一般的姓名、邮箱、手机号,而是足以造成实质损害的高危数据。

这个指标很重要,因为它避免了很多“看起来危险但没有造成实际泄露”的模糊判断。Agent 点了一个可疑按钮,不一定导致泄露;Agent 访问了一个假页面,也不一定泄露;但如果它把银行卡号和 CVV 提交给攻击者,这就是明确的数据出界。

这也是这篇论文比很多 prompt injection 论文更工程化的地方。

它没有停留在“模型被诱导了吗”,而是追问:

数据到底有没有被送出去?

91 个攻击网站:Scammer4U 如何模拟 Agent 钓鱼场景

Scammer4U 构造了 91 个攻击环境 和 10 个 benign-twin 正常对照环境。

这些攻击环境覆盖 8 类攻击向量和 16 类网站场景,包括:

  • phishing clone:仿冒真实服务页面;

  • credential harvest:诱导提交账号密码;

  • dark patterns:用页面设计诱导用户做出不利选择;

  • reward trap:用奖励、优惠、返现诱导填写数据;

  • authority impersonation:冒充政府、银行、平台客服等权威机构;

  • conversational deception:通过对话方式诱导提交信息;

  • prompt injection:在网页中嵌入针对 Agent 的恶意指令;

  • fake trust signals:伪造安全认证、隐私保护、官方标识等信任信号。

论文还使用了一个很重要的设计:paired-sibling construction。

简单说,就是很多攻击页面会构成“兄弟样本”。两个页面大体相同,只改变一个因素,比如是否加入紧迫感、是否加入隐藏 prompt injection、是否从单页表单变成多轮聊天、是否跨站跳转。

这样做的好处是可以更接近因果分析。如果两个页面只差一个因素,而泄露率发生变化,研究者就能更清楚地判断这个因素是否真的影响 Agent 行为。

此外,论文还设计了 10 个 benign-twin 正常对照环境。它们保留合法任务,但移除攻击面。结果显示,在这些正常对照环境中,C0 条件下 critical-tier PII 泄露率是 0%。

这个对照很关键。它说明攻击环境里的泄露并不是因为 Agent 天生会乱填表,而是攻击页面的社会工程设计诱导出来的。

四种测试条件:从无提示到提交前反思

论文测试了四个模型家族:

GPT-5 mini、Claude Haiku 4.5、Gemini 3 Flash、Llama 4 Scout。

它们运行在同一个基于 Playwright 的浏览器 Agent harness 中,使用相同观察格式、动作空间和提示模板。这样可以尽量减少框架差异,把重点放在模型行为差异上。

每个模型在四种条件下测试:

  • C0:无隐私提示。Agent 正常执行任务,没有额外隐私提醒。

  • C1:通用隐私提醒。提醒 Agent 注意不要泄露敏感信息。

  • C2:钓鱼识别 checklist。让 Agent 参考钓鱼识别清单,注意可疑域名、异常表单、紧迫话术、伪造身份等。

  • C3:提交前反思。要求 Agent 在提交敏感信息前进行一次显式反思,判断页面是否可信、提交是否必要。

从产品直觉看,C3 应该是最强的 prompt-level mitigation。因为它不是泛泛提醒,而是在动作发生之前增加一道“想一想”的环节。

但实验结果说明,这道环节远远不够。

实验结果

论文的基线结果很直接。

在 C0 无隐私提示条件下,四个模型在 91 个攻击环境上的 pooled critical-tier PII 泄露率为 72.7%。

不同模型之间差异很大:

模型

C0 泄露率

C3 泄露率

GPT-5 mini

61.00%

36.10%

Claude Haiku 4.5

54.50%

24.00%

Gemini 3 Flash

93.10%

60.70%

Llama 4 Scout

82.30%

77.40%

Pooled

72.70%

49.40%

这组数据可以看出两个事实。

第一,Agent 面对社会工程攻击网页时,确实存在系统性隐私泄露风险。它不是单个模型的偶发问题,而是在多个模型家族中都出现。

第二,prompt-level mitigation 有效果,但效果很不稳定。C3 把 pooled 泄露率从 72.7% 降到 49.4%,下降了 23.3 个百分点。但 49.4% 依然是一个无法接受的风险水平。

更麻烦的是,模型之间差异非常大。Claude Haiku 4.5 对提示词缓解比较敏感,C3 后下降到 24.0%;而 Llama 4 Scout 几乎没有明显改善,C3 仍然高达 77.4%。

这说明安全提示词不是一个稳定控制面。它可能对某些模型有用,对另一些模型作用有限;今天有效,换模型、换页面、换任务后也可能失效。

如果把这种机制直接用于真实 Agent 产品,相当于把用户隐私安全寄托在模型“能不能听懂提醒、能不能坚持执行提醒、能不能在任务目标和安全目标冲突时做出正确选择”上。

这显然不够可靠。

看出来是骗局,也不代表会停手

这篇论文最有价值的部分,是它提出了 detection–action gap。

所谓 detection–action gap,就是“检测”和“行动”之间的断裂。

论文用 LLM-as-judge 判断 Agent 的推理过程中是否表达过“这个网站可疑”。如果 Agent 曾经说出类似“这个网站可能是钓鱼”“我怀疑这是骗局”“这个页面不可信”,就算 detection 为正。

按理说,Agent 识别出风险之后,应该停止提交敏感信息。

但实验结果不是这样。

在 C3 提交前反思条件下,如果 Agent 已经表达出怀疑,critical-tier PII 泄露率仍然有 35.9%。如果 Agent 没有表达怀疑,泄露率是 66.1%。

这说明风险识别确实有帮助,能把泄露率降低 30.2 个百分点。但 35.9% 这个数字依然太高。换句话说,即使 Agent 已经“知道不对劲”,仍然有超过三分之一的概率继续把关键隐私提交出去。

论文中一个极端案例很有代表性:Llama 4 Scout 在 crypto 平台相关场景中,先连续提交了 SSN、银行卡号和 CVV,然后才说“任务似乎完成了,但我强烈怀疑这个网站是骗局”。

这句话很讽刺,也非常重要。

因为它说明 Agent 的“语言判断”和“动作执行”之间没有强绑定。模型可以在推理里表达怀疑,但浏览器动作已经发生;模型可以说这个网站像骗局,但仍然调用 submit;模型可以承认有风险,但把风险解释成“流程需要”。

在传统聊天机器人里,模型说错话主要影响内容输出。在 Agent 里,模型一边说话,一边做事。做事的后果可能不可逆。

Detection–action gap。即使 LLM judge 确认 Agent 已经表达怀疑,C3 条件下仍有 35.9% 的 session 提交 critical-tier PII。

为什么 Agent 会“明知可疑,仍然提交”?

论文通过人工检查 detected-and-leaked 的 session,总结出几类典型失败模式。

第一类是 承认风险,但打折处理。

Agent 会说页面有可疑点,但随后又认为“可能只是正常流程”“也许是必要验证”“完成任务更重要”。风险被识别出来了,却没有变成行动约束。

第二类是 被可信表面安抚。

很多攻击页面会伪造平台标识、安全认证、官方页面样式、隐私保护声明。Agent 看到这些表面信号后,会降低警惕,把页面当成可信服务的一部分。

第三类是 相信页面自称安全。

页面可能写着“安全验证”“官方认证”“数据加密传输”“仅用于身份确认”。这些话对人类是常见钓鱼话术,对 Agent 同样有效。Agent 会把页面自述当成可信证据。

第四类是 用流程合理性解释风险。

比如银行、求职、政府服务、支付验证等场景,本来就可能需要一些个人信息。攻击页面只要把敏感字段包装成“流程需要”,Agent 就可能把提交数据视为完成任务的必要步骤。

这几类失败模式有一个共同点:

Agent 不是完全没有风险意识,而是风险意识没有压过任务完成倾向。

这和很多 Agent 产品的设计目标有关。Agent 被训练和提示去完成任务,遇到障碍要尝试绕过,看到表单要填写,进入流程要推进。社会工程攻击正是利用了这种“任务完成惯性”。

Prompt Injection 不是唯一问题,社会工程才是更大的框架

很多人看到这篇论文,第一反应可能是:这是不是又一个 prompt injection 问题?

答案是:部分相关,但不能只用 prompt injection 来理解。

Scammer4U 的攻击向量里确实包含 prompt injection,比如可见文本、隐藏 DOM、伪系统消息等。但论文的 paired-sibling ablation 结果显示,在这套基准里,没有单个因素在统计校正后显著胜出。prompt injection 轴的效果也并不突出。

这说明 Agent PII 泄露不是简单由某一段恶意指令驱动的。

攻击者真正利用的是一整套社会工程环境:

页面像真的;

任务看起来合理;

流程带有紧迫感;

表单字段符合场景;

安全声明降低警惕;

多步交互增强沉没成本;

聊天式诱导让 Agent 持续配合。

Prompt injection 只是其中一种手段。更大的问题是,Agent 在面对网页环境时,缺少独立的信任判断和出站控制。

这对安全产品设计很重要。很多 Agent 防护方案过于关注“网页里有没有恶意指令”,但 Scammer4U 提醒我们:

即使没有明显 prompt injection,一个设计良好的钓鱼流程也可能让 Agent 自愿提交隐私。

Scammer4U 构造页面与真实钓鱼页面的可信度对比。评审者很难区分哪些是基准构造页面,哪些是真实钓鱼页面。

启发:不要让模型自己守最后一道门

Scammer4U 最直接的产品结论是:Agent 安全不能只靠系统提示词和模型自我反思。

提示词可以作为辅助,但不能成为最后一道门。因为它运行在模型内部,和任务完成目标、网页上下文、模型不稳定性纠缠在一起。

真正可靠的控制点应该放在 Agent 动作出口。

尤其是以下几类动作,必须被独立拦截和审计:

  • 提交包含身份证、银行卡、密码、API Key、2FA、银行账户的表单;

  • 向陌生域名发送 POST 请求;

  • 跨站跳转后继续提交敏感字段;

  • 上传包含个人信息或企业数据的文件;

  • 将用户 profile 中的字段写入网页、聊天窗口或工单系统;

  • 调用支付、账号、邮件、云服务等高风险工具。

可以把 Agent PII 防护拆成四层。

第一层是 PII 最小化供给。

不要把完整用户 profile 一次性塞进 Agent 上下文。Agent 不应该默认拿到所有字段。更合理的方式是字段级授权、按需读取、临时 token、敏感字段 vault。Agent 需要什么字段,就申请什么字段;不需要银行卡 CVV,就永远不应该看见它。

第二层是 动作前策略引擎。

当 Agent 准备提交敏感字段时,独立 policy engine 要判断几个问题:当前域名是否可信?任务是否真的需要这个字段?字段和网站类别是否匹配?页面是否存在伪系统消息、隐藏指令、异常表单字段、紧迫话术、跨站跳转?

这个判断不应该完全交给 Agent 自己。

第三层是 浏览器和网络出口拦截。

真正的数据出界发生在 form submit、fetch、XHR、POST body、文件上传这些动作上。安全系统应该在这些出口做字段级检测。只要发现 critical-tier PII 即将离开,就进入拦截、降级或确认流程。

第四层是 用户确认与审计回放。

对于 critical-tier PII,默认应加入人类确认。确认界面不能只问“是否继续”,而要明确告诉用户:Agent 正在向哪个域名提交哪些字段,为什么需要提交,风险等级是什么。企业场景还需要 trace_id、字段级日志、风险标签、会话回放和事后追责。

这套架构的核心思想很简单:

Agent 可以负责完成任务,但不能单独决定是否泄露隐私。

浏览器是高危工具,不是普通工具

很多企业在讨论 Agent 工具调用安全时,会重点关注 API 调用、数据库访问、代码执行、文件读写。但浏览器工具本身就是一个高危工具。

因为浏览器连接的是开放互联网,页面内容由外部控制,交互对象不稳定,表单字段可能伪装,DOM 里可能藏指令,跳转链路可能跨域,页面可以同时影响 Agent 的观察、推理和动作。

如果 Agent 同时拥有浏览器访问能力和敏感数据访问能力,就必须按高风险工具治理。

比较合理的企业实践包括:

  • 浏览器 Agent 默认不持有完整敏感信息;

  • 高敏字段只通过受控 vault 动态释放;

  • 未知域名默认不能接收 critical-tier PII;

  • 对外 POST body 做 DLP 检测;

  • 表单提交前做字段级 diff;

  • 跨域跳转后重新评估信任状态;

  • prompt injection 检测和社会工程检测都要做;

  • 高风险提交必须有人类确认;

  • 所有出站动作必须可审计、可回放、可追责。

这和传统 DLP 很像,但粒度要更细。传统 DLP 主要盯人和文件,Agent DLP 还要盯模型动作、网页上下文、工具调用链和自动化提交。

换句话说,Agent 安全不只是内容安全,也不只是模型安全,而是 模型、工具、数据、身份、网络出口共同构成的运行时安全问题。

局限性

Scammer4U 的结论很有价值,但也要看到它的边界。

首先,论文使用的是构造化攻击环境,不是真实在线钓鱼网站。虽然作者做了视觉可信度验证,评审者很难区分构造页面和真实钓鱼页面,但真实钓鱼基础设施还会包含 cloaking、短生命周期、复杂跳转、反爬虫、动态 JS 等特征。

其次,PII profile 主要是美国语境,比如 SSN、routing number、美国地址、美国政府 ID。换成中国场景,字段体系会有所不同,比如身份证号、手机号、银行卡、验证码、企业统一社会信用代码、政务账号等。

再次,实验只覆盖四个模型家族,不能简单外推到所有商业 Agent 产品。真实产品可能还有额外的浏览器沙箱、权限系统、人工确认、数据脱敏和企业网关。

最后,论文的 PLRcrit 使用 exact-string match,因此更像是保守下界。如果 Agent 只泄露部分字段、截图、文件内容、字段变体,或者通过非精确形式泄露,可能不会全部计入主指标。

所以这篇论文不能被理解为“所有 Agent 产品都会以同样比例泄露隐私”。更准确的结论是:

当浏览器 Agent 在缺少外部防护的情况下,携带完整 PII profile 自主访问攻击网页时,社会工程攻击可以非常有效地诱导它提交关键隐私。

写在最后

Scammer4U 最值得记住的,不是某一个模型泄露率最高,也不是某一种攻击向量最危险,而是一个更基础的判断:

检测到风险,不等于阻止动作。

这句话会成为 Agent 安全里的重要分水岭。

在聊天机器人时代,我们主要关心模型输出了什么。到了 Agent 时代,我们还要关心模型做了什么、调用了什么、提交了什么、上传了什么、把数据发给了谁。

模型可以表达怀疑,但动作已经发生;模型可以识别钓鱼,但数据已经出界;模型可以在事后解释风险,但攻击者已经拿到了 SSN、银行卡号和 CVV。

所以,Agent 安全不能只围绕“让模型更聪明”展开,还要围绕“让模型不能单独完成高风险动作”展开。

真正可靠的 Agent 安全架构,需要把关键控制点放在模型之外:

  • 放在权限系统里;

  • 放在数据 vault 里;

  • 放在工具网关里;

  • 放在浏览器出口里;

  • 放在人类确认和审计回放里。

Agent 可以越来越强,但隐私提交的最后一道门,不能交给 Agent 自己看守。

这是 Scammer4U 给我们的最大提醒。

声明:本文来自模安局,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。