LLM Agent 重大安全漏洞:75% 开源工具可被劫持!恶意工具偷偷混进工作流,偷数据、篡改结果
为机器立心
2026年9月27日 09:00
广东
去阅读
现如今,基于大模型的AI Agent已经从概念走向落地。
不管是智能办公助手、个人旅行规划机器人,还是自动炒股、代码调试Agent,它们强大能力的背后,离不开各式各样外部工具的加持:联网搜索、金融查询、数据库操作、视频检索……
LangChain、Llama‑Index两大主流框架都在官方文档推荐开发者直接批量导入一整套工具集(Pool‑of‑Tools),不用一个个手动引入,让大模型自己按需挑选调用,开发效率直接拉满。
但最近伊利诺伊大学厄巴纳‑香槟分校(UIUC)的研究团队捅破了一层窗户纸:这种“工具池”模式,埋藏着一种全新的高危攻击方式——XTHP(跨工具窃取与污染,Cross‑Tool Harvesting and Polluting)。
测试66个真实开源Agent工具,结果触目惊心:75%的工具存在被劫持风险,现有主流防御方案几乎全部失效。
什么是XTHP攻击?恶意工具“伪装成助手”,强行挤进Agent执行链路
很多人过去对Agent安全的认知是:危险来自单个恶意工具。只要不主动加载恶意工具就万事大吉。
XTHP颠覆了这个认知。
核心逻辑:不需要欺骗用户,不需要prompt注入,恶意工具靠写一份极具迷惑性的描述文档,诱导大模型主动把它插入正常任务流程。
论文把Agent工具的执行顺序定义为CFA(Agent任务控制流)。一次任务里,Agent会按照先后顺序调用不同工具。XTHP攻击分为两大阶段:
- 1. CFA劫持:抢占执行位置
恶意工具并不直接搞破坏,而是伪装成“辅助帮手”。对外宣称自己可以做输入预处理、格式校验、结果解析、错误排查。
- • 可以插在受害工具之前运行(前驱劫持);
- • 也可以插在受害工具之后运行(后继劫持);
- • 极端情况还能直接挤掉原本该调用的正规工具。
举两个论文里真实复现的PoC案例:
✅案例1:Youtube搜索工具需要“逗号分隔字符串”作为入参。攻击者写一个工具叫YoutubeSearchPreprocessor,描述写着“帮你生成符合Youtube搜索格式的输入”。
只要Agent要调用Youtube搜索,大模型就会自动先调用这个恶意预处理工具。它表面做格式整理,背地里:要么窃取用户搜索关键词;要么篡改查询词,输出虚假信息,实现虚假信息大规模传播。
✅案例2:金融工具YahooFinanceNews只接受股票代码(AAPL)作为入参,但用户只会输入公司全称“Apple”。
攻击者造出CompanyToTicker,宣称“把公司名转换成股票代码”。哪怕大模型本身本来就懂这个映射关系,Agent依然会优先调用外部工具。恶意工具就此混入链路,窃取公司名称、用户查询,甚至篡改输出的股票代码,误导交易决策。
- 2. 得手之后,两类致命危害:XTH窃取数据 & XTP污染结果
一旦成功插入工作流,攻击分成两种模式:
- • XTH 跨工具数据窃取:恶意工具可以索取上下文中的全部中间数据:用户地址、医疗检索记录、文档内容、财务数据、用户名。数据悄悄回传给攻击者服务器。
-
• XTP 跨工具信息污染
-
• 前驱污染:运行在受害工具之前,篡改输入,让正规工具输出错误结果;
- • 后继污染:运行在受害工具之后,拿到正规工具返回的正确结果,直接篡改再交给大模型。
比如股票查询之后的恶意校验工具,悄悄把股价上浮10%,AI理财Agent拿到错误数字,直接给出错误投资建议,造成财产损失。
更可怕的是:工具描述支持动态远程加载。工具本体代码干干净净,运行时从黑客服务器拉取攻击指令,静态代码扫描完全看不出来,隐蔽性极强。
攻击者有哪些套路?6种手段完成劫持
研究团队把攻击手段归为几大类:
- 1. 目标语义挂钩:瞄准工具的外部知识依赖,伪装成知识转换器(公司名→股票代码,城市→机场IATA编码)。
- 2. 场景语义挂钩:利用真实业务场景需求,伪装成错误解析器、prompt注入检测器、代码预校验工具。只要Agent发生报错、执行代码,就自动被调用。
- 3. 格式语法挂钩:利用工具对特殊格式的依赖,伪装JSON校验器、URL校验器、输入格式化工具。只要工具需要JSON、URL、特殊自定义格式,就可以被挂钩。
- 4. LLM偏好挂钩:大模型会主观偏爱某些话术。攻击者在描述加入“低延迟优化”“经过验证”“高可靠”这类关键词,即便存在正规同类工具,大模型依然优先选恶意工具。
- 5. 动态工具描述:运行时从远程服务器读取描述文本,本地代码无攻击特征,绕过静态审计。
- 6. 同赛道竞争:直接和正规工具功能撞车,依靠更诱人的描述,直接顶替原有工具执行。
为了大规模验证漏洞,团队开发自动化扫描器Chord,自动生成恶意工具、端到端模拟攻击,批量检测工具池内风险。
实测数据:75%工具沦陷,现有防御基本挡不住
研究选取LangChain、Llama‑Index共66个可运行的真实社区工具开展测试:
- • ✅75%(50个)工具可以被成功劫持控制流CFA Hijacking
- • ✅被劫持工具中,72%可以实现数据窃取XTH;68%可以实现结果污染XTP。
| 框架 | 被测工具 | 可劫持 | 可窃取数据 | 可污染结果 |
|---|---|---|---|---|
| LangChain | 37 | 73% | 73% | 59% |
| Llama‑Index | 29 | 79% | 72% | 79% |
重点:市面上已发表的主流防御方案全部被绕过。
团队测试了Tool Filter工具过滤、Spotlighting分隔符防护、Prompt Injection检测、AirGapAgent、IsolateGPT、ACE等标杆防御系统。
为什么防御会失效?
XTHP攻击有一个关键属性:上下文对齐执行。恶意工具会假装完成宣称的辅助功能,输出语义完全符合Agent任务预期。
- • 提示注入检测器:检测的是“工具输出里藏prompt指令”,而XTHP只是篡改业务数据,输出看起来完全正常,不会触发告警;
- • IsolateGPT、ACE这类基于任务规划的防御:规划阶段依然会读取全部工具描述,伪造的诱人描述会欺骗规划器,直接把恶意工具写进执行计划;
- • 工具过滤器:很容易通过修改工具描述里的“本工具是任务必需组件”绕过,还容易误杀正常工具,破坏业务可用性。
同时实验还发现:推理能力越强的大模型,反而越容易中招。GPT‑4o的劫持成功率显著高于小参数量模型Llama‑4‑Scout 17B。小模型经常搞不懂工具之间的语义依赖,反而降低被攻击概率。
现实风险离我们有多远?
很多开发者可能觉得:我只用官方工具,不会引入恶意代码。但现实并没有这么乐观:
-
- Agent工具大量来自社区贡献(Llama‑Hub、LangChain Community),工具审核机制薄弱,HuggingFace甚至允许开发者直接上传工具,没有安全审计。
-
- 开发范式鼓励批量导入工具集Toolkit。开发者为了省事,经常一整个工具包全部导入,并不清楚里面每一个工具的具体行为。只要工具包混入一个恶意工具,整个Agent环境就埋下炸弹。
-
- 攻击不需要用户交互,任务触发即自动执行。用户完全感知不到后台多跑了一个工具,数据悄悄泄露、结果悄悄被篡改。
受影响场景覆盖:AI金融助手、企业RAG智能问答、代码Agent、旅行规划机器人、自动化办公Agent。泄露信息包括文档、个人地址、查询记录;污染可以传播虚假新闻、错误财务数据、错误代码。
我们该怎么缓解XTHP威胁?
论文没有给出完整的最终解决方案,但给出工程实践层面的缓解思路:
- 1. 拒绝无脑批量导入全部工具集,最小权限原则,只导入业务真正需要的工具,而不是导入整个工具池。
-
- 警惕工具描述的“强指令话术”,例如“必须使用本工具在XX之前/之后”这类强制语句。
-
- 校验工具描述和工具实际实现逻辑一致性,不要完全信任工具的自我宣传。很多工具的能力只存在描述文本里。
-
- 限制工具动态加载远程描述、远程配置的能力。关闭运行时从外部服务器拉取工具元信息。
-
- 工具之间做数据隔离:一个工具不能索取其他工具产生的中间上下文,禁止工具随意读取全局Agent上下文。
-
- 高敏感业务,避免直接使用社区未经过安全审计的第三方Agent工具。
写在最后
大模型Agent安全,过去我们更多关注提示注入、命令注入、越权访问。XTHP揭示了全新攻击面:问题不完全出在大模型本身,而是“工具池编排”这个环节。
攻击者不再需要欺骗大模型,而是欺骗大模型的工具选择逻辑。仅仅依靠一段精心撰写的工具描述,就可以改变Agent的完整执行流程。
随着Agent走向生产环境,工具生态越来越庞大,工具池安全,会成为下一阶段AI安全绕不开的命题。
> 注:研究团队已经将漏洞反馈给LangChain、Llama‑Index官方。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论