AgentDojo: A Dynamic Environment to Evaluate Prompt Injection Attacks and Defenses for LLM Agents
论文重点
AgentDojo是由ETH Zurich和Invariant Labs联合提出的动态评估框架,旨在系统性地衡量LLM智能体在执行工具调用时的对抗鲁棒性。该框架包含97个真实任务和629个安全测试用例,覆盖邮件管理、在线银行、旅行预订等场景,为提示注入攻击与防御研究提供了首个可扩展的标准化评估平台。
核心研究内容
问题定义
LLM智能体通过结合文本推理与外部工具调用来解决复杂任务,但这一设计范式存在根本性的安全缺陷:LLM直接处理文本,缺乏区分"指令"与"数据"的形式化能力。提示注入攻击正是利用这一漏洞------攻击者将恶意指令嵌入第三方数据(如邮件正文、网页内容、API返回结果),当智能体通过工具获取这些数据时,恶意指令便可能劫持智能体的行为,执行攻击者指定的操作。
现有基准测试要么局限于静态场景,要么依赖LLM模拟环境状态,无法准确反映智能体在真实动态环境中的行为。AgentDojo填补了这一空白。
创新方法
AgentDojo的核心创新体现在以下几个层面:
1. 动态、有状态的评估环境
与传统的静态测试集不同,AgentDojo是一个可扩展的交互式环境。智能体需要在此环境中动态地调用多个工具,且每次工具调用都会改变环境状态。这意味着攻击和防御的效果必须在完整任务执行的上下文中进行评估,而非孤立地判断单次模型输出。
2. 基于环境状态的正式效用与安全度量
AgentDojo不依赖LLM来"模拟"环境或判断任务是否完成。相反,它通过对环境状态进行形式化检查来计算任务完成度(utility)和攻击成功率(security)。例如,判断"邮件是否已发送"或"敏感数据是否被泄露",直接检查环境中的邮件记录或文件系统即可,避免了LLM作为评判者可能带来的偏差和不稳定性。
3. 任务-攻击-防御的正交化设计
AgentDojo将任务(user task)、攻击(attack)和防御(defense)三个维度解耦。同一组用户任务可以搭配不同的攻击策略和防御机制进行测试,从而系统性地评估各种组合下的效用-安全权衡(utility-security tradeoff)。这种设计使得研究人员可以独立地改进某一个维度,而不需要重新设计整个实验。
4. 可扩展的架构
AgentDojo被设计为可扩展的框架而非封闭的基准。研究人员可以轻松添加新的任务套件(task suite)、新的攻击范式、新的防御机制,甚至新的智能体架构。这使其能够跟随LLM智能体领域的发展而持续演进。
研究成果
论文通过大量实验揭示了几个关键发现:
智能体基础能力不足。 即使在完全没有攻击的情况下,最先进的LLM智能体在许多任务上仍然失败。这表明当前智能体的基础任务执行能力本身就有很大的提升空间,安全问题只是冰山一角。
现有攻击效果有限。 现有的提示注入攻击能够破坏部分安全属性,但并非全部。这意味着没有一种攻击是"万能"的,不同的攻击策略在不同场景下效果差异显著。
AgentDojo构成双重挑战。 对于攻击者而言,在保持智能体正常执行用户任务的同时实现攻击目标,是一个高度复杂的优化问题。对于防御者而言,在不显著损害任务效用的前提下抵御攻击,同样极具挑战性。
论文还报告了该框架已被美国和英国AISI(AI安全研究所) 用于评估Claude 3.5 Sonnet的提示注入漏洞。
实际落地应用的可行性
AgentDojo的实用性已在多个层面得到验证。首先,它获得了ML Safety SafeBench竞赛一等奖 ,证明了其在AI安全评估领域的学术认可度。其次,US和UK AISI已将其用于实际的智能体安全评估,说明该框架已从学术研究走向实际应用。
对于企业而言,AgentDojo可用于:
- 在上线前评估智能体系统的安全风险
- 对比不同防御策略的效用-安全权衡
- 持续监控智能体系统在对抗环境下的表现
技术细节
框架架构
AgentDojo的核心工作流程如下:
- 任务定义:每个任务包含用户指令(user task)、初始环境状态,以及用于判断任务完成的形式化条件(utility checks)。
- 安全测试定义:每个安全测试包含攻击者目标(attacker goal)和注入端点(injection endpoint)。
- 智能体执行:智能体在环境中逐步调用工具,每一步都可能触发注入。
- 结果评估:通过检查最终环境状态,分别计算效用得分和安全得分。
任务套件
AgentDojo首个版本包含三个任务套件:
| 套件 | 场景描述 | 任务数量 |
|---|---|---|
| Workspace | 邮件客户端与文件系统管理 | 多种日常办公任务 |
| Banking | 在线银行操作 | 转账、查询等金融操作 |
| Travel | 旅行预订 | 机票、酒店预订等 |
攻击范式
AgentDojo实现了多种提示注入攻击策略,包括:
- 直接注入:在工具返回的数据中直接嵌入恶意指令
- 间接注入:通过第三方数据源(如网页、文档)传递恶意内容
- 带工具知识的攻击:攻击者了解可用工具及其参数,构造更精准的注入
防御范式
框架内置了多种防御机制供对比评估:
- 提示增强(Prompt Enhancement) :在系统提示中重复用户指令,强化其优先级
- 检测过滤(Detection Filter) :使用专门模型检测并过滤注入内容
- 工具过滤(Tool Filter) :隔离函数调用与智能体的主要规划组件
代码示例
以下是通过AgentDojo运行基准测试的命令行示例:
bash
# 在workspace套件上运行任务0和1,使用gpt-4o模型,工具过滤防御,带工具知识的攻击
python -m agentdojo.scripts.benchmark \
-s workspace \
-ut user_task_0 -ut user_task_1 \
--model gpt-4o-2024-05-13 \
--defense tool_filter \
--attack tool_knowledge
# 在所有套件和任务上运行
python -m agentdojo.scripts.benchmark \
--model gpt-4o-2024-05-13 \
--defense tool_filter \
--attack tool_knowledge
安装方式:
bash
pip install agentdojo
# 如需使用提示注入检测器
pip install "agentdojo[transformers]"
研究设定
硬件与软件要求
AgentDojo本身是轻量级的Python框架,核心逻辑不依赖特定硬件。主要要求包括:
- Python环境:Python 3.8+
- LLM后端:支持OpenAI API(如GPT-4o)、Anthropic API(如Claude)以及本地部署的开源模型(如Llama)
- 可选依赖 :如需使用内置的提示注入检测器,需安装
transformers库
实验设计
论文中的实验采用以下设定:
- 智能体:测试了多种SOTA LLM作为智能体的推理引擎
- 任务集:97个真实任务,覆盖三个场景套件
- 攻击集:629个安全测试用例
- 评估指标 :
- 效用(Utility) :任务是否成功完成(基于环境状态的形式化检查)
- 安全(Security) :攻击目标是否达成(同样基于环境状态检查)
- 对比基线:多种攻击策略 × 多种防御策略的组合
综合分析
AgentDojo的出现标志着LLM智能体安全评估从"静态问答"走向"动态交互"的重要转变。以下几个角度值得深入思考:
第一,指令与数据的根本性冲突。 AgentDojo揭示的问题根植于LLM的本质特性------文本输入中无法区分"这是指令"和"这是数据"。这个问题在传统计算系统中早已解决(代码与数据分离),但在LLM范式中被重新打开。AgentDojo的价值在于,它迫使研究者直面这一根本性矛盾,而非回避它。
第二,效用-安全权衡的现实性。 论文发现SOTA模型即使在无攻击情况下也会失败,这揭示了一个深刻的现实:安全防御不能以牺牲基础能力为代价。如果一个防御机制让智能体在99%的无攻击场景中都无法完成任务,那它在实际部署中毫无价值。AgentDojo通过同时评估效用和安全,迫使研究者正视这一权衡。
第三,基准的动态性至关重要。 提示注入攻击和防御都在快速演进。静态基准很快会过时------攻击者会找到绕过方法,防御者会找到新的防护手段。AgentDojo的可扩展设计理念(而非封闭测试集)是应对这一挑战的正确方向。
第四,实际部署的复杂性。 AgentDojo的任务场景(邮件、银行、旅行)虽然已经是真实任务的简化版本,但已足够揭示智能体安全的高度复杂性。在实际部署中,智能体可能面临更复杂的工具集、更不可预测的数据来源,以及更智能的自适应攻击者。AgentDojo提供了一个起点,但远非终点。
实践应用
基于对AgentDojo的分析,以下是对研究人员和工程实践者的具体建议:
对于研究人员
- 优先提升基础能力:在追求安全之前,确保智能体在无攻击场景下有足够高的任务完成率。一个连正常任务都做不好的智能体,谈安全没有意义。
- 系统性评估防御:使用AgentDojo同时报告效用和安全指标,避免"为了安全而牺牲一切"的片面优化。
- 探索架构级防御:提示增强和检测过滤等表层防御效果有限。更根本的解决方案可能需要在架构层面将"指令处理"与"数据处理"分离。
- 关注自适应攻击:AgentDojo支持设计新的攻击策略。研究防御时,应考虑攻击者会针对你的防御进行调整的场景。
对于工程实践者
- 上线前必做安全评估:使用AgentDojo或类似框架,在智能体系统上线前系统性地评估其对抗鲁棒性。US和UK AISI的实践已证明这一做法的价值。
- 建立持续监控机制:提示注入攻击的手段在不断演进。一次评估通过不代表永远安全。建议将AgentDojo集成到CI/CD流程中,作为持续安全测试的一部分。
- 理解防御的代价:任何防御机制都会带来效用损失和成本增加。在实际部署中,需要根据具体场景的风险等级,选择合适的防御强度。
- 关注社区动态:AgentDojo已有多个后续工作在其基础上发展了新的防御方法。跟踪这些进展可以帮助你及时采用更优的防护方案。
参考资料
- 原始论文:AgentDojo: A Dynamic Environment to Evaluate Prompt Injection Attacks and Defenses for LLM Agents
- GitHub仓库:ethz-spylab/agentdojo
- 项目文档:agentdojo.spylab.ai
- 论文作者:Edoardo Debenedetti, Jie Zhang, Mislav Balunović, Luca Beurer-Kellner, Marc Fischer, Florian Tramèr(ETH Zurich & Invariant Labs)
- 发表会议:NeurIPS 2024 Datasets and Benchmarks Track