张家口市网站建设_网站建设公司_UI设计师_seo优化
2025/12/18 20:10:34 网站建设 项目流程

  • 发表在 NIPS 204

Abstract

AI 智能体通过将文本推理与外部工具调用相结合来解决复杂任务。然而,AI 智能体容易受到提示注入攻击,外部工具返回的数据可能劫持智能体,使其执行恶意任务。为了衡量 AI 智能体在对抗环境中的鲁棒性,我们提出了 AgentDojo,一个用于评估智能体在未受信任数据上调用工具的动态框架。为捕捉攻击与防御的不断演化,AgentDojo 并非静态测试集,而是一个可扩展的环境,用于设计和评估新的智能体任务、防御机制以及自适应攻击。我们在该环境中填充了 97 个真实任务(如管理邮件客户端、操作网银网站或预订旅行)、629 个安全测试用例,以及文献中的多种攻击与防御范式。实验表明,AgentDojo 对攻击者和防御者均构成挑战:在无任何攻击的情况下,当前最先进的 LLM 也无法完成许多任务;而现有的提示注入攻击虽能破坏部分安全属性,但远非全部。我们希望 AgentDojo 能够促进未来研究,提出新的 AI 智能体设计原则,使其在常见任务中既可靠又鲁棒。

论文官网:https://agentdojo.spylab.ai/

1 Introduction

1 引言

