Blue Teaming Function-Calling Agents¶
会议: AAAI 2026
arXiv: 2601.09292
代码: 无
领域: LLM安全 / 智能体安全
关键词: function-calling, 提示注入攻击, 工具投毒, 蓝队防御, 开源LLM
一句话总结¶
系统评估了四个开源function-calling LLM在三种攻击下的鲁棒性,并测试了八种防御方案的效果,揭示了当前模型默认不安全、防御方案在实际场景中仍难以部署的现状。
研究背景与动机¶
-
领域现状: Function-calling能力使LLM能够与外部工具交互,扩展文本生成之外的能力。随着A2A和MCP等协议的推广,智能体应用日益流行。
-
现有痛点: Function-calling能力并不保证对抗攻击的鲁棒性,即便部署了防御措施,模型仍可能被诱导调用恶意函数。现有研究主要在闭源模型上演示攻击可行性,缺乏对开源模型的系统评估。
-
核心矛盾: 开源function-calling模型需要暴露工具的实现细节(如代码),这造成了闭源模型不存在的独特攻击面;同时现有防御机制在实际部署中面临高误报率等问题。
-
本文要解决什么: 系统评估开源function-calling模型的安全性,量化攻击成功率(ASR)和防御有效性,为设计更安全的智能体系统提供实证依据。
-
切入角度: 从蓝队(防御方)视角出发,同时实现攻击和防御,在统一框架下做端到端测试,关注工具实现可见性带来的新攻击向量。
-
核心idea: 工具实现的可见性为攻击者创造了独特攻击面(如Renaming Tool Poisoning),而当前防御方案(包括预防型和主动型)都无法提供全面保护,需要多层次组合防御。
方法详解¶
整体框架¶
使用Ollama和DSPy框架,在Berkeley Function Calling Leaderboard数据集上,对Qwen3:8B、Llama-3.2:3B、Granite3.2:8B、Granite3.3:8B四个模型进行攻击-防御评估。恶意目标函数get_result包含SQL注入代码,用于统一衡量攻击成功率。
关键设计¶
- 三种攻击方式:
- Direct Prompt Injection (DPI): 在用户查询中直接嵌入恶意指令,伪装为系统管理员消息,覆盖原始指令。对大多数模型ASR在56%-94%之间,是最有效的攻击。
- Simple Tool Poisoning (STP): 修改工具描述,在每个工具描述末尾添加恶意payload,同时将恶意函数加入工具列表。Qwen3:8B的ASR达95%。
-
Renaming Tool Poisoning (RTP): 本文提出的新攻击,同时操纵工具描述和实现代码,通过双payload策略将注意力引导到实现中的恶意变量。仅对Qwen3:8B有效(ASR 74%),暗示该模型更关注工具实现。
-
四种预防型防御:
- Cosine Similarity: 用嵌入模型计算查询与工具的相似度,将工具选择委托给嵌入模型。效果参差不齐,部分场景ASR下降至0,但也可能导致准确率大幅下降。
- Tool Obfuscation: 本文提出的新防御,对工具名称和实现进行代码混淆,移除变量和工具名作为攻击向量。对大多数模型-攻击组合有正面影响。
-
Description Rewriting: 用LLM(Granite-Code:8B)根据工具实现重新生成描述,建立描述与实际功能的强绑定。对工具投毒攻击的ASR降至0。
-
四种主动型防御:
- Watermarking: 对合法工具名称使用HMAC-SHA256生成水印,在执行前验证工具真实性。能检测100%的恶意函数调用,但Llama-3.2:3B无法准确复制水印。
- 还有Prompt Shields、LLM-as-a-Judge、Intention Analysis等防御,但都存在高误报率问题。
损失函数 / 训练策略¶
本文为实验评估研究,不涉及模型训练。评估指标为准确率(Accuracy,正确工具调用占比)和攻击成功率(ASR,成功诱导调用恶意函数的比例),在172条查询-答案对上测试。
实验关键数据¶
主实验¶
| 攻击类型 | Qwen3:8B ACC/ASR | Llama3.2:3B ACC/ASR | Granite3.2:8B ACC/ASR | Granite3.3:8B ACC/ASR |
|---|---|---|---|---|
| 无攻击 | 0.92/0 | 0.66/0 | 0.84/0 | 0.78/0 |
| DPI | 0.06/0.94 | 0.20/0.58 | 0.34/0.56 | 0.80/0 |
| STP | 0.04/0.95 | 0.50/0.23 | 0.72/0.12 | 0.39/0.51 |
| RTP | 0.24/0.74 | 0.69/0.02 | 0.84/0.01 | 0.83/0 |
消融实验¶
- Description Rewriting对STP和RTP的ASR降至0,同时对准确率影响可忽略
- Watermarking能100%拦截恶意函数调用(执行前检测)
- Cosine Similarity防御效果不稳定,部分场景反而增加ASR至0.64
- Tool Obfuscation对除Llama3.2:3B外的模型总体正面
关键发现¶
- Qwen3:8B对所有攻击最脆弱(推测更依赖工具实现细节),Granite3.3:8B最鲁棒
- 没有单一防御能覆盖所有攻击类型,所有防御都存在显著的实际局限性
- 开源模型的工具实现可见性创造了闭源模型不存在的独特攻击向量
- 模型规模较小时(3B-8B)安全性普遍不足
亮点与洞察¶
- 首次系统评估开源function-calling模型的安全性,填补了闭源评估之外的空白
- 提出新攻击(RTP)和新防御(Tool Obfuscation),方法简洁有效
- 揭示了一个重要发现:不同模型对工具描述vs实现代码的关注程度不同,这影响攻击效果
- 实验发现Granite3.3:8B对DPI完全免疫(ASR=0),值得进一步研究其安全对齐机制
局限性 / 可改进方向¶
- 仅测试了小型开源模型(3B-8B),缺乏对大型模型(70B+)和闭源模型的对比
- 攻击场景单一(仅测单函数调用),未涉及多步推理和链式工具调用
- 防御组合实验不够充分,未探索多防御叠加的最优策略
- 未考虑自适应攻击者(知道防御方案后调整攻击策略的场景)
相关工作与启发¶
- ASB (Zhang et al. 2025) 提出了400+工具的综合评估框架,攻击成功率最高84.30%
- DRIFT (Li et al. 2025) 提出动态规则防护,Meta SecAlign 构建内置防御的LLM
- 本文的发现可以指导MCP/A2A协议的安全设计,工具注册应包含签名验证机制
评分¶
⭐⭐⭐ (3/5)
实验设计系统全面,但技术深度有限,主要是经验性评估。发现有价值(开源模型默认不安全、无单一防御万能),但缺乏理论分析和更强的防御方案提出。对智能体安全社区是有用的参考。