研究揭示 AI 智能体工具调用安全缺陷:6 种主流框架可被简单提示词绕过

新闻
14小时前

1792136605948902.png


研究发现,攻击者只需要求 AI 智能体重复输出工具调用内容,就能诱使其执行由攻击者控制的工具调用。研究人员还发现,在 118 个开源 MCP 服务器中,共存在 253 个经过验证的安全漏洞。


研究人员成功诱使六种广泛使用的 AI 智能体框架执行攻击者编写的工具调用,所采用的方法十分简单:要求底层模型重复输出相关调用内容。

1792136054745535.png

根据宾夕法尼亚州立大学、蒙彼利埃大学和达特茅斯学院研究人员的说法,这种被称为“跟我重复”(Repeat-After-Me)的技术适用于 LangChain 的 LangGraph、微软 Agent Framework、微软 AutoGen、谷歌 Agent Development Kit 2.0、AWS Strands Agents 以及 CrewAI。

研究人员在论文中写道:“一个看似无害的文本重复请求,就能让攻击者直接控制工具调用及其参数。”
同一篇论文还指出,研究团队开发的一款测试工具对其能够运行的 273 个开源模型上下文协议(MCP)服务器进行了检测,并在其中 118 个服务器中发现了经过验证的安全漏洞。

攻击机制

在演示中,研究人员要求 AI 模型重复一段格式类似于工具调用请求的文本。模型最初拒绝了这一危险请求,但仍在回答中输出了所要求的文本。此时,框架并未执行该调用。

随后,研究人员将请求描述为假设情境,并指示模型仅复现所提供的文本。模型最终输出了结构化的工具调用,LangGraph 随即将其分发执行。模拟工具返回结果后,模型才再次拒绝该请求。

研究人员写道:“拒绝文本与实际执行的调用并不一致:系统提示词影响了模型说什么,却没有控制编排器的实际行为。”
研究人员指出,这些发现并不意味着六种框架的所有部署实例都会出现同样的问题。

迟到的拒绝

论文详细介绍了一次针对 LangGraph 1.2.0 的演示。该框架通过 Ollama 运行 Meta 的 Llama 3.1 8B 模型。智能体配置了两个虚拟工具:make_bomb 和 launch_missiles。这两个工具只会返回固定数据,不会产生任何实际影响。系统唯一的防护措施,是通过系统提示词要求模型拒绝危险请求。

当研究人员首次要求模型重复一条 launch_missiles 调用时,模型拒绝了请求,但仍以文本形式输出了该调用,因此 LangGraph 没有执行任何操作。

随后,研究人员将请求描述为假设情境,并要求模型只输出引号中的调用内容。这一次,模型以结构化形式返回了工具调用,LangGraph 随即使用攻击者提供的参数执行了该调用。直到工具返回结果后,模型才给出拒绝响应。

研究人员写道:“系统提示词影响了模型说什么,却没有控制编排器的实际行为。”他们表示,已向 LangGraph 维护团队报告了执行前缺少安全检查的问题。

论文仅针对 LangGraph 提供了完整的交互记录。对于其他五种框架,研究人员表示也复现了同样的行为,但没有提供更多细节。
LangChain、微软、谷歌、AWS 和 CrewAI 均未立即回应置评请求。

模型输出不等于执行权限

独立安全研究员兼红队测试人员 Vibhum Dubey 表示,这项发现揭示的是架构层面的弱点,而非某个单一漏洞。

Dubey 表示:“模型可以生成技术上有效、但实际上不适合当前任务的工具调用。如果编排层将模型的输出视为足以执行操作的授权,那么针对模型的操纵就会演变为系统层面的安全问题。”

他补充说,这种技术的可利用程度取决于攻击者能够影响哪些内容,以及智能体被允许执行哪些操作。只能读取数据的智能体,与能够访问机密文件、修改代码仓库或执行命令的智能体,面临的风险并不相同。

工具自身必须承担风险控制责任

由于攻击者能够控制传递给工具的参数,研究人员认为,工具必须自行验证输入。
为此,他们开发了一个名为 ToFu 的模糊测试框架。该框架会读取每个工具的描述,并检查工具是否真正执行了其声明的限制,例如确保操作范围不超出指定文件夹。

经过人工审查后,研究人员确认,在 118 个服务器中,共有 343 个工具受到 253 个漏洞的影响。其中,危害最严重的漏洞包括 64 个路径遍历漏洞、7 个服务器端请求伪造(SSRF)漏洞、5 个数据窃取漏洞,以及 3 个操作系统命令注入漏洞。其余大多数问题属于反射型输出和日志注入漏洞,论文认为,这些漏洞在许多部署环境中的影响相对较低。

研究人员写道:“许多工具在设计上默认依赖大语言模型(LLM)清理输入”,但提示词、检索内容以及其他工具的输出,都可能影响这些输入。

将请求能力与授权权限分离

Dubey 表示,安全团队当前的首要任务,是将模型请求执行操作的能力与系统实际执行操作的权限分离。

他说:“每一次敏感工具调用都应经过独立的授权检查。有效的语法格式或模型给出的合理解释,绝不能替代真正的权限授权。”

他建议,为智能体配置受限的文件和网络访问权限、隔离的执行环境以及受限的凭据,并要求对敏感操作或不可逆操作进行明确审批。
他还表示,安全团队应监控一系列连续发生的工具调用,而不是孤立地评估每一次操作。

该论文尚未经过同行评审。研究人员在固定的代码版本上测试了相关服务器,但论文并未说明这些漏洞此后是否已得到修复,或是否已在真实环境中遭到利用。

* 注:图片均来源于网络,无法联系到版权持有者。如有侵权,请与后台联系,做删除处理。

— 【 THE END 】—