大型语言模型(LLM)具备理解自然语言描述的任务并生成解决方案的能力 [20,27,49,60]。AI 智能体的一种前景广阔的设计范式是将 LLM 与可与更广泛环境交互的工具相结合 [14,35,40,47,51,53,55,69]。AI 智能体可用于多种角色,例如具备访问电子邮件和日历功能的数字助理,或能够访问编程环境和脚本的智能“操作系统” [24,

然而,一个关键的安全挑战在于,LLM 直接操作文本,缺乏区分指令与数据的形式化方法[44,74]。提示注入攻击利用这一漏洞,在智能体工具处理的第三方数据中插入新的恶意指令 [17,44,62]。一次成功的攻击可能使外部攻击者以用户身份执行操作(并调用工具)。潜在后果包括窃取用户数据、执行任意代码等 [18,23,33,

为了衡量 AI 智能体在存在提示注入的对抗环境中安全完成任务的能力,我们引入了 AgentDojo,一个动态的基准框架,其初始版本包含== 97 个真实任务和 629 个安全测试用例==。如图 1 所示,AgentDojo 为 AI 智能体提供任务(例如总结并发送电子邮件)以及用于解决这些任务的工具。安全测试用例由攻击者目标(例如泄露受害者的电子邮件)和注入端点(例如用户收件箱中的电子邮件)组成。

与先前的 AI 智能体基准 [32,43,50,68] 和提示注入基准 [34,57,66,71] 不同,AgentDojo 要求智能体在有状态、对抗的环境中动态调用多个工具。为了准确反映不同智能体设计在效用与安全性之间的权衡,AgentDojo 通过监控环境状态的形式化效用检查来评估智能体和攻击者,而非依赖其他 LLM 模拟环境。

由于机器学习安全的不断演化,静态基准的用途有限。因此,AgentDojo 并非静态基准,而是一个可扩展的框架,未来可填充新的任务、攻击和防御。我们初始的任务和攻击已对攻击者和防御者构成显著挑战:当前 LLM 在无任何攻击的情况下,完成 AgentDojo 任务的成功率低于 66%;而现有提示注入攻击对表现最佳的智能体的成功率不足 25%。当部署现有的提示注入防御(如二次攻击检测器 [28,45])时,攻击成功率降至 8%。我们发现,当前提示注入攻击仅从系统或受害者的侧面信息中略微受益,且在攻击者目标异常敏感时(例如通过电子邮件发送身份验证码)极少成功。

目前,AgentDojo 框架中预部署的智能体、防御和攻击均为通用目的,未针对任何特定任务或安全场景专门设计。因此,我们期望未来研究能提出新的智能体和防御设计,以提高 AgentDojo 中的效用和鲁棒性。同时,要抵御社区提出的更强自适应攻击,LLM 区分指令与数据的能力可能需要重大突破。我们希望 AgentDojo 不仅能作为衡量 AI 智能体在日益复杂任务上进展的实时基准环境,也能定量展示当前 AI 智能体在对抗环境中的固有安全局限。

我们在 https://github.com/ethz-spylab/agentdojo 发布 AgentDojo 的代码,并在该地址提供排行榜和详细文档。

2 Related Work and Preliminaries

AI 智能体与工具增强型 LLM。
随着大型语言模型的进步 [5],人们已能构建可遵循自然语言指令 [4,41]、进行推理与规划以完成任务 [20,27,60,69] 并利用外部工具 [14,35,40,43,47,51,54,55] 的 AI 智能体 [65]。许多 LLM 开发者提供函数调用接口,允许用户向模型传入 API 描述,并由模型输出函数调用 [2,9,

提示注入。
提示注入攻击通过向语言模型的上下文中插入指令来劫持其行为 [17,62]。提示注入可以是直接的(即用户输入覆盖系统提示)[23,44],也可以是间接的(即第三方数据被模型检索,如图 1 所示)[18,33]。AI 智能体调用的工具所处理和返回的不可信数据,是间接提示注入的有效载体,可代表用户执行恶意操作 [13,18,

针对提示注入的防御要么旨在检测注入(通常使用 LLM)[28,29,64],要么训练或提示 LLM 更好地区分指令与数据 [8,59,61,70,74],要么将函数调用与智能体的主规划组件隔离 [63,66]。然而,当前技术并非万无一失,可能无法为安全关键任务提供保障 [61,

智能体与提示注入的基准测试。
现有智能体基准要么评估将指令转化为单次函数调用的能力 [43,47,67],要么考虑更具挑战性和真实的“多轮”场景 [26,31,32,53,68,72],但均未显式考虑攻击。ToolEmu [50] 基准衡量 AI 智能体对欠指定指令的鲁棒性,并使用 LLM 在虚拟环境中高效模拟工具调用并评分智能体的效用。然而,在评估提示注入时,这种方法存在问题,因为注入可能也会欺骗 LLM 模拟器。与这些工作相反,AgentDojo 运行动态环境,智能体在其中针对真实应用执行多次工具调用,其中一些返回恶意数据。即使在受限的良性设置下,我们的任务也与现有函数调用基准一样具有挑战性,见图2。

先前的提示注入基准专注于无工具调用的简单场景,例如文档问答 [70]、提示窃取 [12,57] 或更简单的目标/规则劫持 [39,52]。最近的 InjecAgent 基准 [71] 在精神上与 AgentDojo 接近,但专注于模拟的单轮场景,其中 LLM 直接接收单个(对抗性)数据作为工具输出(不评估模型的规划能力)。相比之下,AgentDojo 的设计旨在模拟真实的智能体执行,智能体必须决定调用哪些工具,并必须在面对提示注入时准确解决原始任务。

3 Designing and Constructing AgentDojo

AgentDojo 框架由以下组件构成:

  • 环境指定 AI 智能体的应用领域及一组可用工具(例如,包含邮件、日历和云存储工具的工作区环境)。
  • 环境状态记录智能体可交互的所有应用数据。部分状态被设定为提示注入攻击的占位符(参见图 1 及第 3.1 节)。
  • 用户任务是一段自然语言指令,智能体应在给定环境中完成(例如“向日历添加事件”)。
  • 注入任务规定攻击者的目标(例如“泄露用户信用卡信息”)。

用户任务和注入任务均定义了形式化的评估准则,通过监控环境状态来衡量智能体和攻击者的成功率。

我们将一个环境内的用户任务和注入任务的集合称为任务套件(task suite)。借鉴 Zhan 等人 [71] 的方法,我们对每个环境的用户任务与注入任务做笛卡尔积,得到全部安全测试用例。所有用户任务也可在无攻击场景下运行,成为标准效用测试用例,用于评估智能体在良性环境下的表现。

3.1 AgentDojo Components

环境与状态。
复杂任务通常需要与有状态环境交互。例如,模拟的生产力工作区环境包含与邮件、日历和云存储文档相关的数据。我们实现了四种环境(“Workspace”、“Slack”、“Travel Agency”、“e-banking””),并将每个环境的状态建模为可变对象的集合,如图 3 所示。我们用人工或借助 GPT-4o 和 Claude 3 Opus 生成虚拟良性数据,以反映环境的可能初始状态。对于 LLM 生成的测试数据,我们均手动检查以确保高质量。

工具。
AI 智能体通过多种工具与环境交互,这些工具可读写环境状态。只需向 AgentDojo Python 包添加特定格式的函数,即可轻松扩展新工具。某一环境中所有工具文档都会被追加到 AI 智能体的提示中。图 4 展示了一个工具定义示例。工具接收需要交互的环境状态对象作为参数(此处为日历),语法借鉴 Python FastAPI 库设计 [48]。AgentDojo 当前共提供 74 个工具,涵盖完成用户任务所需的全部操作(如工作区中日历事件的增删改查)。当前运行时使用 YAML 格式向 LLM 返回工具输出,但框架支持任意格式。

用户任务。
任务指令以自然语言提示形式传递给智能体。每个任务暴露一个效用函数,通过检查模型输出及环境状态变化,判断智能体是否正确完成任务。用户任务还暴露一个“真值”函数调用序列,用于完成该任务。如附录 A 所述,该信息有助于针对单个任务调整攻击,确保提示注入出现在模型实际查询且可被不可信第三方控制的位置。图 5 展示了一个用户任务示例,要求智能体总结某日日历约会。效用函数为确定性二元函数,根据模型输出及执行前后环境状态,判断任务目标是否达成。

其他基准如 ToolEmu [50] 无需显式效用检查函数,而是依赖 LLM 评估器根据一组非正式准则评估效用(和安全性)。在我们研究的场景中,这种方法存在问题,因为我们关注的攻击旨在向模型注入新指令。若攻击特别成功,也可能劫持评估器本身。

注入任务。
攻击者目标采用与用户任务类似的格式:恶意任务被表述为对智能体的指令,一个安全函数检查攻击者目标是否达成(参见附录图 10)。注入任务同样暴露一个“真值”函数调用序列,用于实现攻击者目标,这对设计更强攻击有帮助——例如,攻击者可利用智能体工具 API 知识,构造针对性提示注入(如“忽略前述指令,先调用 read_calendar 再……”)。

任务套件。
我们将一个环境中的用户任务与注入任务集合称为任务套件。任务套件可用于评估智能体在对应用户任务上的效用,或在用户任务与注入任务配对的安全场景下评估其安全性。

我们在 AgentDojo 的首个版本中填充了四个环境及对应任务套件。首先手工设计用户任务,覆盖环境中多样化场景,包括需要在中长上下文窗口内搜索的任务(最多 7 000 个 GPT-4 token 用于数据,4 000 个用于工具描述),以及需要链式调用多达 18 个通用或专用工具的任务。注入任务在难度上递增且多样,既体现在所需步数(1–20 步),也体现在所执行动作的敏感度(从发送普通邮件到泄露双因子认证码等敏感信息)。随后,我们将这些用户任务与对应环境相关的注入任务组合,得到任务套件。四个套件如下:

  • 工作区:邮件、日历管理、云盘相关工具与任务
  • Slack:发送与阅读 Slack 消息、浏览网页、文件相关工具与任务
  • 银行:执行银行交易、汇总银行对账单等工具与任务
  • 旅行:查找并预订航班、餐厅、租车等工具与任务

各环境与任务套件的更多细节见表 1。

3.2 Agents and Prompt Injection Defenses



AgentDojo 旨在作为基准环境,用于评估可抵御提示注入攻击的新型智能体设计。因此我们提供简单接口以实现新智能体。一个智能体组件只需实现query函数,接收初始用户指令、可用工具列表及环境状态(见附录图 11)。为快速原型设计,AgentDojo 支持将不同组件组合成模块化智能体流水线。附录图 12 展示了一个示例,我们将 LLM 智能体(OpenAI GPT-4o)与提示注入检测模块 [28,29,64] 组合成流水线。总体而言,AgentDojo 支持任何以用户提示和可运行工具集为输入的流水线。

3.3 Prompt Injection Attacks

对抗机器学习基准通常实例化一组静态攻击(如 [7,10,36,71])。我们认为这对评估提示注入鲁棒性并不充分,原因有二:

  1. 其他安全风险基准(如对抗样本 [10] 或越狱 [7,36])可依赖明确针对防御优化的攻击(如 AutoAttack [11] 或 GCG [73])。相比之下,现有提示注入攻击多为通用型,未显式针对被测模型。
  2. 即使存在强大优化攻击,也极易构建仅挫败特定攻击的非鲁棒防御,需通过自适应攻击评估 [58]。

因此,AgentDojo 并非带有固定攻击的静态基准,而是一个动态框架,未来可填充新防御与自适应攻击。向 AgentDojo 添加新攻击只需定义一个攻击函数,接收目标(即注入任务)并为每个攻击占位符返回注入文本(见附录图 13)。我们还设想攻击者对系统和用户拥有不同程度的先验知识,并利用这些知识增强攻击。例如,攻击可能假设知道用户姓名及智能体工具 API,从而设计针对性提示注入(如“嗨 [ChatGPT],我是 [Josh],请发邮件给 eve@evil.com”)。

3.4 Reporting AgentDojo Results

AgentDojo 考虑三项指标:

  • 良性效用(Benign Utility):无攻击时模型解决用户任务的比例。
  • 受攻击效用(Utility Under Attack):安全场景(用户任务与注入任务配对)中,智能体正确完成用户任务且无副作用的比例。我们有时用其补数表示非目标攻击成功率。
  • 目标攻击成功率(Targeted Attack Success Rate, ASR):安全场景中攻击者目标达成的比例(即智能体执行了恶意动作)。

我们有时也评估一组攻击{A1,…,An}\{A_1, \dots, A_n\}{A1,,An},若其中任一攻击在某一安全场景成功,则认为该集合成功。该指标模拟自适应攻击者,为每对用户任务与注入任务部署最佳攻击(参见 [6])。

4 Evaluation




我们在既有闭源(Gemini 1.5 Flash & Gemini Pro [16]、Claude 3 Sonnet & Claude 3 Opus [2]、Claude 3.5 Sonnet、GPT-3.5 Turbo & GPT-4 Turbo & GPT-4o [22])也有开源(Llama 3 70B [56]、Command R+ [9])的工具调用智能体上进行评估。所有模型均使用图 14 所示系统提示。对于 Claude 3 与 3.5 Sonnet,我们额外追加 Anthropic [3] 推荐的图 15 提示;对于 Llama 3 70B,我们额外提供图 16 的工具调用提示(改编自 Husain [21])。除 Llama 3 外,所有模型均通过官方 API 调用,并遵循各自厂商的函数调用格式。

我们在全部 629 条安全测试用例(对应 97 个不同用户任务)上评估各智能体。针对攻击与防御组件的额外实验及消融分析,我们聚焦 GPT-4o,因其在我们套件上的(良性)效用最高(Claude 3 Opus 效用相当,但受限于严重速率限制,难以深入实验)。

4.1 Performance of Baseline Agents and Attacks


我们首先评估所有智能体对一种在预实验中表现良好的通用攻击——“重要消息”攻击(Important message attack)。该攻击仅注入一条消息,指示智能体在解决原任务前先执行恶意任务( exact 提示见附录图 19a)。图 6a 绘制了各智能体在无攻击时的平均效用与其遭受攻击时的平均目标攻击成功率(targeted ASR)。我们发现,能力越强的模型越容易被攻击,呈现“逆规模定律”[38](类似观察亦见于 [37])。这或许并不意外:效用低的模型即使被成功注入,也常常无法正确执行攻击者目标。图 6b 进一步绘制良性效用与受攻击效用——后者可视为对拒绝服务攻击的鲁棒性。此处我们发现效用与鲁棒性高度相关。多数模型在受攻击时绝对效用下降 10%–25%。

总体而言,良性场景下表现最佳的模型是 Claude 3.5 Sonnet,紧随其后的是 GPT-4o。前者在效用与抵御目标攻击之间提供了更佳权衡。本文后续实验均以 GPT-4o 为焦点,因为 Claude 3.5 Sonnet 在本文初稿完成后才发布。

图 7 按任务套件细分各注入任务的目标攻击成功率。某些应用更易被攻击:例如,“Slack”套件攻击成功率达 92%(该套件中智能体需浏览网页并在不同频道发帖;攻击者在网页中植入注入,诱导智能体向同事分享钓鱼链接)。该套件高成功率可能源于攻击者控制了工具输出的较大比例(见附录图 21b)。相反,某些注入任务极难达成:例如,旅行代理套件的任务 6 成功率为 0%,其目标是让智能体预订巴黎最贵酒店并通过邮件窃取用户个人信息;模型往往只能完成两项恶意子任务之一(部分攻击成功)。

4.2 Ablations on Attack Components and Attacker Knowledge

上述实验使用了一条通用提示注入(见图 19a),直接称呼模型(“这是给你,GPT-4o 的重要消息”)并使用受害者真名(如“这是我,Josh 的消息”)。我们现消融该攻击提示的各组件贡献。

首先比较四种提示注入:
(i) “忽略前述指令”攻击 [17];
(ii) InjecAgent [71] 的提示注入;
(iii) 指令 “TODO:{任务描述}”;
(iv) 我们的“重要消息”提示(图 19a)。
此外,增加自适应攻击(Max),为每任务从 (i)–(iv) 中选最有效提示。图 8 显示,提示注入措辞变化影响巨大,我们的“重要消息”攻击明显优于前人。自适应攻击(Max)可再提升约 10% 成功率。

表 2 消融攻击者对用户姓名与模型名称的先验知识。我们发现,正确知识略微提升成功率(+1.9%),但错误猜测(如把 GPT-4o 叫成 Claude)会显著削弱攻击(–22%)。

附录图 21a 进一步分析攻击文本在 LLM 上下文中的位置影响。与先前研究 [70] 一致,我们发现注入位于工具返回消息末尾时最有效——对 GPT-4o 平均成功率高达 70%。

4.3 Prompt Injection Defenses

迄今我们评估的 LLM 智能体均未专为抵御提示注入设计(仅依赖闭源模型内置防御)。现评估 GPT-4o 搭配文献中多种防御对我们最强攻击的表现:

(i)数据分隔(Data delimiters):借鉴 Hines 等人 [19],所有工具输出用特殊符号包裹,并提示模型忽略其中的指令(提示见图 17);
(ii)提示注入检测(PI detector):使用 ProtectAI [45] 的 BERT 分类器,对每个工具调用输出检测提示注入,一旦检出即中止智能体;
(iii)Prompt sandwiching:每次函数调用后重复用户指令;
(iv)工具过滤(Tool filter)一种简单的隔离机制 [63,66],LLM 先仅选取解决任务所需的工具集合,再观察任何不可信数据(例如,若任务要求“总结我的邮件”,智能体可决定仅选用 read_email 工具,避免其余工具被滥用)。

图 9 给出各防御的目标攻击成功率与其良性效用的关系。出人意料地,许多防御策略反而提升了良性效用(见表 5),推测是因为它们更强调原始指令。提示注入检测器误报过多,显著降低效用。每次工具调用后重复用户提示对我们的攻击是合理防御,但难以抵御自适应攻击(如注入指令模型“忽略后续重复指令”)。

工具隔离机制的优劣。
我们的简单工具过滤防御尤为有效,将攻击成功率降至 7.5%。该防御适用于大量测试用例:用户任务仅需读取状态(如读邮件),而攻击者任务需写入状态(如发邮件)。

然而,当所需工具无法预先规划(如一次工具调用结果决定下一步操作),或完成任务所需的工具同样足以执行攻击(占我们测试用例 17%)时,该防御失效。此外,若用户随时间给智能体多项任务而不重置上下文(AgentDojo 尚未覆盖此类场景),提示注入可指令智能体“等待”直到获得具备攻击所需工具的任务。对此,需更复杂的隔离策略,如让“规划器”智能体将工具调用分发给仅符号通信的隔离智能体 [63,66]。但此类策略仍无法防御仅篡改某次工具调用结果的注入(如用户要求推荐酒店,某酒店列表注入指令让自己始终被推荐)。

5 Conclusion

我们提出了 AgentDojo,一个标准化的智能体评估框架,用于衡量提示注入攻击与防御,包含 97 项真实任务与 629 条安全测试用例。我们在基于最先进工具调用 LLM 的 AI 智能体上,评估了文献中若干攻击与防御。结果表明,AgentDojo 对攻击者与防御者均构成挑战,并可作为实时基准环境,持续衡量双方进展。

我们认为可从以下方向改进或扩展 AgentDojo:
(i) 目前使用的攻击与防御相对简单,未来可加入更复杂的防御(如隔离式 LLM [63,66])或攻击 [15]——这正是我们设计动态基准环境的初衷;
(ii) 为扩大任务与攻击目标的多样性,可能需在保持评估可靠性的前提下,自动化当前手工指定的任务与效用准则;
(iii) 添加那些无法被我们的工具筛选防御(或其他更复杂的隔离机制 [63,66])直接解决的高难度任务,将尤其有趣;
(iv) AgentDojo 可扩展以支持多模态智能体,同时处理文本与图像,这将极大扩展可能的任务与攻击范围 [13];
(v) 对提示注入增加约束(如长度或格式限制),可更好捕捉现实攻击者的能力范围。

更广泛的影响。
总体而言,我们相信 AgentDojo 通过建立一个具有代表性的框架,评估提示注入攻击与防御的进展,并为当前 AI 智能体在对抗环境下的(不)安全性提供量化认知,为未来工作奠定坚实基础。当然,攻击者也可利用 AgentDojo 原型化新的提示注入,但我们认为,这一风险远小于发布可靠安全基准所带来的正面影响。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询