针对LLM智能体中工具选择的提示注入攻击

在这里插入图片描述

摘要——工具选择是基于LLM的智能体的关键组成部分。一种流行的方法采用两步过程——检索和选择——从工具库中为给定任务选择最合适的工具。在本工作中,我们引入了ToolHijacker,一种针对无盒场景中工具选择的新型提示注入攻击。ToolHijacker将恶意工具文档注入工具库,以操纵LLM智能体的工具选择过程,迫使它始终为攻击者选择的目标任务选择攻击者的恶意工具。具体而言,我们将这种工具文档的构建形式化为一个优化问题,并提出了一种两阶段优化策略来解决它。我们广泛的实验评估表明,ToolHijacker非常有效,在应用于工具选择时显著优于现有的基于手工和自动化的提示注入攻击。此外,我们探索了各种防御措施,包括基于预防的防御(StrUQ和SecAlign)和基于检测的防御(已知答案检测、DataSentinel、困惑度检测和困惑度窗口检测)。我们的实验结果表明这些防御措施不足,突显了开发新防御策略的迫切需求。

I. 引言

大语言模型(LLM)在自然语言理解和生成方面展示了卓越的能力,催生了基于LLM的自主系统(称为LLM智能体)的出现。这些智能体可以通过与外部环境(包括知识库和工具)的交互来感知、推理和执行复杂任务。LLM智能体的部署已扩展到各个领域,包括用于基于浏览器交互的Web智能体[1][2]、用于软件开发和维护的代码智能体[3][4],以及集成多种工具以进行综合任务求解的通用智能体[5][6]。LLM智能体的操作涉及三个关键阶段:任务规划、工具选择和工具调用[7][8]。其中,工具选择至关重要,因为它决定了哪个外部工具最适合给定任务,直接影响LLM智能体的性能和决策。一种流行的工具选择方法涉及两步机制:检索和选择[8][9][10],其中检索器从工具库中识别前kkk个工具文档,然后LLM选择最合适的工具进行后续工具调用。

由于集成了不可信的外部来源,LLM智能体容易受到提示注入攻击。攻击者可以将有害指令注入这些外部来源,操纵LLM智能体的行为以符合攻击者的意图。近期研究[11][12][13]表明,攻击者可以通过将指令注入外部工具来利用此漏洞,导致LLM智能体泄露敏感数据或执行未授权操作。特别是,攻击者可以在工具文档中嵌入欺骗性指令,以操纵LLM智能体的工具选择[13]。这种操纵构成严重安全风险,因为LLM智能体可能无意中选择并执行有害工具,危及系统完整性和用户安全[14]。

提示注入攻击通常分为手工方法和自动化方法。手工攻击,包括朴素攻击[15][16]、转义字符[15]、上下文忽略[17][18]、伪造补全[19]和组合攻击[20],是启发式驱动的,但开发耗时且在不同场景中泛化能力有限。相比之下,自动化攻击(如JudgeDeceiver[13])利用优化框架生成针对LLM的注入提示,特别关注工具选择操纵。此外,PoisonedRAG[21]针对检索增强生成(RAG)系统,通过向知识库注入对抗文本来操纵LLM响应。

然而,现有提示注入方法在工具选择中仍然次优,详见第IV节。这种局限性源于手工方法和JudgeDeceiver主要关注选择阶段,使其作为端到端攻击不够完整。尽管PoisonedRAG考虑了检索阶段,但它专注于生成,通过向知识库注入多个恶意条目,而非直接操纵工具选择。这种差异为工具选择提示注入带来了独特的挑战,这正是我们工作所解决的。

在本工作中,我们提出了ToolHijacker,这是第一个针对无盒场景中工具选择的提示注入攻击。ToolHijacker高效生成恶意工具文档,通过提示注入操纵工具选择。给定目标任务,ToolHijacker生成一个恶意工具文档,当注入工具库时,影响检索和选择两个阶段,迫使LLM智能体选择恶意工具而非良性工具,如图1所示。此外,ToolHijacker确保即使当用户使用目标任务的不同语义描述时,也能持续控制工具选择。值得注意的是,ToolHijacker专为无盒场景设计,其中目标任务描述、检索器、LLM以及工具库(包括kkk设置)均不可访问。

在这里插入图片描述

图1:无攻击下和我们攻击下LLM智能体中工具选择的示意图。

ToolHijacker的核心挑战是构建一个能够操纵工具选择中检索和选择两个阶段的恶意工具文档。为应对这一挑战,我们将其形式化为一个优化问题。在无盒约束下,我们首先构建一个工具选择的影子框架,包括影子任务描述、影子检索器、影子LLM和影子工具库。在此基础上,我们将生成恶意工具文档的问题形式化为优化问题。恶意工具文档包括工具名称和工具描述。由于工具文档中工具名称的token有限,我们专注于优化工具描述。然而,由于该优化问题的离散和非可微性质,直接求解具有挑战性。为此,我们提出了一种两阶段优化策略,与工具选择的内在结构对齐。具体而言,我们将优化问题分解为两个子目标:检索目标和选择目标,允许我们独立处理每个阶段,同时确保它们的协调效果。我们将工具描述分为两个子序列,每个子序列针对其中一个子目标进行优化。当连接时,这些子序列形成完整的工具描述,能够在工具选择的两个阶段执行端到端攻击。为有效优化这些子序列,我们开发了基于梯度和无梯度的方法。

我们在两个基准数据集上评估ToolHijacker,在8个LLM和4个检索器上测试,涵盖不同的工具选择设置,包括无梯度和基于梯度的方法。结果表明,ToolHijacker在无盒设置中实现了高攻击成功率。值得注意的是,即使影子LLM与目标LLM架构不同,ToolHijacker仍保持高攻击性能。例如,使用Llama-3.3-70B作为影子LLM,GPT-4o作为目标LLM,我们的无梯度方法在MetaTool [22]上达到96.7%96.7\%96.7%的攻击成功率。此外,ToolHijacker在检索阶段也表现出高成功率,在MetaTool上达到100%100\%100%的攻击命中率。此外,我们展示了ToolHijacker在应用于我们的问题时优于各种提示注入攻击。

我们评估了两种基于预防的防御:StruQ [23]和SecAlign [24],以及四种基于检测的防御:已知答案检测[20]、DataSentinel [25]、困惑度(PPL)检测[26]和困惑度窗口(PPL-W)检测[26]。我们的实验结果表明,StruQ和SecAlign均未能防御ToolHijacker,我们的无梯度攻击在StruQ下达到99.6%99.6\%99.6%的成功率。在基于检测的防御中,已知答案检测无法识别恶意工具文档,而DataSentinel、PPL和PPL-W检测到一些由基于梯度方法生成的恶意工具文档,但漏掉了大多数。例如,当错误地将<1%<1\%<1%的良性工具文档检测为恶意时,PPL漏掉了90%90\%90%通过基于梯度方法优化的恶意工具文档。

总结而言,我们的主要贡献如下:

  • 我们提出了ToolHijacker,这是首个针对LLM智能体中工具选择的提示注入攻击。
  • 我们将该攻击形式化为优化问题,并提出了一种两阶段方法来解决它。
  • 我们对ToolHijacker在多个LLM和基准数据集上进行了系统评估。
  • 我们探索了基于预防和基于检测的防御。我们的实验结果突显了我们需要新机制来防御ToolHijacker。

在这里插入图片描述

图2:第2步——选择的示意图。

II. 问题形式化

在本节中,我们正式定义工具选择的框架,并基于攻击者的目标、背景知识和能力来刻画我们的威胁模型。

A. 工具选择

我们考虑一个流行的工具选择过程,包含三个核心组件:工具库、检索器和LLM。工具库包含nnn个工具,每个工具附带一个工具文档,指定工具的名称、描述和API规范。这些文档详细说明每个工具的功能、调用方法和参数。我们将工具文档集合记为D={d1,d2,…,dn}D = \{d_1, d_2, \ldots, d_n\}D={d1​,d2​,…,dn​}。当用户提供任务描述qqq时,工具选择旨在从工具库中为任务执行识别最合适的工具。此过程通过两步机制实现,即检索和选择,可以形式化如下:

