一个恶意工具,不需要读取内存,不需要翻文件,就能把LLM Agent的运行时上下文全部偷走——方法只是让模型把上下文当作工具参数发送出去。这是ContextLeak论文揭示的攻击路径:工具描述本身,就能成为数据外泄的通道。
研究团队用强化学习训练了一个攻击型LLM,专门生成恶意工具名称和描述,诱导Agent主动选择这个工具,并把敏感运行时数据——包括用户提示词、对话历史、已安装工具列表——作为参数传出去。攻击不是靠漏洞,而是靠"说服"。
![]()
92%的攻击成功率
在论文默认评估环境下,攻击效果相当惊人:针对用户提示词攻击,恶意工具被选中的概率达到92%;针对对话历史攻击,选中率达到89%。一旦工具被选中,提示词重建几乎完美——意味着模型把上下文完整地交了出去。
更值得警惕的是,这种攻击具备跨模型迁移能力。在Claude Code环境中用Claude Sonnet 4.6测试时,一个仅针对开源代理模型训练的攻击版本,在100次测试中被选中22次;而一旦被选中,上下文提取几乎完整。
攻击原理:工具描述即攻击面
LLM Agent的工作机制是:系统给模型提供一系列工具描述,模型根据用户请求决定调用哪个工具、传什么参数。ContextLeak攻击的核心思路,就是让恶意工具的描述看起来"恰好"需要上下文信息——比如伪装成一个需要"完整对话记录"才能工作的工具。
模型无法分辨这个工具是真是假,它只看到描述合理、参数要求明确,于是照做了。整个攻击过程不需要任何系统漏洞,不需要代码注入,纯粹利用模型对工具描述的信任。
对Agent安全设计的启示
这项研究暴露了一个此前被忽视的安全盲区:工具生态的开放性意味着任何人都能提交工具描述,而模型缺乏对工具意图的甄别能力。当Agent被赋予越来越多的权限——读取文件、执行命令、访问外部API——工具描述这个入口的防护却几乎没有。
论文建议,Agent系统在设计时需要考虑工具来源的可信度验证,对工具请求的敏感数据范围做最小化限制,并对异常的参数传递行为进行监控。在工具调用层面增加一层"数据边界检查",可能是最直接的防御手段。
ContextLeak的完整论文已发布在arXiv上(编号2608.27800),标题为"ContextLeak: Exfiltrating LLM Agent Context via Malicious Tools"。对于正在构建Agent应用的开发者来说,这份研究值得认真读一遍——攻击者已经在研究如何利用工具描述,防御者需要跟上这个思路。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.