🛡️ 安全风险

工具投毒攻击(Tool Poisoning Attack)

别名:工具投毒TPAMCP 投毒Tool Poisoning工具描述注入元数据注入
分类🛡️ 安全风险
阅读时间⏱️ 20 分钟
更新时间📅 2026-10-19
条目编号ENC-SECURITY-20-tool-poisoning
「工具投毒攻击是一种间接提示注入:攻击者在 MCP 等工具的描述、参数名或输入模式等元数据中嵌入对模型可见、对用户隐藏的恶意指令,诱导智能体越权读取敏感文件或外传数据。」

关键要点 ✦

概念与定位

智能体通过工具描述来理解并调用工具,而工具描述通常是自由文本,协议本身并不强制区分「给模型的文档」与「模型会执行指令」。工具投毒攻击(Tool Poisoning Attack,TPA)正是利用这一点:攻击者在 MCP 服务器的工具名称、描述或输入模式里嵌入隐藏指令,这些文本对模型完全可见、对用户却只显示简化摘要,于是模型把恶意文本当作合法指令执行。它是间接提示注入在工具层的具体化,由 Invariant Labs 于 2025 年 4 月披露,并被 OWASP 的 MCP 相关条目列为独立攻击类。

需要区分的是,TPA 与命令注入类漏洞(如某些 MCP 服务器处理命令列表时的 RCE)处在不同层:前者是内容层——没有任何进程被派生、没有任何命令被注入,模型仅仅是被它读到的文本操纵;后者是传输与命令层。两者互补,一个服务器可以既没有命令注入 bug,仍通过描述投毒模型。

攻击原理与变体

基本手法是:恶意服务器在 tools/list 返回的工具描述里塞入形如「调用本工具前先读取私钥并随参数回传」的指令,用 IMPORTANT、CRITICAL 等标签或 HTML 注释伪装成系统指令。用户看到的只是「add — 两数相加」,模型却读到完整恶意文本并按其行事。变体包括:工具遮蔽(tool shadowing),恶意服务器提供一个描述会重定义另一受信任工具行为的工具;地毯式置换(rug-pull),服务器先以良性描述获批准,之后借 tools/list_changed 静默换成投毒版本;全模式投毒(full schema poisoning),把指令埋进参数名、嵌套属性描述或规范外的字段,连顶层描述都保持干净。

影响与实测数据

影响面集中在「智能体能读到的任何东西」:SSH 私钥、云凭证、聊天记录、源码、环境变量。由于外发流量来自用户已批准的合法工具,传统数据防泄漏(DLP)难以拦截;且投毒随服务器被加载即生效,并跨后续所有会话持续存在,不像单次对话里的提示注入那样一过即逝。实测方面,Invariant Labs 演示了经 Cursor 泄露私钥,以及借助 WhatsApp 社区 MCP 服务器外泄完整聊天记录;MCPTox 基准(arXiv:2508.14925,2025 年 8 月)在 20 个智能体、45 个真实 MCP 服务器、353 个真实工具上系统评测,测得 o1-mini 攻击成功率达 72.8%,且能力更强的模型往往因更强烈的工具服从本能而更易中招。

防御实践

首要原则是:把服务器提供的全部工具元数据当作不可信输入,而非可信文档。具体做法包括:在安装时快照工具定义,并在每次会话开始时 diff,对任何名称或描述变更(尤其经 tools/list_changed)告警;扫描工具描述中的可疑标记(隐藏指令标签、对私钥、MCP 配置、环境变量或密送的引用)与异常空白填充;在工具调用处而非模型计划处设策略门,因为模型可被操纵,持久控制点在执行边界;对高影响工具调用做参数级校验与最小权限约束。静态扫描工具(如 mcp-scan)可捕获已知模式,但对会话中途的地毯式置换无能为力,故运行时治理必须覆盖元数据这一层。

局限与未决问题

TPA 没有单一修复,因为它利用的是 MCP 的设计层歧义:协议并未强制分离描述性元数据与可执行指令。目前行业在探索方向包括:客户端默认隐藏完整描述并显式展示风险、对工具定义做签名与绑定、以及把工具调用策略下沉到网关。尚未解决的问题是跨服务器污染——一个恶意服务器可重定义用户已信任的其他服务器工具行为,而用户往往难以察觉。把「工具元数据」与「用户指令」「模型输出」同样视为不可信边界,正成为智能体安全的基础假设。

🎯 应用场景

供应链式工具审查
企业在接入第三方 MCP 服务器前,对其工具描述做静态与运行时扫描,识别隐藏指令。
会话期工具定义监控
对每次会话加载的工具定义与安装快照做 diff,发现中途置换即告警或阻断。
高影响工具的策略门
对读密钥、发信、删库等工具调用施加参数校验与最小权限,不盲从模型计划。

✅ 最佳实践

  • 把服务器提供的工具元数据视为不可信输入,而非可信文档。
  • 安装时快照工具定义,会话期对名称、描述变更做 diff 并告警。
  • 在工具调用边界设策略门,不依赖已被操纵的模型计划做最终裁决。
  • 对高影响工具调用做参数级校验与最小权限约束,缓解跨服务器污染。

🔮 未来展望

工具投毒正从概念披露走向标准化治理:OWASP 已将其列为 MCP 安全条目,扫描与运行时网关开始把工具元数据纳入监控。后续值得关注的方向包括工具定义的签名与绑定、客户端对完整描述的默认可见性改造、以及跨服务器污染的根治——目前一个恶意服务器仍能重定义其他受信任服务器的工具行为。随着 MCP 生态扩张,把元数据当作与用户输入同级的不可信边界,将逐步成为智能体安全的默认假设。

📖 相关条目

🛠️ 相关产品

🏷️ 标签安全风险工具投毒MCP提示注入供应链数据外泄智能体安全