Xygeni 安全术语表
软件开发和交付安全术语表

什么是MCP工具中毒?

  • 什么是MCP工具中毒? MCP 工具投毒攻击是指将恶意指令隐藏在通过模型上下文协议 (MCP) 公开的工具描述中。人工智能代理会读取并执行这些指令,而用户却看不到它们。
  • 为什么会这样: 代理会将每个工具描述都视为可信上下文。工具投毒会将这种信任转化为间接的提示注入。
  • 它可以做什么: 窃取 SSH 密钥和凭据,重定向消息,或使代理滥用其他合法工具。
  • 主要变体: 工具描述中隐藏的指令、工具更改(在你批准后工具发生更改)和工具影子(一个服务器操纵代理如何使用另一个服务器的工具)。
  • 第一道防线: 了解您的代理和存储库使用哪些 MCP 服务器和工具,在采用之前进行审查,锁定版本并限制每个代理可以访问的内容。

工具中毒的成因解释 #

MCP 工具投毒是一种针对使用 MCP 工具的 AI 代理的攻击类型。 模型上下文协议开放 standard 它允许代理连接到外部工具和数据源。每个 MCP 服务器都会发布一个工具列表,其中包含工具名称、描述和参数。代理的模型会读取这些描述,以决定何时以及如何调用每个工具。

在工具投毒攻击中,攻击者将指令隐藏在元数据中。一个看似无害的计算器工具可能携带一段文本,指示模型读取一个私有文件并将其内容作为参数传递。用户批准该工具时只会看到一个简短的、看似无害的标签。而模型则会看到并执行完整的描述。

安全研究人员于 2025 年 4 月命名并披露了这种攻击类型,将其描述为一种特殊的间接提示注入攻击。他们的概念验证通过一个被篡改的“add”工具窃取了 SSH 密钥和 MCP 配置文件。此后,OWASP 社区将 MCPtool 投毒攻击记录为一种独立的攻击,并且学术基准测试(例如……)也证实了这一点。 MCPTox 已在真实世界的 MCP 服务器上进行了测试。

为什么工具中毒会奏效? #

工具投毒利用了人类审阅内容和模型读取内容之间的差距:

  • 描述是可信的上下文。 MCP 客户端将工具描述作为如何使用该工具的说明传递给模型,因此隐藏在那里的文本具有真正的权威性。
  • 用户可以看到摘要。 大多数界面只显示工具名称和简短标签,而不显示完整描述或参数方案。
  • 代理人拥有实际访问权限。 编码代理通常拥有文件系统、shell 和网络访问权限,以及开发人员的凭据。无论恶意指令要求什么,代理通常都能执行。
  • MCP 服务器是第三方代码。 许多软件都是通过一条命令从公共注册表中安装的,几乎未经审查。

这就是为什么工具中毒问题同时涉及两种风险: 及时注射 以及软件供应链?

MCP工具中毒的类型 #

工具投毒有多种形式。所有这些形式都滥用了代理对工具元数据的信任。

MCP工具中毒的类型 #

工具投毒有多种形式。所有这些形式都滥用了代理对工具元数据的信任。

变种它是如何运行的?它可能导致什么
隐藏说明恶意文本嵌入在工具的描述或参数模式中。通过代理窃取凭证和数据外泄
地毯拉服务器在用户批准后更改了工具的定义。未经重新审查,受信任的工具就变成了恶意软件。
工具阴影恶意服务器的描述会改变代理使用来自另一个受信任服务器的工具的方式。合法工具被滥用,例如用于向其他地方发送数据。
中毒工具输出该工具返回的结果包含模型的指令。代理人的下一步行动在任务进行到一半时被劫持

MCP 工具中毒和 OWASP 框架 #

MCP 工具中毒事件直接对应到 OWASP 人工智能应用风险列表中:

ASI04 代理供应链漏洞, ASI01 代理目标劫持 和 ASI02 工具误用 在 OWASP 十大代理应用程序安全漏洞中。我们的指南 OWASP Agentic AI Top 10 解释每项风险 pipeline 例如,可利用性和人工智能修复打开了修复程序。 pull requests 开发者工作的地方。

LLM01 快速注射 ,在 OWASP 十大法学硕士申请问题因为工具中毒是一种间接快速注入的形式。

怎么预防呢? #

没有哪一种单一的控制措施可以完全杜绝工具中毒。以下措施可以降低风险和损害:

  1. 清点所有 MCP 服务器和工具。 你无法审查、锁定或限制你不知道你的代理人使用的工具。
  2. 领养前的兽医服务器。 优先选择经过验证的发布商,查看完整的工具说明和参数,并检查软件包本身是否存在恶意代码。
  3. 锁定版本并检测更改。 锁定 MCP 服务器版本,并在工具定义更改时重新审核,以防止悄悄撤回。
  4. 遵循最小权限原则。 只给每个代理提供其任务所需的工具、文件和凭证,避免使用长期有效、范围广泛的令牌。
  5. 隔离病原体。 在网络访问受限的沙箱中运行代理,这样即使指令被篡改,也无法获取你的秘密信息或发送数据。
  6. 敏感操作需要获得批准。 对于发送数据、更改权限或影响生产环境的操作,务必让相关人员随时了解情况。
  7. 记录工具调用。 记录代理调用哪些工具以及使用哪些参数,以便您可以调查异常情况。

Xygeni 如何帮助降低工具中毒风险? #

Xygeni 可以解决 MCP 工具中毒过程中在特工运行前留下痕迹的部分:

  • 库存: Xygeni AI 安全 发现存储库中的 MCP 服务器、工具、代理和模型,映射哪个代理调用哪个 MCP 服务器,并将所有内容导出为 AI-BOM。
  • 特权过高的代理人: 它会标记代理配置中具有提升权限和长期有效凭据的 MCP 和工具服务器,从而限制恶意指令的影响范围。
  • 恶意指令: 它回顾了 技能和代理人指导文件 引导代理,捕获任何签名都无法检测到的恶意指令。
  • 恶意包裹: 许多 MCP 服务器以 npm 或 PyPI 包的形式分发。 恶意软件预警 分析新发布的软件包版本,并 Shield 在恶意软件安装到开发人员工作站之前将其阻止。

常见问题解答 #

简单来说,什么是MCP工具中毒?

MCP 工具投毒是指攻击者将指令隐藏在人工智能代理可使用的工具描述中。代理读取隐藏文本并执行指令,例如泄露文件,而用户看到的只是无害的工具名称。

工具中毒和快速注入是一回事吗?

工具投毒是一种间接提示注入攻击。区别在于恶意指令的存储位置:它位于代理信任的工具元数据中,而不是文档、网页或用户消息中。

MCP 中的“rug pull”是什么意思?

当 MCP 服务器在您批准工具后更改其定义时,就会发生“版本变更”。您审核的工具不再是代理使用的工具,因此锁定版本并重新审核更改至关重要。

如何判断我的代理是否使用了有风险的MCP服务器?

首先,清点代理和存储库使用的所有 MCP 服务器和工具。然后,检查每个服务器和工具的发布者、所需权限以及安装方式。Xygeni AI Security 等工具可以根据您的代码自动构建此清单。

开始免费

免费开始使用。
不需要信用卡。

一键开始:

这些信息将按照 服务条款 和 隐私政策

应用截图