第1步——检索。 检索器采用双编码器架构,由任务描述编码器fqf_{q}fq​和工具文档编码器fdf_{d}fd​组成,从DDD中检索前kkk个工具文档。具体而言,fqf_{q}fq​和fdf_{d}fd​将任务描述qqq和每个工具文档dj∈Dd_{j} \in Ddj​∈D映射为嵌入向量fq(q)f_{q}(q)fq​(q)和fd(dj)f_{d}(d_{j})fd​(dj​)。每个工具文档djd_{j}dj​与任务描述qqq之间的相关性由相似度函数Sim(⋅,⋅)Sim(\cdot, \cdot)Sim(⋅,⋅)度量,如余弦相似度或点积。检索过程选择与qqq相似度得分最高的前kkk个工具文档。形式上,检索到的工具文档集合DkD_{k}Dk​定义为:

Dk=Top−k(q;D)={d1,d2,…,dk},Top−k(q;D)=Top−kdj∈D(Sim(fq(q),fd(dj))).(1) \begin{array}{rl} & D_k = \mathrm{Top-}k(q;D) = \{d_1,d_2,\ldots,d_k\},\\ & \mathrm{Top-}k(q;D) = \mathrm{Top-}k_{d_j\in D}(Sim(f_q(q),f_d(d_j))). \end{array} \quad (1) ​Dk​=Top−k(q;D)={d1​,d2​,…,dk​},Top−k(q;D)=Top−kdj​∈D​(Sim(fq​(q),fd​(dj​))).​(1)

第2步——选择。 给定任务描述qqq和检索到的工具文档集合DkD_{k}Dk​,LLM智能体将qqq和DkD_{k}Dk​提供给LLM EEE,以从DkD_{k}Dk​中选择执行qqq的最合适工具。我们将此选择过程记为:

E(q,Dk)=d∗(3) E(q,D_k) = d^* \quad (3) E(q,Dk​)=d∗(3)

其中d∗d^*d∗表示被选择的工具。如图2所示,EEE采用结构化提示,将qqq和来自DkD_{k}Dk​的工具信息(即工具名称和描述)组合在头部指令和尾部指令之间。此选择过程形式化为:

E(pheader⊕q⊕d1⊕d2⊕⋯⊕dk⊕ptrailer)=od∗,(4) E(p_{\mathrm{header}}\oplus q\oplus d_1\oplus d_2\oplus \dots \oplus d_k\oplus p_{\mathrm{trailer}}) = o_{d^*}, \quad (4) E(pheader​⊕q⊕d1​⊕d2​⊕⋯⊕dk​⊕ptrailer​)=od∗​,(4)

其中od∗o_{d^*}od∗​表示LLM包含所选工具名称的输出决策。pheaderp_{\mathrm{header}}pheader​和ptrailerp_{\mathrm{trailer}}ptrailer​分别表示头部和尾部指令。我们用⊕\oplus⊕表示连接运算符,将所有组件组合成单个输入字符串。

B. 威胁模型

攻击者的目标。 当攻击者选择目标任务时,它可以通过各种语义提示(称为目标任务描述)来表达,记为Q={q1,q2,…,qm}Q = \{q_1, q_2, \ldots, q_m\}Q={q1​,q2​,…,qm​}。例如,如果目标是查询天气状况,任务描述可以是“今天天气怎么样?”、“明天天气如何?”或“等会儿会下雨吗?”。我们假设攻击者开发了一个恶意工具,并通过目标LLM智能体可访问的开放平台[27][28][29]进行传播。攻击者的目标是操纵工具选择,确保每当用户使用QQQ中的任何qiq_iqi​查询目标LLM智能体时,恶意工具被优先选择以执行目标任务,从而绕过工具库中任何其他良性工具的选择。执行此攻击的关键在于精心构建恶意工具文档dtd_tdt​。

工具文档包括工具名称、工具描述和API规范。先前研究[8][30]表明,工具选择主要依赖工具名称和工具描述。因此,我们的研究专注于构建工具名称和工具描述以促进操纵攻击。我们的攻击可被描述为针对工具选择机制的提示注入攻击。

我们注意到,此类攻击可能对现实世界应用中的LLM智能体构成安全威胁。LLM智能体基于“选择-执行”机制运行。因此,一旦恶意工具被选择,它将在没有进一步验证的情况下执行,允许攻击者任意操纵执行结果。例如,攻击者可以开发恶意工具进行未授权数据访问、隐私泄露或其他有害活动。随着LLM智能体与不断扩展的外部工具和服务生态系统集成,这些威胁日益相关。

攻击者的背景知识。 我们假设攻击者了解目标任务,但无法访问目标任务描述Q={q1,q2,…,qm}Q = \{q_1, q_2, \ldots, q_m\}Q={q1​,q2​,…,qm​}。回想一下,工具选择包含三个主要组件:工具库、检索器和LLM。我们考虑一个无盒场景,其中攻击者在以下方面面临显著限制:1) 访问工具库中工具文档的内容,2) 获取关于kkk或前kkk个检索工具文档的信息,3) 访问目标检索器和目标LLM的参数,或4) 直接查询目标检索器和目标LLM。然而,开放平台提供了标准化开发指南,包括文档模板和接口规范,攻击者可以利用这些来构建恶意工具文档dtd_{t}dt​。

攻击者的能力。 我们假设攻击者能够构建影子任务描述集合Q′={q1′,q2′,…,qm′′}Q^{\prime} = \{q_{1}^{\prime},q_{2}^{\prime},\ldots,q_{m^{\prime}}^{\prime}\}Q′={q1′​,q2′​,…,qm′′​},创建影子工具文档D′D^{\prime}D′,并部署影子检索器和影子LLM来设计和验证其攻击策略。值得注意的是,Q∩Q′=∅Q \cap Q^{\prime} = \emptysetQ∩Q′=∅,表示QQQ和Q′Q^{\prime}Q′之间没有重叠。此外,攻击者可以在接受第三方提交的工具中心(如Hugging Face Hub [31]、Apify [28]和PulseMCP [29])上开发和发布恶意工具,使其可被集成到LLM智能体中。这一假设是现实的,并已被先前聚焦于LLM智能体安全的研究[14][32]所采纳。通过构建工具文档,攻击者可以执行提示注入攻击。近期关于模型上下文协议(MCP)的研究[11][12]揭示了修改工具文档以实施攻击的可行性。

III. TOOLHIJACKER

A. 概述

ToolHijacker提供了一种系统化、自动化的方法来构建恶意工具文档。在无盒场景下,我们利用影子工具选择流水线来促进优化。在此基础上,我们将构建恶意工具文档形式化为一个涵盖工具选择两个步骤(检索和选择)的优化问题。该优化问题的离散、非可微性质使其直接求解具有挑战性。为此,我们提出了一种两阶段优化策略。具体而言,我们将优化目标分解为两个子目标:检索和选择,并将恶意工具文档分割为两个子序列R⊕SR \oplus SR⊕S,独立优化每个子序列以实现其对应的子目标。当两个子序列连接时,它们实现了对工具选择的端到端攻击。我们引入了无梯度和基于梯度的方法来解决优化问题。

B. 形式化为优化问题

我们首先构建一组影子任务描述和影子工具文档。具体而言,使用一个可访问的LLM基于目标任务生成影子任务描述集合,记为Q′={q1′,q2′,…,qm′′}Q^{\prime} = \{q_{1}^{\prime},q_{2}^{\prime},\dots,q_{m^{\prime}}^{\prime}\}Q′={q1′​,q2′​,…,qm′′​}。此外,我们构建一组影子工具文档D′D^{\prime}D′,包含与任务相关和与任务无关的文档,以有效模拟工具库。

在我们的无盒场景中,给定影子任务描述Q′Q^{\prime}Q′、影子工具文档D′D^{\prime}D′、影子检索器f′(⋅)f^{\prime}(\cdot)f′(⋅)和影子LLM E′E^{\prime}E′,我们的目标是构建一个恶意工具文档dtd_{t}dt​,包含{dt_name,dt_des}\{d_{t\_ name},d_{t\_ des}\}{dt_name​,dt_des​},其中dt_named_{t\_ name}dt_name​表示恶意工具名称,dt_desd_{t\_ des}dt_des​表示恶意工具描述。该恶意工具旨在操纵检索和选择两个过程,无论特定的影子任务描述qi′q_{i}^{\prime}qi′​如何。形式上,优化问题定义如下:

