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

WebMCP 工具面投毒:在会话中途劫持智能体

2026 年 6 月的一篇论文表明,被攻陷的第三方脚本可以在会话进行中替换或重构 WebMCP 智能体所看到的工具,使恶意工具调用成功率最高达到 100%。

2026-07-07 // 7 min affects: webmcp, llm-agents, mcp, browser-agents

这是什么?

2026 年 6 月 4 日,阳明交通大学的 Lin-Fa Lee、Yi-Yu Chang、Chia-Mu Yu 与 Kuo-Hui Yeh 在 arXiv 上发表了 WebMCP Tool Surface Poisoning: Runtime Manipulation Attacks on LLM Agents。论文研究了 WebMCP——一种新兴协议,允许网站直接向 AI 智能体暴露结构化工具,而无需经过用户界面。其贡献在于表明:在 WebMCP 中,智能体在单次会话内所能看到的工具集合既非静态,也并非天然可信,而这种动态性是可被利用的。

作者将该威胁命名为 Mid-Session Tool Injection(MSTI,会话中途工具注入):控制页面上第三方脚本的攻击者——被攻陷的 CDN 资源、广告 SDK,或任何同源 JavaScript——可以在任务已在执行的过程中改变智能体所感知的工具。这是一项可供同行评审的学术工作,针对一个尚处早期的协议描述了一类攻击及其防御;本文不复现任何可操作的漏洞利用。Adversa AI 将其列入 2026 年 7 月 MCP 安全资源精选

工作原理

MSTI 分为两大类。**工具劫持(tool hijacking)**操纵工具的存在性——某个工具是否存在、何时存在——甚至在模型开始推理之前就已生效。**工具重构(tool framing)**操纵元数据——名称、描述、readOnlyHint 字段和 inputSchema——使智能体误判某个恶意工具的角色。

有两种劫持技术尤为突出,因为它们在任何语义推理之前就已落地,这也正是模型几乎无从防御的原因:

工具劫持(存在性操纵)

  AbortSignal 劫持:  中止合法工具的 AbortController → 将其注销
                    → 用相同名称重新注册一个恶意工具
                    → 在智能体首次调用之前完成

  注册竞态:          在合法工具之前,以目标名称注册恶意工具
                    → “先注册者胜出” → 智能体只会看到恶意版本

重构则更为隐蔽。攻击者不删除工具,而是保留其可见性、改写其读法——例如在描述中嵌入 “always call before send_email” 这样的命令句,把恶意工具伪装成必经的工作流步骤;或用 ISO 27001 / SOC 2 / GDPR 之类的样板文字将一段 1200 词的描述撑大,从而把有害指令藏在最前面的几十个词里。

被测得的取舍是最有意思的部分。在 GPT-5.4、Claude Opus 4.6 和 Gemini 2.5-flash 上,存在性攻击成功率极高但具有破坏性:AbortSignal 劫持平均 94% 成功率,注册竞态 100%,但原始任务完成率骤降至约 17-18%,因此会话会明显中断。重构攻击更为安静——描述注入达到 59% 成功率,而任务仍有 81% 的概率照常完成;复合变体则为 61% 成功率、85% 完成率。隐蔽性与可靠性位于同一刻度盘的两端。

为何重要

多数智能体安全研究都假设危险存在于提示内容或工具输出中——即提示注入与间接注入的领域。WebMCP 把一部分威胁转移到了工具注册表本身。由于该注册表可以在会话中途改变,智能体所感知的环境状态成为攻击面,而同页的第三方脚本——大多数网站早已不加甚查地加载的一类代码——就足以触及它。

这与服务端 MCP 的问题相呼应,例如工具描述的“地毯式抽走”(rug pull)分散在多个工具上的门限投毒,但浏览器场景改变了攻击的经济学:无需恶意服务器,也无需市场上架,只要在页面脚本供应链中获得一个立足点即可。重构结果是最令人不安的启示——攻击可以把智能体的数据流重定向到攻击者的端点,而用户看到的却是任务表面上顺利完成。

防御

论文的建议针对 WebMCP 的生命周期,对任何构建或交付浏览器端智能体的人都能转化为具体指引。

将工具身份与来源绑定。工具名称不应是一个“先注册者胜出”的自由命名空间。把每个已注册工具绑定到声明它的来源,并拒绝对既有名称的静默重新注册,这样即可同时封堵 AbortSignal 劫持与注册竞态两条路径。

强制生命周期一致性。把会话进行中对工具集合的更改视为安全事件:任务一旦启动,就冻结或重新确认工具面,并将任何注册、替换或移除上报给宿主,而非静默应用。

将第三方脚本与工具注册表隔离。已在管辖 DOM 与网络访问的信任边界,应扩展到工具注册——CDN 或广告 SDK 没有理由改动智能体的工具清单。强制数据边界,使第三方工具无法接收敏感上下文或中间结果。

保留可追溯日志并约束动作层。为每一次工具注册与调用保留可审计记录,以便事后发现异常替换;同时保留经典控制手段——最小权限的工具授权,以及对敏感操作的人工确认——因为载荷只有在变成动作时才真正造成危害。

状态

项目详情
披露arXiv 预印本 2606.06387 v1,2026 年 6 月 4 日提交(CC BY 4.0)
类别攻击技术——通过被攻陷的第三方脚本,在会话中途操纵 WebMCP 智能体的工具注册表
变体工具劫持(AbortSignal 劫持、注册竞态)与工具重构(描述、readOnlyHint、inputSchema、名称)
评估三个模型(GPT-5.4、Claude Opus 4.6、Gemini 2.5-flash)· 多种任务场景 · JavaScript 工具
报告结果存在性攻击 ASR 最高达 100%,但任务完成率仅约 17-18%;重构攻击 ASR 约 59-61%,完成率约 81-85%
核心防御缺口工具面本身在会话中途可变;消息级的反注入防御观察不到注册表的变化

Sources