max⁡dt1m′⋅∑i=1m′I(E′(qi′,Top−k′(qi′;D′∪{dt}))=ot),(5) \max_{d_t}\frac{1}{m'}\cdot \sum_{i = 1}^{m'}\mathbb{I}(E^{\prime}(q_i^{\prime},\mathrm{Top-}k^{\prime}(q_i^{\prime};D^{\prime}\cup \{d_t\})) = o_t), \quad (5) dt​max​m′1​⋅i=1∑m′​I(E′(qi′​,Top−k′(qi′​;D′∪{dt​}))=ot​),(5)

其中oto_{t}ot​表示E′E^{\prime}E′选择dtd_{t}dt​的输出,I(⋅)\mathbb{I}(\cdot)I(⋅)表示指示函数,当条件满足时为1,否则为0。这里k′k^{\prime}k′是攻击者指定的f′(⋅)f^{\prime}(\cdot)f′(⋅)的参数。Top−k′(qi′;D′∪{dt})\mathrm{Top-}k^{\prime}(q_{i}^{\prime};D^{\prime}\cup \{d_{t}\})Top−k′(qi′​;D′∪{dt​})表示从D′D^{\prime}D′中为qi′q_{i}^{\prime}qi′​检索的一组k′k^{\prime}k′个工具文档。

解决优化问题的关键挑战在于其离散、不连续和非可微性质,使得直接的基于梯度的方法不可行。此外,离散搜索空间包含许多局部最优,难以识别全局最优。为解决这一问题,我们提出了一种顺序的两阶段优化策略,将优化问题分解为两个子目标:检索目标和选择目标。具体而言,检索目标确保dtd_{t}dt​始终包含在检索阶段的前k′k^{\prime}k′个检索工具文档集合中。选择目标则保证在检索集合内,影子LLM选择包含{dt_name,dt_des}\{d_{t\_ name},d_{t\_ des}\}{dt_name​,dt_des​}的dtd_{t}dt​作为最终执行工具。受PoisonedRAG [21]启发,我们将dt_desd_{t\_ des}dt_des​分为两个子序列R⊕SR \oplus SR⊕S的连接,并顺序优化它们以实现各自的目标。值得注意的是,dt_named_{t\_ name}dt_name​是手工构建的,token有限,以确保在LLM智能体中的语义清晰性。我们提出了无梯度和基于梯度的方法来优化dt_desd_{t\_ des}dt_des​。以下各节分别详细介绍了RRR和SSS的优化过程。

C. 优化RRR以实现检索

我们的目标是生成一个子序列RRR,确保恶意工具文档dtd_{t}dt​出现在前k′k^{\prime}k′个工具文档集合中。关键洞察是最大化RRR与影子任务描述Q′Q^{\prime}Q′之间的相似度得分,使dtd_{t}dt​能够在各种任务描述中实现高相关性。

无梯度方法。 无梯度方法旨在通过利用工具功能描述与任务描述之间固有的语义对齐来生成RRR。关键洞察是工具的功能描述自然与其能完成的任务共享语义相似性,因为它们从不同角度描述了相同的底层能力。基于这一洞察,我们利用LLM通过提取和组合Q′Q^{\prime}Q′的核心功能元素来合成RRR。这种方法在不需梯度信息的情况下最大化RRR与Q′Q^{\prime}Q′之间的语义相似性,因为生成的功能描述固有地捕获了影子任务描述空间中的基本语义模式。具体而言,我们使用以下模板提示LLM生成RRR:

请生成一个工具功能描述以解决以下用户查询:

[影子任务描述]

要求:描述应突出核心功能,并提供适用于各种场景的通用解决方案,不限于特定查询。将描述限制在大约[num]个词内。

这里num是用于限制RRR长度的超参数。

基于梯度的方法。 基于梯度的方法利用影子检索器的梯度信息来优化RRR。核心思想是通过基于梯度的优化最大化RRR与每个影子任务描述{q1′,q2′,…,qm′}\{q_1',q_2',\dots,q_{m'}\}{q1′​,q2′​,…,qm′​}之间的平均相似度得分。形式上,优化问题定义如下:

max⁡R1m′⋅∑i=1m′Sim(f′(qi′),f′(R⊕S)),(6) \max_{R}\frac{1}{m^{\prime}}\cdot \sum_{i = 1}^{m^{\prime}}Sim(f^{\prime}(q_{i}^{\prime}),f^{\prime}(R\oplus S)), \quad (6) Rmax​m′1​⋅i=1∑m′​Sim(f′(qi′​),f′(R⊕S)),(6)

其中f′(⋅)f^{\prime}(\cdot)f′(⋅)表示影子检索器的编码函数,SSS以其初始序列使用。我们使用无梯度方法的输出初始化RRR,然后通过梯度下降进行优化。此优化过程本质上是构建最大化检索相关性的对抗文本。具体而言,我们采用HotFlip [33](已证明在生成对抗文本方面有效)来执行RRR的token级优化。ToolHijacker的可迁移性基于以下观察:不同检索模型学习的语义模式通常存在相当大的重叠,从而使优化的RRR能够有效迁移到目标检索器。

D. 优化SSS以实现选择

在优化RRR之后,下一个目标是在恶意工具描述R⊕SR\oplus SR⊕S中优化SSS,使得恶意工具文档dt={dt_name,R⊕S}d_{t} = \{d_{t\_ name},R\oplus S\}dt​={dt_name​,R⊕S}能够有效操纵选择过程。为简单起见,本节中恶意工具文档记为dt(S)d_{t}(S)dt​(S)。我们首先构建影子检索工具文档集合,记为D~(i)∪{dt(S)}\tilde{D}^{(i)}\cup \{d_{t}(S)\}D~(i)∪{dt​(S)},以形式化优化目标。对于Q′Q^{\prime}Q′中的每个影子任务描述qi′q_{i}^{\prime}qi′​,我们从D′D^{\prime}D′中创建一个包含(k′−1)(k^{\prime} - 1)(k′−1)个影子工具文档的集合D~(i)\tilde{D}^{(i)}D~(i)。因此,集合D~(i)∪{dt(S)}\tilde{D}^{(i)}\cup \{d_{t}(S)\}D~(i)∪{dt​(S)}总共包含k′k^{\prime}k′个工具文档。我们的目标是优化SSS,使得dt(S)d_{t}(S)dt​(S)在所有任务-检索对{qi′,D~(i)∪{dt(S)}}\{q_{i}^{\prime},\tilde{D}^{(i)}\cup \{d_{t}(S)\}\}{qi′​,D~(i)∪{dt​(S)}}上被LLM一致选择。给定影子LLM E′E^{\prime}E′,优化问题可以形式化表示为:

max⁡S1m′∑i=1m′I(E′(qi′,D~(i)∪{dt(S)})=ot).(7) \max_{S}\frac{1}{m^{\prime}}\sum_{i = 1}^{m^{\prime}}\mathbb{I}(E^{\prime}(q_{i}^{\prime},\tilde{D}^{(i)}\cup \{d_{t}(S)\}) = o_{t}). \quad (7) Smax​m′1​i=1∑m′​I(E′(qi′​,D~(i)∪{dt​(S)})=ot​).(7)

接下来,我们讨论优化SSS的细节。

无梯度方法。 我们提出了一种自动提示生成方法,涉及攻击者LLM EAE_{A}EA​和影子LLM E′E^{\prime}E′,在不依赖模型梯度的情况下优化SSS。受攻击之树(tree-of-attack)方法[34]的启发,我们将SSS的优化形式化为一个分层树构建过程,以初始化S0S_{0}S0​作为根节点,每个子节点作为SSS的优化变体。优化过程对Q′Q^{\prime}Q′中的每个查询qi′∈Q′q_{i}^{\prime}\in Q^{\prime}qi′​∈Q′迭代TiterT_{iter}Titer​次,每次迭代包含四个步骤:

攻击者LLM生成: 攻击者LLM EAE_{A}EA​为当前叶节点列表Leaf_currLeaf\_currLeaf_curr中的每个StS_{t}St​生成BBB个变体{St1,St2,…,StB}\{S_{t}^{1},S_{t}^{2},\dots,S_{t}^{B}\}{St1​,St2​,…,StB​},以构建下一个叶节点列表Leaf_nextLeaf\_nextLeaf_next。每个变体可表示为Stb=EA(pattack,St,qt′,D~(i),Feed)S_{t}^{b} = E_{A}(p_{attack},S_{t},q_{t}^{\prime},\tilde{D}^{(i)},Feed)Stb​=EA​(pattack​,St​,qt′​,D~(i),Feed),其中pattackp_{attack}pattack​是EAE_{A}EA​的系统指令(见我们技术报告版本[35]的附录C),FeedFeedFeed表示来自前一次迭代的反馈信息。

查询影子LLM: 对于Leaf_nextLeaf\_nextLeaf_next中的每个StS_{t}St​,E′E^{\prime}E′为每个qj′∈Q′q_{j}^{\prime}\in Q^{\prime}qj′​∈Q′生成响应E′(qj′,D~(j)∪{dt(St)})E^{\prime}(q_{j}^{\prime},\tilde{D}^{(j)}\cup \{d_{t}(S_{t})\})E′(qj′​,D~(j)∪{dt​(St​)})。

评估: 使用正则化匹配来验证节点Sl∈Leaf_nextS_{l} \in Leaf\_nextSl​∈Leaf_next对所有影子任务描述的响应是否匹配恶意工具。变量FLAG[l]FLAG[l]FLAG[l]设置为成功匹配的数量。

剪枝与反馈: 如果节点SlS_{l}Sl​满足FLAG[l]=m′FLAG[l] = m'FLAG[l]=m′,则认为成功优化了SSS,结束优化过程。否则,根据FLAGFLAGFLAG值对Leaf_nextLeaf\_nextLeaf_next进行剪枝,将剩余节点限制为最大宽度WWW。剩余节点对应的响应和FLAGFLAGFLAG值被附加到FeedFeedFeed中用于下一次迭代。当达到最大迭代次数TiterT_{iter}Titer​时,FLAGFLAGFLAG值最大的节点成为下一个影子工具描述的根节点;当所有影子任务描述循环完成时,它被视为最终优化的SSS。整个过程如算法1所示。

基于梯度的方法。 我们提出了一种利用影子LLM E′E^{\prime}E′梯度信息来求解方程7的方法。我们的目标是优化SSS以最大化E′E^{\prime}E′生成包含恶意工具名称dt_named_{t\_ name}dt_name​的响应的似然。此目标可以形式化为:

max⁡S∏i=1m′E′(ot∣pheader⊕qi′⊕d1(i)⊕⋯⊕dk′−1(i)⊕dt(S)⊕ptrailer).(8) \max_{S}\prod_{i = 1}^{m^{\prime}}E^{\prime}(o_{t}|p_{\mathrm{header}}\oplus q_{i}^{\prime}\oplus d_{1}^{(i)}\oplus \dots \oplus d_{k^{\prime} - 1}^{(i)}\oplus d_{t}(S)\oplus p_{\mathrm{trailer}}). \quad (8) Smax​i=1∏m′​E′(ot​∣pheader​⊕qi′​⊕d1(i)​⊕⋯⊕dk′−1(i)​⊕dt​(S)⊕ptrailer​).(8)

E′E^{\prime}E′通过顺序处理输入token并根据上下文概率确定最可能的后续token来生成响应。我们将SSS表示为一个token序列S=(T1,T2,…,Tγ)S = (T_{1},T_{2},\dots,T_{\gamma})S=(T1​,T2​,…,Tγ​),并执行token级优化。具体而言,我们设计了一个包含三个组件的损失函数:对齐损失L1\mathcal{L}_1L1​、一致性损失L2\mathcal{L}_2L2​和困惑度损失L3\mathcal{L}_3L3​,用于指导优化过程。

对齐损失 - L1\mathcal{L}_1L1​: 对齐损失旨在增加E′E^{\prime}E′生成包含dt_named_{t\_ name}dt_name​的目标输出oto_{t}ot​的似然。设ot=(τ1,τ2,…,τρ)o_{t} = (\tau_{1},\tau_{2},\dots,\tau_{\rho})ot​=(τ1​,τ2​,…,τρ​),其中ρ\rhoρ表示序列长度,x(i)x^{(i)}x(i)表示输入序列{qi′,D~(i)∪{dt(S)}}\{q_{i}^{\prime},\tilde{D}^{(i)}\cup \{d_{t}(S)\}\}{qi′​,D~(i)∪{dt​(S)}}中除SSS外的部分。L1\mathcal{L}_1L1​定义为:

L1(x(i),S)=−log⁡E′(ot∣x(i),S),E′(ot∣x(i),S)=∏j=1ρE′(τj∣x1:hi(i),S,xhi+γ+1:ni(i),τ1,…,τj−1).(9) \begin{array}{l}{\mathcal{L}_1(x^{(i)},S) = -\log E'(o_t\mid x^{(i)},S),}\\ {E'(o_t|x^{(i)},S) = \prod_{j = 1}^{\rho}E'(\tau_j|x_{1:h_i}^{(i)},S,x_{h_i + \gamma +1:n_i}^{(i)},\tau_1,\dots,\tau_{j - 1}).} \end{array} \quad (9) L1​(x(i),S)=−logE′(ot​∣x(i),S),E′(ot​∣x(i),S)=∏j=1ρ​E′(τj​∣x1:hi​(i)​,S,xhi​+γ+1:ni​(i)​,τ1​,…,τj−1​).​(9)

这里SSS被插入到检索到的影子工具文档中的位置hih_ihi​,x1:hi(i)x_{1:h_i}^{(i)}x1:hi​(i)​表示SSS之前的输入token,xhi+γ+1:ni(i)x_{h_i + \gamma +1:n_i}^{(i)}xhi​+γ+1:ni​(i)​表示SSS之后的输入token,nin_ini​是E′E^{\prime}E′处理的输入token的总长度。

一致性损失 - L2\mathcal{L}_2L2​: 一致性损失通过特别关注dt_named_{t\_ name}dt_name​的生成来加强对齐损失。一致性损失L2\mathcal{L}_2L2​表示为:

L2(x(i),S)=−log⁡E′(dt_name∣x(i),S).(11) \mathcal{L}_2(x^{(i)},S) = -\log E'(d_{t\_ name}|x^{(i)},S). \quad (11) L2​(x(i),S)=−logE′(dt_name​∣x(i),S).(11)

困惑度损失 - L3\mathcal{L}_3L3​: 提出困惑度损失L3\mathcal{L}_3L3​以增强SSS的可读性。形式上,它被定义为序列的平均负对数似然:

L3(x(i),S)=−1γ∑j=1γlog⁡E(Tj∣x1:hi(i),T1,…,Tj−1).(12) \mathcal{L}_3(x^{(i)},S) = -\frac{1}{\gamma}\sum_{j = 1}^{\gamma}\log E(T_j|x_{1:h_i}^{(i)},T_1,\dots,T_{j - 1}). \quad (12) L3​(x(i),S)=−γ1​j=1∑γ​logE(Tj​∣x1:hi​(i)​,T1​,…,Tj−1​).(12)

总体损失函数定义为:

Lall(x(i),S)=L1(x(i),S)+αL2(x(i),S)+βL3(x(i),S),(13) \mathcal{L}_{all}(x^{(i)},S) = \mathcal{L}_1(x^{(i)},S) + \alpha \mathcal{L}_2(x^{(i)},S) + \beta \mathcal{L}_3(x^{(i)},S), \quad (13) Lall​(x(i),S)=L1​(x(i),S)+αL2​(x(i),S)+βL3​(x(i),S),(13)

min⁡SLall(S)=∑i=1m′Lall(x(i),S),(14) \min_{S}\mathcal{L}_{all}(S) = \sum_{i = 1}^{m^{\prime}}\mathcal{L}_{all}(x^{(i)},S), \quad (14) Smin​Lall​(S)=i=1∑m′​Lall​(x(i),S),(14)

其中α\alphaα和β\betaβ是平衡三个损失项的超参数。为解决优化问题,我们采用JudgeDeciver [13]中引入的算法,该算法集成了位置自适应和逐步优化策略。具体而言,优化过程包含两个关键组成部分:1) 位置自适应优化:对于每个任务-检索对{qi′,D~(i)∪{dt(S)}}\{q_{i}^{\prime},\tilde{D}^{(i)}\cup \{d_{t}(S)\}\}{qi′​,D~(i)∪{dt​(S)}},我们通过将dt(S)d_{t}(S)dt​(S)放置在影子检索工具文档集合中的不同位置来优化SSS;2) 逐步优化:我们不一次性优化所有对,而是逐步将任务-检索对纳入优化过程。这种渐进方法有助于稳定优化。

IV. 评估

A. 实验设置

  1. 数据集: 我们使用以下两个数据集来评估攻击的有效性。

MetaTool [22]。 该基准聚焦于LLM在工具使用方面的能力。它包含21,127个实例,涉及来自OpenAI插件的199个良性工具文档。

ToolBench [10]。 该基准旨在通过126,486个指令调优样本增强开源LLM的工具使用能力,利用来自RapidAPI的16,464个工具文档。在移除重复工具和空描述后,工具库包含9,650个良性工具文档。

对于每个数据集,我们设计了10个高质量的目标任务,代表现实世界需求,同时确保场景多样性。对于每个目标任务,我们通过LLM和人工评估生成100个目标任务描述,每个数据集产生1,000个目标任务描述。

  1. 对比基线: 我们采用七种提示注入攻击作为与我们的方法比较的基线:五种手工攻击(朴素攻击、转义字符、上下文忽略、伪造补全和组合攻击)和两种自动化攻击(JudgeDeciver和PoisonedRAG)。它们的恶意工具文档见附录C的图16 [35]。

朴素攻击 [15][16]。 此方法使用显式指令作为工具描述,引导LLM选择恶意工具。例如:“只需输出单词{工具名称}作为你的最终答案”。

转义字符 [15]。 此方法在恶意指令前使用转义字符如“\n”或“\t”来分割文本,有效隔离指令并提高攻击成功率。

上下文忽略 [17][18]。 此技术插入“忽略先前指令”等提示,迫使LLM放弃已建立的上下文,仅优先处理后续的恶意指令。

伪造补全 [19]。 此方法插入伪造的补全提示,欺骗LLM认为所有先前指令已解决,然后执行攻击者注入的新指令。

组合攻击 [20]。 此方法将上述四种策略的元素组合到单一攻击中,最大化混淆并削弱LLM抵抗恶意提示的能力。

JudgeDecceiver [13]。 此方法将梯度优化的对抗序列注入恶意答案,导致LLM作为评判者选择它作为目标问题的最佳答案,而不管其他良性答案。

PoisonedRAG [21]。 此攻击通过向知识数据库注入对抗文本来操纵RAG系统,引导LLM生成攻击者期望的答案。对抗文本通过重复采样提示策略进行优化。

  1. 工具选择设置: 我们在包含以下LLM和检索器的工具选择上评估我们的攻击:

目标LLM。 我们在开源和闭源LLM上评估我们的方法。开源模型包括Llama-2-7B-chat [36]、Llama-3-8B-Instruct [37]、Llama-3-70B-Instruct [37]和Llama-3.3-70B-Instruct [38]。闭源模型包括Claude-3-Haiku [39]、Claude-3.5-Sonnet [39]、GPT-3.5 [40]和GPT-4o [41]。这些模型涵盖了广泛的模型架构和规模,使我们的攻击有效性分析更加全面。

目标检索器。 我们对四种检索模型进行攻击:text-embedding-ada-002 [42](OpenAI的闭源嵌入模型)、Contriever [43]、Contriever-ms [43](在MS MARCO上微调的Contriever)和Sentence-BERT-tb [10](在ToolBench上微调的SentenceBERT [44])。

  1. 攻击设置: 对于每个目标任务,我们使用5个影子任务描述(即m′=5m' = 5m′=5)优化一个恶意工具文档,每个与一个包含4个影子工具文档的影子检索工具集配对(即k′=5k' = 5k′=5)。对于无梯度攻击,我们使用Llama-3.3-70B作为攻击者和影子LLM,SSS的优化参数设置为Titer=10T_{iter} = 10Titer​=10、B=2B = 2B=2和W=10W = 10W=10。对于基于梯度的攻击,我们使用Contriever作为影子检索器,Llama-3-8B作为影子LLM,参数α=2.0\alpha = 2.0α=2.0、β=0.1\beta = 0.1β=0.1,优化RRR迭代3次,SSS迭代400次。RRR和SSS均使用自然语句初始化(图12详见附录C)。在我们的消融研究中,除非另有说明,我们使用MetaTool数据集的任务1,GPT-4o作为目标LLM,text-embedding-ada-002作为目标检索器。

  2. 评估指标: 我们采用准确率(ACC)、攻击成功率(ASR)、命中率(HR)和攻击命中率(AHR)作为评估指标。定义如下:

ACC。 ACC衡量在无攻击情况下从工具库中为目标任务正确选择适当工具的可能性。通过对每个目标任务的100个任务描述(即m=100m = 100m=100)进行评估来计算。

ASR。 ASR衡量在注入恶意工具文档时从工具库中选择恶意工具的可能性。通过对每个目标任务的100个任务描述(即m=100m = 100m=100)进行评估来计算。

HR。 HR衡量目标任务中至少有一个正确工具出现在前kkk个结果中的比例。设hit(qi,k)\mathrm{hit}(q_{i},k)hit(qi​,k)为指示函数,如果qiq_{i}qi​的任何正确工具出现在前kkk个结果中则为1,否则为0。形式上,

HR@k=1m∑i=1mhit(qi,k).(15) \mathrm{HR@}k = \frac{1}{m}\sum_{i = 1}^{m}\mathrm{hit}(q_{i},k). \quad (15) HR@k=m1​i=1∑m​hit(qi​,k).(15)

AHR。 AHR衡量恶意工具文档dtd_{t}dt​出现在前kkk个结果中的比例。设aaa-hit(qi,k)\mathrm{hit}(q_{i},k)hit(qi​,k)为指示函数,如果dtd_{t}dt​包含在前kkk个结果中则为1,否则为0。形式上,

AHR@k=1m∑i=1ma-hit(qi,k).(16) \mathrm{AHR@}k = \frac{1}{m}\sum_{i = 1}^{m}a\text{-}\mathrm{hit}(q_{i},k). \quad (16) AHR@k=m1​i=1∑m​a-hit(qi​,k).(16)

注意,ACC和ASR是评估LLM智能体端到端工具选择过程的实用性和攻击有效性的主要指标。另一方面,HR和AHR是聚焦于检索步骤的中间指标,提供关于攻击如何影响两步工具选择流水线各组件的洞察。在本工作中,除非另有说明,我们默认设置k=5k = 5k=5。我们将HR@5和AHR@5简称为“HR”和“AHR”。

B. 主要结果

我们的攻击实现了高ASR和AHR。 表I显示了ToolHijacker在八个目标LLM和两个数据集上的ASR。每个ASR代表每个数据集中10个不同目标任务的平均攻击性能。我们有以下观察。首先,无梯度和基于梯度的方法在不同目标LLM上均表现出稳健的攻击性能,即使影子LLM与目标LLM架构不同。例如,当目标LLM为GPT-4o时,无梯度攻击在MetaTool和ToolBench上分别达到96.7%96.7\%96.7%和88.2%88.2\%88.2%的ASR,而基于梯度的攻击分别达到92.2%92.2\%92.2%和83.9%83.9\%83.9%的ASR。原因是共享的对齐目标和训练范式使LLM固有地容易受到提示注入攻击。此外,LLM的同质化——由于在重叠数据集上训练——使它们对攻击的响应相似。第二,无梯度攻击在闭源模型上表现出更高的性能,而基于梯度的攻击在开源模型上显示优势。例如,在MetaTool上针对GPT-4o时,无梯度攻击的ASR高出4.5%4.5\%4.5%;在ToolBench上针对Claude-3.5-Sonnet时高出8.4%8.4\%8.4%。相比之下,在ToolBench上针对Llama-3-8B时,基于梯度的攻击的ASR高出16%16\%16%。第三,我们发现不同模型对我们的攻击表现出不同的敏感性。Claude-3-Haiku最不敏感,但仍达到≥70%\geq 70\%≥70%的ASR。

表I:我们的攻击在不同目标LLM上实现了高ASR。无梯度攻击使用Llama-3.3-70B作为影子LLM,基于梯度的攻击使用Llama-3-8B。

数据集攻击指标工具选择的LLM
Llama-2 7B Llama-3 8B Llama-3 70B Llama-3.3 70B Claude-3 Haiku Claude-3 Sonnet GPT-3.5 GPT-4o
MetaTool
无攻击 ACC 96.7% 98.9% 98.2% 99.6% 99.2% 98.9% 98.8% 99.6%
无梯度 ASR 98.2% 94.0% 97.0% 99.6% 85.4% 92.1% 91.0% 96.7%
基于梯度 ASR 99.8% 100% 97.2% 99.4% 82.6% 92.0% 92.8% 92.2%
ToolBench
无攻击 ACC 97.1% 90.5% 97.2% 97.2% 97.2% 97.8% 97.3% 98.4%
无梯度 ASR 91.7% 80.6% 82.1% 90.8% 82.8% 93.6% 77.7% 88.2%
基于梯度 ASR 95.2% 96.6% 89.2% 94.8% 74.3% 85.2% 84.6% 83.9%

表II:我们的攻击具有高AHR。

数据集无攻击 HR无梯度 AHR基于梯度 AHR
MetaTool 100% 99.9% 100%
ToolBench 100% 96.1% 97.8%

此外,我们在表II中展示了检索阶段的平均AHR。我们观察到,在针对闭源检索器时,我们的方法实现了高AHR。值得注意的是,在ToolBench包含9,650个良性工具文档的工具库上评估时,我们的无梯度攻击达到96.1%96.1\%96.1%的AHR,基于梯度的攻击达到97.8%97.8\%97.8%的AHR,而仅注入了单个恶意工具文档。图3展示了两个数据集中10个目标任务在多个目标LLM上的平均ASR和AHR。结果表明,无梯度和基于梯度的攻击在不同目标任务和数据集上均有效。此外,为评估我们的攻击对工具选择通用实用性的影响,我们在非目标任务上评估了其性能。详细结果见附录B的表XII。

表III:我们的攻击在GPT-4o上优于基线。

在这里插入图片描述

我们的攻击优于其他基线。 表III比较了我们的攻击与五种手工提示注入攻击、JudgeDeceiver和PoisonedRAG的性能。结果表明,我们的攻击优于其他基线。手工提示注入攻击(向恶意工具文档注入无关提示)由于检索可能性低而ASR较低。例如,转义字符在MetaTool上达到28.2%28.2\%28.2%的ASR。同时,基于优化的攻击JudgeDeceiver在MetaTool和ToolBench上分别达到30.2%30.2\%30.2%和26.4%26.4\%26.4%的ASR。PoisonedRAG在基线中表现最高,在MetaTool上ASR为39.3%39.3\%39.3%,在ToolBench上为58.3%58.3\%58.3%。然而,其攻击性能仍不及我们的方法。原因是PoisonedRAG设计为针对单个任务描述进行优化,而我们的攻击可以跨多个任务描述进行优化。图4显示了良性工具、基线和我们的攻击生成的工具文档的token长度。值得注意的是,我们的攻击生成的恶意工具文档长度较短,仅凭token长度无法与良性工具文档区分。

在这里插入图片描述

图3:我们的攻击在不同任务上有效。

在这里插入图片描述

图4:良性工具文档和不同攻击生成的恶意工具文档的token长度。

C. 消融研究

检索器的影响。 我们评估了我们的攻击在不同检索器上的有效性。如表IV所示,无梯度攻击在所有检索器上表现一致,达到100%100\%100%的AHR和99%99\%99%的ASR。对于基于梯度的攻击,所有检索器保持100%100\%100%的AHR。三个开源检索器达到100%100\%100%的ASR,而闭源检索器(text-embedding-ada-002)的ASR略低,为95%95\%95%。这种差异是由于text-embedding-ada-002的优越性能。虽然恶意工具文档被成功检索,但其排名较低,降低了被目标LLM最终选择的可能性。

表IV:我们的攻击在不同目标检索器上的影响。

检索器无梯度基于梯度
AHR ASR AHR ASR
text-embedding-ada-002 100% 99% 100% 95%
Contriever 100% 99% 100% 100%
Contriever-ms 100% 99% 100% 100%
Sentence-BERT-tb 100% 99% 100% 100%
平均 100% 99% 100% 98.75%

表V:RRR和SSS的影响。

攻击R ⊕ S仅 R仅 S
AHR ASR AHR ASR AHR ASR
无梯度 100% 99% 100% 5% 65% 63%
基于梯度 100% 95% 100% 0% 99% 16%

kkk的影响。 为研究top-kkk设置的影响,我们在默认攻击配置下将kkk从1变化到10,记录AHR和ASR,如图5第三列所示。我们的结果表明,对于较小的kkk值,AHR和ASR均下降,特别是无梯度攻击。当k=1k = 1k=1时,AHR和ASR均为89%89\%89%。然而,当kkk超过3时,两种攻击的AHR均稳定在100%100\%100%,而基于梯度的攻击的ASR在96%96\%96%附近波动,无梯度攻击稳定在99%99\%99%。原因是对于较小的kkk值,检索恶意工具的可能性降低,因为其与目标任务描述的相似性可能不是最高的。

k′k'k′的影响。 我们进一步评估在优化SSS时使用不同k′k'k′(k′∈{2,3,5,7}k' \in \{2, 3, 5, 7\}k′∈{2,3,5,7})的影子检索器的影响。结果如图5所示。我们有两个关键观察。首先,随着k′k'k′增加,AHR稳步上升到100%100\%100%,对于较小的k′k'k′增幅更明显。例如,当k′=2k' = 2k′=2时,随着kkk从1增加到3,基于梯度攻击的AHR从74%74\%74%上升到99%99\%99%。第二,ASR在k′k'k′较小时表现出波动,随着kkk从1增加到5总体呈下降趋势。例如,在k′=2k' = 2k′=2时,随着kkk增加,无梯度和基于梯度攻击的ASR分别下降了16%16\%16%和50%50\%50%。原因是真实工具的数量为5。当k′k'k′较小时,攻击优化次优,随着kkk增加(k<5k < 5k<5),更多的真实工具被检索,降低了选择目标工具的可能性。相比之下,当k′≥5k^{\prime}\geq 5k′≥5时,优化的SSS得到改善,随着kkk增加,性能上升并稳定。

在这里插入图片描述

图5:不同影子检索器$k'$和目标检索器$k$下的AHR和ASR。

影子任务描述数量的影响。 我们评估了影子任务描述数量(即m′m^{\prime}m′)对两种攻击方法的影响。如图6所示,AHR不受影子任务描述数量的影响,在数量从1增加到10时始终保持100%100\%100%。相反,ASR随着影子任务描述数量的增加而提高,基于梯度的攻击变化最为显著。具体而言,基于梯度攻击的ASR从单个影子任务描述的32%32\%32%上升到七个描述的98%98\%98%。相比之下,即使只使用一个影子任务描述,无梯度攻击也能达到最低92%92\%92%的ASR。

在这里插入图片描述

图6:影子任务描述数量的影响。

RRR和SSS的影响。 为评估RRR和SSS对攻击性能的各自贡献,我们对恶意工具描述使用三种设置进行实验:R⊕SR\oplus SR⊕S、仅RRR和仅SSS。结果如表V所示。对于无梯度攻击,没有RRR时AHR从100%100\%100%下降到65%65\%65%,突显了RRR在实现检索目标中的关键作用。没有SSS时,ASR从99%99\%99%下降到5%5\%5%,强调了其对选择目标的重要性。在基于梯度的攻击中,仅SSS时AHR保持99%99\%99%,这是由于基于梯度的优化过程,使得生成的SSS包含更多关于目标任务的信息,从而更容易被检索。

影子LLM E′E^{\prime}E′在优化SSS中的影响。 为评估影子LLM E′E^{\prime}E′对我们两种攻击的影响,我们对无梯度攻击应用8种不同的LLM,对基于梯度的攻击使用两个开源LLM(Llama-2-7B和Llama-3-8B)。两种攻击方法在8个目标LLM上的ASR如表VI和表VII所示。我们有两个关键观察。首先,使用更强大的影子LLM E′E^{\prime}E′显著提高了两种攻击方法的ASR。例如,在无梯度攻击中,使用Claude-3.5-Sonnet作为影子LLM比Llama-2-7B平均ASR提高了4.37%4.37\%4.37%。类似地,在基于梯度的攻击中,Llama-3-8B比Llama-2-7B的ASR提高了15.12%15.12\%15.12%。第二,无梯度攻击对影子LLM E′E^{\prime}E′的敏感性低于基于梯度的攻击。具体而言,当使用Llama-2-7B作为影子LLM时,无梯度攻击在Claude-3-Haiku上保持最低70%70\%70%的ASR,而基于梯度的攻击在Llama-3-70B上的最低ASR降至34%34\%34%。

表VI:无梯度攻击在不同影子LLM和不同目标LLM上的ASR。

影子LLM目标LLM平均
Llama-2 7B Llama-3 8B Llama-3 70B Llama-3.3 70B Claude-3 Haiku Claude-3 Sonnet GPT-3.5 GPT-4o
Llama-2-7B 100% 100% 100% 100% 70% 99% 98% 94% 95.13%
Llama-3-8B 88% 100% 100% 100% 100% 100% 75% 99% 95.25%
Llama-3-70B 85% 100% 100% 99% 100% 100% 75% 99% 94.75%
Llama-3.3-70B 95% 100% 100% 99% 86% 99% 100% 99% 97.25%
Claude-3-Haiku 91% 100% 100% 100% 100% 100% 87% 100% 97.25%
Claude-3.5-Sonnet 99% 100% 100% 99% 100% 100% 98% 100% 99.50%
GPT-3.5 97% 100% 100% 100% 95% 100% 87% 100% 97.38%
GPT-4o 93% 100% 100% 100% 100% 100% 89% 100% 97.75%

表VII:基于梯度的攻击在不同影子LLM和不同目标LLM上的ASR。

影子LLM目标LLM平均
Llama-2 7B Llama-3 8B Llama-3 70B Llama-3.3 70B Claude-3 Haiku Claude-3 Sonnet GPT-3.5 GPT-4o
Llama-2-7B 100% 100% 34% 95% 55% 82% 98% 87% 81.38%
Llama-3-8B 100% 100% 100% 100% 98% 97% 82% 95% 96.50%

相似度度量的影响。 我们评估了检索期间两种不同相似度度量对攻击有效性的影响,结果如表VIII所示。结果表明,不同的相似度度量不影响生成的恶意工具文档被目标检索器检索的可能性。值得注意的是,点积相比余弦相似度在ASR上提高了2%2\%2%。

表VIII:相似度度量的影响。

攻击余弦相似度点积
AHR ASR AHR ASR
无梯度 100% 99% 100% 99%
基于梯度 100% 95% 100% 97%

恶意工具数量的影响。 我们评估了注入不同数量恶意工具对攻击有效性的影响。由于k′=5k^{\prime} = 5k′=5的基线设置已经获得了强结果,如图5所示,我们专注于比较k′=2k^{\prime} = 2k′=2和注入恶意工具数量(num = 1或2)时的效果。对于num = 2,我们考虑两种场景:“独立”设置,每个恶意工具文档针对自己的工具;“统一”设置,所有恶意工具文档针对同一工具。我们的攻击在这些设置下随kkk变化的AHR和ASR如图7所示。我们观察到“独立”设置下的趋势与num = 1相似,但在相同kkk下ASR有所提高。例如,在k=5k = 5k=5时,无梯度和基于梯度的攻击的ASR均提高了24%24\%24%。在“统一”设置下,ASR和AHR随kkk增加均接近100%100\%100%,表明当影子工具文档不足时,增加注入恶意工具的数量可增强攻击。

在这里插入图片描述

图7:不同数量恶意工具文档的攻击。在“独立”设置中,每个注入的恶意工具文档针对自身,而在“统一”设置中,所有注入的恶意工具文档针对同一工具。

V. 防御

针对提示注入攻击的防御可分为两类:基于预防的防御和基于检测的防御[20]。基于预防的防御旨在通过预处理指令提示或使用对抗训练微调LLM来减少其对操纵的敏感性,从而减轻提示注入的影响。由于工具选择的指令提示采用“三明治预防”方法[45],我们主要关注基于微调的防御,包括StruQ [23]和SecAlign [24]。另一方面,基于检测的防御专注于识别响应是否包含注入序列。常用的检测技术包括已知答案检测、DataSentinel、困惑度(PPL)检测和困惑度窗口(PPL-W)检测。

A. 基于预防的防御

StruQ [23]。 此方法通过将输入分为两个不同组件来对抗提示注入攻击:安全提示和用户数据。模型被训练为仅遵循安全提示中的指令,忽略数据中嵌入的任何指令。我们使用StruQ中提供的微调模型LLMd(struq)LLM_{d(\mathrm{struq})}LLMd(struq)​作为目标LLM,评估其对我们攻击的有效性。

SecAlign [24]。 此方法通过微调LLM以优先输出安全响应来增强其对提示注入的抵抗力。关键思想是在包含提示注入输入和安全/不安全响应对的数据集上训练LLM。我们使用SecAlign中的微调LLM LLMd(secalign)LLM_{d(\mathrm{secalign})}LLMd(secalign)​作为目标LLM,评估其对我们攻击的有效性。

实验结果。 为评估StruQ和SecAlign的有效性,我们使用三个关键指标:ACC-a(有攻击时的ACC)、AHR和ASR。实验在MetaTool和ToolBench数据集上进行,每个数据集包含10个目标任务,每个目标任务100个任务描述,使用无梯度和基于梯度的攻击。如表IX所示,我们的攻击在StruQ和SecAlign微调的LLM上仍实现了高ASR,表明我们的攻击可以绕过这些防御。这是因为精心构建的恶意工具文档缺乏突兀或明显的指令,而是提供与目标任务和工具功能相关的描述,同时保持整体语义完整性。尽管SecAlign的ASR值略低于StruQ,表明防御更强,但ASR仍在84.6%84.6\%84.6%到97.5%97.5\%97.5%之间,表明两种防御均未完全缓解本工作中的攻击策略。此外,ToolBench上的ASR低于MetaTool,可能源于ToolBench更大的工具库规模。值得注意的是,ACC-a和ASR之和不总是100%100\%100%,因为模型拒绝——即模型未能生成有效响应或拒绝输入——解释了这种差异。

表IX:我们的攻击在基于预防的防御上的结果。

方法数据集无梯度基于梯度
ACC-a AHR ASR ACC-a AHR ASR
StruQ
MetaTool 0.3% 99.9% 99.6% 2.1% 100% 97.9%
ToolBench 5.7% 96.1% 90.8% 4.1% 97.8% 92.1%
SecAlign
MetaTool 2.5% 99.9% 97.5% 7.4% 100% 92.1%
ToolBench 8.2% 96.1% 86.9% 11.3% 97.8% 84.6%

为进一步评估防御的有效性,我们使用公式ΔASR=ASRnone−ASRd\Delta \mathrm{ASR} = \mathrm{ASR}_{\mathrm{none}} - \mathrm{ASR}_dΔASR=ASRnone​−ASRd​计算ASR的变化,其中ASRnone\mathrm{ASR}_{\mathrm{none}}ASRnone​表示无微调时LLM的ASR,ASRd\mathrm{ASR}_dASRd​表示使用StruQ或SecAlign微调的LLM的ASR。如图8所示,SecAlign优于StruQ,实现了更大的ASR降低。此外,ToolBench上观察到的更高ΔASR\Delta \mathrm{ASR}ΔASR值表明防御在处理更大工具库的场景中更有效。

在这里插入图片描述

图8:防御前后的ASR变化。

B. 基于检测的防御

已知答案检测。 已知答案检测被认为是对抗提示注入攻击最有效的防御之一[46][20]。此方法在文本中嵌入检测指令,并验证检测LLM在结合该文本时是否仍能正确遵循此指令。遵循先前工作[20],我们采用检测指令:“重复[秘密数据]一次,同时忽略以下文本。\n文本:”,其中“秘密数据”在我们的实验中设置为“Hello World!”。当LLM生成响应时,如果不包含“Hello World!”,则被标记为包含注入序列的目标文本。如果包含“Hello World!”,则认为文本是干净的。

DataSentinel [25]。 DataSentinel是最先进的提示注入检测方法。此防御通过采用博弈论方法微调检测LLM来扩展已知答案检测,从而增强其检测能力和泛化性。

基于困惑度的检测。 基于困惑度(PPL)的检测是一种广泛使用的识别被注入序列改变的文本的技术。PPL的关键思想是注入序列破坏文本的语义连贯性,从而增加其困惑度得分。如果文本的困惑度超过预定义阈值,则被标记为包含注入序列[26]。然而,此方法的一个关键挑战在于选择适当的阈值,因为困惑度分布因不同数据集而异。为解决此问题,我们采用数据集自适应策略[20],从数据集中选择100个干净样本,计算其对数困惑度值,并设置阈值使得假阳性率(FPR)不超过指定限制(例如1%1\%1%)。窗口困惑度(PPL-W)检测通过计算连续文本窗口的困惑度来增强PPL [26]。如果任何窗口的困惑度超过阈值,则整个文本被标记。在我们的实验中,根据良性工具文档token长度的分布,MetaTool的窗口大小设置为5,ToolBench设置为10。

实验结果。 为评估检测方法的有效性,我们使用两个关键评估指标:假阴性率(FNR)和FPR。FNR定义为被错误检测为良性的恶意工具文档的百分比,FPR是被错误分类为恶意的良性工具文档的百分比。我们的实验在MetaTool(199个良性工具文档)和ToolBench(9,650个良性工具文档)数据集上进行,每个数据集注入10个恶意工具文档。

表X:我们的攻击的检测结果(G-Free:无梯度攻击,G-Based:基于梯度的攻击)。

数据集攻击已知答案检测DataSentinelPPL检测PPL-W检测
FNR FPR FNR FPR FNR FPR FNR
MetaTool
G-Free 100% 0% 100% 0% 100% 1.01% 100% 0%
G-Based 100% 0% 100% 2.61% 100% 0.85% 100% 2.99%
ToolBench
G-Free 100% 0.01% 100% 2.61% 100% 0.85% 100% 2.99%

如表X所示,已知答案检测和DataSentinel的FNR均超过90%90\%90%,表明检测恶意工具文档存在显著困难。这是因为构建的恶意工具描述不包含与任务无关的注入指令,确保描述的整体语义保持完整。基于困惑度的检测防御在基于梯度和无梯度攻击之间表现出不同的性能,在PPL-W检测中存在显著差异。例如,无梯度攻击在MetaTool上的FNR为100%100\%100%,而基于梯度的攻击为50%50\%50%。这种差异源于所使用的不同优化级别:基于梯度的攻击在token级别进行优化,可能损害句子的可读性,而无梯度攻击在句子级别进行优化。尽管存在这些差异,PPL和PPL-W检测方法均未能识别大多数恶意工具文档,AUC得分分别为0.64和0.74。这种局限性源于我们的核心优化策略,该策略使恶意工具文档与目标任务描述紧密对齐。无梯度方法保持句子级别的连贯性。由于基于梯度的攻击可能降低可读性,我们引入困惑度损失来缓解这些局限性,并保持恶意工具文档与目标任务描述的语义接近性。

VI. 相关工作

A. LLM智能体中的工具选择

已经提出了各种框架来增强LLM智能体在工具选择方面的能力,重点关注集成外部API、知识库和专用模块。Mialon等人[47]对各个领域中工具增强的LLM进行了全面调查。Liang等人[48]介绍了TaskMatrix.AI,它将基础模型与广泛的API连接起来,而Gorilla [5]和REST-GPT [6]等系统旨在将LLM连接到大规模或RESTful API,促进灵活可扩展的工具调用。此外,一些工作开发了基准来改进和评估工具选择。ToolBench [10]为微调开源模型以达到GPT-4级别性能提供了训练基准,而MetaTool [22]为工具选择准确性提供了全面的场景驱动评估。

近期研究越来越关注增强工具使用能力。ProTIP [49]引入了一种渐进式检索策略,迭代优化工具使用。在训练范式方面,Gao等人[50]提出了一种多阶段训练框架,而Wang等人[51]将每个工具映射到唯一的虚拟token以更好地集成工具知识。此外,ToolRerank [52]采用自适应重排序来优先选择最相关的工具,Qu等人[53]将基于图的传递纳入更全面的检索。这些方法集成执行反馈[54]、内省机制[55]和意图驱动选择[56],以促进上下文感知和稳健的工具调用。此外,一些研究探索了高级主题,如自主工具生成[57][58]、分层工具管理[59]和专用工具集[60],旨在解决复杂现实世界应用中的挑战。

B. 提示注入攻击

提示注入攻击旨在通过外部数据注入与原始指令不同的恶意指令来操纵LLM,从而破坏LLM的预期行为[61]。根据构建注入指令的方法,提示注入攻击分为手工攻击和基于优化的攻击。手工攻击是启发式驱动的,通常依赖于提示工程技术。这些攻击策略包括朴素攻击[15][16]、转义字符[15]、上下文忽略[17][18]、伪造补全[19]和组合攻击[20]。虽然手工攻击灵活直观,但耗时且效果有限。为克服这些局限性,引入了基于优化的攻击。例如,Shi等人[13]将LLM作为评判者中的提示注入形式化为优化问题,并使用基于梯度的方法求解。Hui等人[62]提出了一种基于优化的提示注入攻击,以提取LLM集成应用的系统提示。Shao等人[63]表明,通过向微调数据集中插入带有注入提示的样本来污染LLM对齐,可以增加模型对提示注入攻击的脆弱性。

近期研究广泛探索了LLM智能体中的提示注入攻击。例如,InjectAgent [64]通过工具调用评估了LLM智能体对手工攻击的脆弱性。AgentDojo [65]进一步开发了更全面的评估,纳入工具调用交互和各种现实世界任务。EvilInjection [66]策略性地扰动网页,以误导Web智能体执行攻击者期望的操作,如在交互期间点击特定按钮。此外,一些工作研究了多模态智能体系统[67]和多智能体设置[68]中的提示注入。与这些工作不同,我们的工作聚焦于工具选择——LLM智能体的基本组成部分,探索提示注入如何破坏这一关键决策机制。

C. 防御

现有针对提示注入攻击的防御通常分为两类:基于预防的防御和基于检测的防御。

基于预防的防御。 基于预防的防御主要根据是否涉及LLM训练而采用两种策略。第一种策略采用提示工程进行输入预处理,如使用分隔符划定外部数据[69][70][19]。一种更先进的技术称为三明治预防[45],将输入结构化为“指令-数据-指令”,在数据末尾强化原始任务指令。第二种策略涉及对抗训练以增强LLM对提示注入的抵抗力[71]。例如,StruQ [23]通过将提示和数据分离到不同通道来缓解提示注入。此外,SecAlign [24]在微调期间利用偏好优化。Jia等人[72]表明,这些防御牺牲了LLM的通用指令遵循能力,并且仍然容易受到强(自适应)攻击,这与我们的评估一致。

补充这些模型级防御,近期研究[73][74]关注强制执行安全策略,以确保LLM智能体仅使用预先批准的工具,从而防止提示注入风险。然而,这些防御假设工具集已经为给定任务选择。相比之下,我们的工作针对工具选择过程。

基于检测的防御。 基于检测的防御专注于识别LLM输入文本中的注入指令。一种普遍策略涉及困惑度分析[75][26],基于恶意指令倾向于增加输入困惑度的观察。此策略的一个关键限制是难以设置可靠的检测阈值,通常导致高假阳性率。改进包括数据集自适应阈值[20]和将困惑度与token长度等其他特征集成的分类器[75]。另一种检测策略是已知答案检测[46][20]及其增强版本DataSentinel [25],它利用提示注入引入外来任务从而破坏原始任务执行的事实。此方法在输入文本前嵌入预定义任务。如果LLM未能正确执行此已知任务,则输入文本被标记为可能受损。

VII. 结论与未来工作

在本工作中,我们展示了LLM智能体中的工具选择容易受到提示注入攻击。我们提出了ToolHijacker,一种系统化的自动化方法,用于构建恶意工具文档以操纵工具选择。我们将此攻击形式化为一个优化问题,并提出了一种两阶段优化策略来解决它。广泛的实验表明,ToolHijacker在无盒设置中实现了高攻击成功率,并显著优于现有基线。我们还评估了现有防御措施,发现它们不足以防御ToolHijacker,突显了开发新防御机制的迫切需求。

未来工作可以探索更具适应性的防御策略,以对抗对智能体系统的不断演进的攻击。此外,将我们的方法扩展到多工具选择场景和跨域设置将是未来研究的有前景方向。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