MELON:针对 AI 智能体中间接提示注入攻击的可证明防御
在这里插入图片描述
原文链接:MELON: Provable Defense Against Indirect Prompt Injection Attacks in AI Agents

摘要

最近的研究表明,LLM 智能体容易受到间接提示注入(IPI)攻击,即嵌入在工具检索信息中的恶意任务可以重定向智能体以执行未经授权的操作。现有的 IPI 防御方法存在显著局限性:要么需要大量的模型训练资源,要么对复杂攻击缺乏有效性,要么损害正常效用。我们提出了 MELON(掩码重执行与工具比较,Masked re-Execution and Tool ComparisON),一种新颖的 IPI 防御方法。我们的方法基于以下观察:在成功攻击下,智能体的下一个动作对用户任务的依赖程度降低,而对恶意任务的依赖程度增加。据此,我们设计 MELON 通过使用掩码函数修改用户提示来重执行智能体的轨迹,从而检测攻击。如果原始执行和掩码执行中生成的动作相似,我们就识别出攻击。我们还引入了三个关键设计来降低潜在的假阳性和假阴性。在 IPI 基准 AgentDojo 上的大量评估表明,MELON 在攻击预防和效用保持方面均优于现有最先进的防御方法。此外,我们展示了将 MELON 与最先进的提示增强防御相结合(记为 MELON-Aug)可进一步提升其性能。我们还进行了详细的消融研究以验证我们的关键设计。代码见 https://github.com/kaijiezhull/MELON。

在这里插入图片描述

图1:在 GPT-4o、o3-mini 和 Llama-3.3-70B 上,不同防御方法的平均受攻击下效用(UA,越高越好)和攻击成功率(ASR,越低越好)的比较。我们提出的方法(MELON 和 MELON-Aug)在保持高 UA 的同时实现了极低的 ASR,优于所有基线防御方法。详细比较见第 4.2 节。

1 引言

随着 LLM 智能体(OpenAI, 2024; Anthropic, 2024; Llama, 2024; DeepSeek, 2025)最近的成功,间接提示注入攻击(IPI)带来了严重的安全问题(Naihin et al., 2023; Ruan et al., 2024; Yuan et al., 2024; Liu et al., 2024; Zhan et al., 2024; Debenedetti et al., 2024; Zhang et al., 2024a)。攻击者利用智能体与外部资源的交互,在工具检索的信息(如数据库(Zhong et al., 2023; Zou et al., 2024)和网站(Liao et al., 2024; Xu et al., 2024; Wu et al., 2024a))中嵌入恶意任务。这些恶意任务将迫使智能体采取未经授权的操作,导致严重后果。

防御 IPI 攻击极具挑战性。首先,与越狱 LLM 不同,注入的恶意提示及其产生的行为可能是合法的任务。其次,实施有效的防御需要在安全保证和效用维护之间进行仔细的平衡。现有的 IPI 防御要么需要大量的模型训练资源,要么仅适用于简单攻击,要么在攻击场景下损害正常效用。具体来说,资源密集型防御会重新训练智能体中的 LLM(Chen et al., 2024a; Wallace et al., 2024)或训练额外的模型来检测检索数据中的注入提示(ProtectAI, 2024)。由于贪婪的资源需求,这些方法不太实用。此外,对抗训练可能危及模型的正常效用,而基于模型的检测自然会在攻击场景下损害智能体的效用,并遭受高假阴性率(第 4.2 节)。现有的免训练防御要么通过附加提示增强用户输入(Mendes, 2023; Hines et al., 2024; lea, 2023),要么过滤恶意工具调用(Debenedetti et al., 2024)。如第 4.2 节所示,提示增强方法保持了高效用但无法防御复杂攻击,而工具过滤器以严重降低效用为代价实现了低 ASR。

在本文中,我们提出了一种新颖的 IPI 防御方法 MELON,其关键洞察是:在受到攻击时,智能体的工具调用对用户输入的依赖程度降低。MELON 通过掩码状态重执行智能体的动作轨迹,其中只保留检索到的输出,用户输入被掩码函数遮蔽。然后,MELON 通过比较原始执行和掩码重执行之间的工具调用来检测攻击。如果在某一步发现相似的工具调用,则表明存在攻击,因为这些工具调用与用户输入无关。我们引入了三个关键设计来进一步增强 MELON:一个自定义的掩码函数以防止掩码执行期间产生任意的工具调用;一个用于掩码执行的工具调用缓存,以更好地识别原始执行中的攻击;以及一个聚焦的工具调用比较机制以消除噪声信息。这些设计解决了第 3.2 节中讨论的关键技术挑战,显著降低了假阳性和假阴性。

通过在 AgentDojo 基准上使用三种 LLM(GPT-4o、o3-mini、Llama-3.3-70B)进行大量实验,我们证明 MELON 和 MELON-Aug(将 MELON 与提示增强相结合)在针对四种最先进的攻击时,显著优于五种最先进的防御方法。如图 1 所示,MELON 和 MELON-Aug 在保持良性场景和攻击场景下正常效用的同时,实现了最低的攻击成功率。特别地,MELON-Aug 产生了协同效应,在 GPT-4o 上将 ASR 进一步降低到 0.32%,同时保持了 68.72% 的效用。此外,我们还进行了消融研究以验证我们的三个关键设计,并展示 MELON 对关键超参数不敏感。据我们所知,MELON 是第一个利用恶意工具调用与用户输入之间独立性的 IPI 检测方法,并在安全性和效用维护之间实现了迄今为止最佳的平衡。

2 相关工作

间接提示注入攻击。 在高层次上,针对智能体的间接提示注入攻击可以分为通用攻击和智能体特定攻击。通用攻击侧重于开发通用的攻击提示模式,迫使目标智能体执行攻击者任务而非用户任务。值得注意的是,转义字符攻击(Willison, 2022)利用诸如“\n”之类的特殊字符来操纵上下文解释。上下文忽略攻击(Perez & Ribeiro, 2022; Schulhoff et al., 2023)明确指示 LLM 忽略之前的上下文。假完成攻击(Willison, 2023)试图通过模拟任务完成来欺骗 LLM。这些方法通常在具有预指定注入点和攻击任务的 IPI 基准(Debenedetti et al., 2024; Xu et al., 2024)上进行测试。还有一些针对特定类型智能体攻击的早期探索。例如,针对 Web 智能体的攻击将攻击内容注入网页以“欺骗”智能体执行攻击任务(Wu et al., 2024a; Liao et al., 2024; Xu et al., 2024)。针对计算机智能体的攻击操纵计算机界面(Zhang et al., 2024b)。注意,也存在一些针对 LLM 的直接提示注入攻击(Yu et al., 2023; Wu et al., 2024a;c; Toyer et al., 2024)。这些方法直接将攻击提示附加在用户输入之后,这在现实应用中可能不实用。

针对 IPI 的防御。 现有的防御可以根据资源需求进行分类。需要额外训练资源的防御要么对目标智能体中的 LLM 进行对抗训练(Wallace et al., 2024; Chen et al., 2024a;b),要么添加额外的模型来检测输入是否包含注入提示(ProtectAI, 2024; Inan et al., 2023)。然而,这些方法由于需要大量的计算和数据资源而面临实际限制。此外,对抗训练可能损害模型在更广泛应用领域的正常效用。正如我们后面将展示的,添加额外的检测模型自然会在攻击场景下损害智能体的效用,并遭受高假阴性率。

免训练的防御要么为用户输入设计额外的提示,要么约束智能体允许的工具调用。首先,大多数免训练防御探索额外的提示,以帮助模型忽略或检测检索数据中的潜在攻击指令。具体来说,忽略策略包括在用户提示和检索数据之间添加分隔符(Hines et al., 2024; Mendes, 2023; Willison, 2023),重复用户提示(lea, 2023)。这些防御虽然轻量,但对更强攻击的效果有限(如第 4 节所示)。已知答案检测(Liu et al., 2024)向用户提示添加带有已知答案的附加问题,并检测模型最终是否输出该答案。然而,此方法只能在执行后识别注入,此时攻击可能已经成功。其次,工具过滤(Debenedetti et al., 2024)允许 LLM 为给定的用户任务选择一组允许的工具,并阻止对所有未授权工具的调用。这种方法会损害效用,因为 LLM 有时会过滤掉必要的工具。更重要的是,攻击者可以仅设计与用户任务相关的工具来构建攻击任务,从而轻易绕过。TaskShield(Jia et al., 2024)提出了一种对齐检查,以检测提议的工具调用是否与用户任务对齐。相比之下,我们的方法是一种轻量级且高效的免训练防御,能够很好地保持智能体的正常效用。

注意,其他防御需要人工干预(Wu et al., 2025)、白盒模型访问(Wu et al., 2024b)或撤销智能体动作(Patil et al., 2024)。由于这些强假设和缺乏完全自动化,我们将这些方法排除在分析之外。

3 MELON 的方法论

3.1 预备知识

LLM 智能体的形式化与定义。 本文中,我们将 LLM 智能体 π \pi π 定义为一个集成系统,包括 LLM 和一组用于环境交互的工具 F = { f 1 , … , f n } \mathcal{F} = \{f_{1}, \ldots, f_{n}\} F={f1,,fn}。智能体接收指定任务 T u \mathcal{T}_{u} Tu 的用户提示(例如,“总结我的日程并告诉我下一个事件的时间”)并通过结构化的多步骤过程执行它。

在每一步 t t t,我们将状态定义为 S t = ( T u , A 1 : t , O 1 : t ) \mathcal{S}_{t} = (\mathcal{T}_{u}, \mathcal{A}_{1:t}, \mathcal{O}_{1:t}) St=(Tu,A1:t,O1:t),其中 T u \mathcal{T}_{u} Tu 是用户任务, A 1 : t = { ( R 1 , C 1 ) , … , ( R t , C t ) } \mathcal{A}_{1:t} = \{(\mathcal{R}_{1}, \mathcal{C}_{1}), \ldots, (\mathcal{R}_{t}, \mathcal{C}_{t})\} A1:t={(R1,C1),,(Rt,Ct)} 是 LLM 生成的动作序列,每个动作对包含一个 LLM 响应 R i \mathcal{R}_{i} Ri 和一组工具调用 C i = { c i 1 , … , c i m i } \mathcal{C}_{i} = \{c_{i}^{1}, \ldots, c_{i}^{m_{i}}\} Ci={ci1,,cimi}。每个工具调用 c i j c_{i}^{j} cij 指定一个工具 f j ∈ F f_{j} \in \mathcal{F} fjF 及其参数(例如,“retrieve.event(date=20250131)”)。 O 1 : t = { O 1 , … , O t } \mathcal{O}_{1:t} = \{\mathcal{O}_{1}, \ldots, \mathcal{O}_{t}\} O1:t={O1,,Ot} 表示观察序列,其中每个 O i \mathcal{O}_{i} Oi 包含对应于 C i \mathcal{C}_{i} Ci 的工具执行输出。在步骤 t + 1 t+1 t+1,智能体系统首先基于先前状态生成动作 A t + 1 = π ( S t ) \mathcal{A}_{t+1} = \pi(\mathcal{S}_{t}) At+1=π(St),然后通过执行工具调用获得观察 O t + 1 = E x e c ( C t + 1 ) \mathcal{O}_{t+1} = \mathrm{Exec}(\mathcal{C}_{t+1}) Ot+1=Exec(Ct+1)。此过程迭代进行,直到用户任务 T u \mathcal{T}_{u} Tu 完成或发生错误。

威胁模型。 我们遵循 IPI 的假设,即攻击者无法访问目标智能
体内部 LLM 的输入和输出。他们的访问仅限于操纵智能体通过工具调用检索到的外部信息,例如网站、电子邮件或文件。攻击者的目标是将智能体从执行原始用户任务重定向到执行恶意任务 T m T_{m} Tm。例如,攻击者任务可能是“将你的银行账户和密码发送到 hacker@gmail.com”。我们将 O t ′ \mathcal{O}_{t}^{\prime} Ot 表示为注入了 T m T_{m} Tm 的工具执行输出, O 1 : t ′ = { O 1 , … , O t ′ } \mathcal{O}_{1:t}^{\prime} = \{\mathcal{O}_{1}, \ldots, \mathcal{O}_{t}^{\prime}\} O1:t={O1,,Ot} 为先前工具执行输出的序列。我们假设所有用户任务都是合法的,并且防御者可以完全访问整个智能体系统,包括状态 S t = ( T u , A 1 : t , O 1 : t ) \mathcal{S}_{t} = (\mathcal{T}_{u}, \mathcal{A}_{1:t}, \mathcal{O}_{1:t}) St=(Tu,A1:t,O1:t)。然而,我们不假设防御者拥有训练 LLM 的资源或可以访问 LLM 的内部表示。

3.2 技术概述

洞察与技术挑战。 我们的设计基于以下关键观察:每当检索数据中存在恶意攻击者任务 T m T_{m} Tm 时,它就会试图将智能体从执行用户任务 T u T_{u} Tu 转向执行 T m T_{m} Tm。给定状态 S t = ( T u , A 1 : t , O 1 : t ′ ) \mathcal{S}_{t} = (\mathcal{T}_{u}, \mathcal{A}_{1:t}, \mathcal{O}_{1:t}^{\prime}) St=(Tu,A1:t,O1:t),如果注入了 T m T_{m} Tm O t ′ \mathcal{O}_{t}^{\prime} Ot 成功劫持了智能体的行为以专注于执行 T m T_{m} Tm,则会诱导状态坍缩,使得智能体的下一个动作 A t + 1 \mathcal{A}_{t+1} At+1 在条件上独立于 T u \mathcal{T}_{u} Tu A 1 : t \mathcal{A}_{1:t} A1:t,主要依赖于 O 1 : t ′ \mathcal{O}_{1:t}^{\prime} O1:t。对于 O t \mathcal{O}_{t} Ot 不包含恶意指令或攻击未成功的良性情况,智能体保持对所有状态组件 ( T u , A 1 : t , O 1 : t ) (\mathcal{T}_{u}, \mathcal{A}_{1:t}, \mathcal{O}_{1:t}) (Tu,A1:t,O1:t) 的功能依赖。形式化地,对于在步骤 t t t 成功的攻击,我们可以观察到:
P π ( A t + 1 ∣ ( T u , A 1 : t , O 1 : t ′ ) ) ≈ P π ( A t + 1 ∣ O 1 : t ′ ) , \mathbb{P}_{\pi}(\mathcal{A}_{t+1} | (\mathcal{T}_{u}, \mathcal{A}_{1:t}, \mathcal{O}_{1:t}^{\prime})) \approx \mathbb{P}_{\pi}(\mathcal{A}_{t+1} | \mathcal{O}_{1:t}^{\prime}), Pπ(At+1(Tu,A1:t,O1:t))Pπ(At+1O1:t),
其中 P \mathbb{P} P 是概率。对于良性执行,智能体的动作保持对用户输入的依赖:
P π ( A t + 1 ∣ ( T u , A 1 : t , O 1 : t ) ) ≫ P π ( A t + 1 ∣ O 1 : t ) . \mathbb{P}_{\pi}(\mathcal{A}_{t+1} | (\mathcal{T}_{u}, \mathcal{A}_{1:t}, \mathcal{O}_{1:t})) \gg \mathbb{P}_{\pi}(\mathcal{A}_{t+1} | \mathcal{O}_{1:t}). Pπ(At+1(Tu,A1:t,O1:t))Pπ(At+1O1:t).

这种统计差异自然导致了一种基于掩码的方法来检测注入的提示。令 M : S → S \mathcal{M} : \mathcal{S} \to \mathcal{S} M:SS 为一个掩码算子,它仅保留原始工具执行输出。我们定义两条执行路径:

A t + 1 o = ( R t + 1 o , C t + 1 o ) = π ( S t ) (原始运行) , \mathcal{A}_{t+1}^{o} = (\mathcal{R}_{t+1}^{o}, \mathcal{C}_{t+1}^{o}) = \pi(\mathcal{S}_{t}) \quad \text{(原始运行)}, At+1o=(Rt+1o,Ct+1o)=π(St)(原始运行),
A t + 1 m = ( R t + 1 m , C t + 1 m ) = π ( M ( S t ) ) (掩码运行) , \mathcal{A}_{t+1}^{m} = (\mathcal{R}_{t+1}^{m}, \mathcal{C}_{t+1}^{m}) = \pi(\mathcal{M}(\mathcal{S}_{t})) \quad \text{(掩码运行)}, At+1m=(Rt+1m,Ct+1m)=π(M(St))(掩码运行),

其中 ∗ t + 1 o *_{t+1}^{o} t+1o ∗ t + 1 m *_{t+1}^{m} t+1m 分别表示原始运行和掩码运行在步骤 t + 1 t+1 t+1 生成的动作。通过比较原始运行和掩码运行生成的智能体下一个动作,我们可以识别潜在的攻击:如果掩码后动作发生偏离,表明智能体的动作与用户任务相关,原始执行是良性的;否则,执行与用户提示无关,表明执行期间存在攻击者注入的提示。

为了比较原始运行和掩码运行的动作,我们可以将 A t + 1 o \mathcal{A}_{t+1}^{o} At+1o A t + 1 m \mathcal{A}_{t+1}^{m} At+1m 输入到文本嵌入模型中,并计算它们在嵌入空间中的距离。如果在任何步骤观察到距离高于某个阈值,意味着 LLM 输出仅依赖于 O 1 : t \mathcal{O}_{1:t} O1:t,并表明存在攻击者注入的提示。

然而,尽管直观,这种掩码函数和比较方法在我们的探索中面临三个技术挑战。 ∙ \bullet 当掩码运行中仅呈现 O 1 : t \mathcal{O}_{1:t} O1:t 时,LLM 可能将这些工具执行输出视为少样本示例,并生成上下文上合理但可能任意的工具调用。因此,对于注入的情况,生成的工具调用可能偏离嵌入在 O t ′ \mathcal{O}_{t}^{\prime} Ot 中的恶意任务 T m \mathcal{T}_{m} Tm,导致假阴性;而对于良性情况,这些任意的调用可能巧合地与用户任务 T u \mathcal{T}_{u} Tu 对齐,导致假阳性。 ∙ \bullet 我们观察到,在某些情况下, T m \mathcal{T}_{m} Tm 的执行时机在原始运行和掩码运行之间不同。在原始运行中,智能体可能在转向 T m \mathcal{T}_{m} Tm 之前先执行用户任务 T u \mathcal{T}_{u} Tu。然而,在掩码运行中,由于没有用户任务需要完成,智能体直接执行 T m \mathcal{T}_{m} Tm。因此,在步骤 t t t,当掩码运行已经开始执行 T m \mathcal{T}_{m} Tm 时,原始运行可能仍在处理 T u \mathcal{T}_{u} Tu。这种时机不匹配导致在比较相应步骤的工具调用时产生假阴性。 Θ \Theta Θ 通常,LLM 生成的动作包含文本响应 R \mathcal{R} R 和带有特定参数的工具调用 C \mathcal{C} C。在成功的攻击案例中,掩码运行和原始运行可能在文本响应 R \mathcal{R} R 上有所不同,同时保持执行恶意任务 T m \mathcal{T}_{m} Tm 的相同工具调用 C \mathcal{C} C,这再次引入假阴性。

在这里插入图片描述

图2:MELON 检测流程比较两条并行的执行路径:原始运行(顶部)和掩码运行(底部)。原始运行处理用户任务 $\mathcal{T}_u$,而掩码运行使用任务中性提示 $\mathcal{T}_f$。绿色框显示未检测到恶意任务的良性执行(左侧),因为掩码运行未生成匹配的工具调用。红色框表示提示注入攻击(右侧),其中智能体偏离以执行注入的恶意任务 $\mathcal{T}_m$,导致两条路径之间产生匹配的工具调用。掩码运行的工具调用存储在工具调用缓存 $\mathcal{H}_t$ 中以供比较。

在这里插入图片描述

MELON 概述。 我们通过优化上述直观方法并采用新颖的策略来应对关键的技术挑战,从而设计出 MELON(如图 2 所示)。具体来说,为了应对挑战 ∙ \bullet ,我们以两种方式修改了掩码函数 M \mathcal{M} M:(1)我们不是简单地移除 T u \mathcal{T}_u Tu,而是将其替换为一个任务中性的提示 T f \mathcal{T}_f Tf(见附录 A.1),该提示通常不需要工具交互;(2)我们将工具输出序列 O 1 : t \mathcal{O}_{1:t} O1:t 合并到单个上下文 O 1 t \mathcal{O}_1^t O1t 中。形式上,我们修改后的掩码函数为:
M ( T u , A 1 : t , O 1 : t ) = ( T f , ∅ , O 1 t ) . \mathcal{M}(\mathcal{T}_u, \mathcal{A}_{1:t}, \mathcal{O}_{1:t}) = (\mathcal{T}_f, \emptyset, \mathcal{O}_1^t). M(Tu,A1:t,O1:t)=(Tf,,O1t).
为了进一步使 LLM 在掩码运行中更好地遵循 T f \mathcal{T}_f Tf,我们创建了两个少样本聊天示例(见附录 A.2),包括用户、LLM 响应和工具执行输出。这些设计共同降低了假阴性,通过引导 LLM 专注于检测嵌入的指令,而不是模仿 O 1 : t \mathcal{O}_{1:t} O1:t 中的工具调用模式。对于挑战 Θ \Theta Θ,我们实现了一个工具调用缓存 H \mathcal{H} H,记录掩码运行中的工具调用序列:
H t + 1 = { C t m , … , C t + 1 m } , \mathcal{H}_{t+1} = \{\mathcal{C}_t^m, \ldots, \mathcal{C}_{t+1}^m\}, Ht+1={Ctm,,Ct+1m},
其中 C i m \mathcal{C}_i^m Cim 表示掩码运行在步骤 i i i 生成的工具调用。当原始运行中的任何工具调用与缓存中的调用相似时,我们识别出攻击:
∃ c ∈ C t + 1 o , ∃ h ∈ H : sim ( c , h ) > θ , \exists c \in \mathcal{C}_{t+1}^o, \exists h \in \mathcal{H}: \text{sim}(c, h) > \theta, cCt+1o,hH:sim(c,h)>θ,
其中 θ \theta θ 是相似度阈值。这种基于缓存的方法通过捕获跨多个步骤的所有潜在攻击相关工具调用,降低了假阴性。注意,这种基于缓存的检测不会引入新的假阳性,因为 H t + 1 \mathcal{H}_{t+1} Ht+1 中的工具调用指示了潜在的恶意指令——原始运行中的匹配调用表明 LLM 正在执行嵌入在先前的工具执行输出中的指令。最后,为了解决挑战 Θ \Theta Θ,我们将比较专门聚焦于工具调用而非完整的动作。令 tools ( A ) \text{tools}(\mathcal{A}) tools(A) 从动作中提取工具调用。我们将检测标准更新为:
sim ( tools ( A t + 1 o ) , tools ( A t + 1 m ) ) > θ . \text{sim}(\text{tools}(\mathcal{A}_{t+1}^o), \text{tools}(\mathcal{A}_{t+1}^m)) > \theta. sim(tools(At+1o),tools(At+1m))>θ.
此设计的动机是,完成攻击任务通常需要调用一个或多个与恶意攻击者任务 T m \mathcal{T}_{m} Tm 相关的工具。此设计显著降低了假阴性,因为在攻击下导致较大差异的内容不被考虑。

备注。 一种更简单的检测方法可能是:只要掩码运行生成任何工具调用,就识别为提示注入。然而,这会降低攻击场景下的系统效用。许多注入任务 T m \mathcal{T}_{m} Tm 未能重定向 LLM——尽管它们可能在掩码运行中触发工具调用,但原始运行仍然专注于执行用户任务 T u \mathcal{T}_{u} Tu。在这种情况下,标记这些不成功的攻击会不必要地中断良性执行。因此,比较工具调用对于仅识别那些成功影响智能体行为的攻击至关重要。

3.3 技术细节

算法 1 展示了完整的检测过程。如上所述,我们的检测机制分析了两条并行运行中生成的工具调用之间的相似度:原始运行和掩码运行。在步骤 t t t,我们维护一个工具调用缓存 H t \mathcal{H}_{t} Ht,用于收集掩码运行中的工具调用。检测过程包括两个阶段:(1)缓存填充和(2)基于相似度的检测。

在缓存填充阶段,我们首先使用掩码函数 M \mathcal{M} M 掩码当前状态 S t S_{t} St。如果 O 1 t \mathcal{O}_{1}^{t} O1t 包含恶意任务 T m \mathcal{T}_{m} Tm,智能体将生成对应于 T m \mathcal{T}_{m} Tm 的工具调用 C t + 1 m \mathcal{C}_{t+1}^{m} Ct+1m,然后将其添加到缓存 H t + 1 \mathcal{H}_{t+1} Ht+1 中。否则,如果没有恶意任务,根据 T f \mathcal{T}_{f} Tf 的设计,智能体将不生成任何工具调用。对于基于相似度的检测,我们使用向量嵌入模型 ϕ \phi ϕ 比较原始运行中的每个工具调用 c ∈ C t + 1 o c \in \mathcal{C}_{t+1}^{o} cCt+1o 与缓存中的每个工具调用 h ∈ H t + 1 h \in \mathcal{H}_{t+1} hHt+1
sin ⁡ ( c , h ) = ϕ ( c ) ⋅ ϕ ( h ) ∣ ϕ ( c ) ∣ ⋅ ∣ ϕ ( h ) ∣ . \sin(c, h) = \frac{\phi(c) \cdot \phi(h)}{|\phi(c)| \cdot |\phi(h)|}. sin(c,h)=ϕ(c)ϕ(h)ϕ(c)ϕ(h).
如果任何相似度分数超过阈值 θ \theta θ,我们发出警报:
Alert ⁡ t + 1 = ∃ c ∈ C t + 1 o , ∃ h ∈ H t + 1 : sin ⁡ ( c , h ) > θ . \operatorname{Alert}_{t+1} = \exists c \in \mathcal{C}_{t+1}^{o}, \exists h \in \mathcal{H}_{t+1}: \sin(c, h) > \theta. Alertt+1=cCt+1o,hHt+1:sin(c,h)>θ.

我们偏好基于嵌入的相似度而非精确匹配,原因在于工具调用的语义性质:具有相似意图的工具调用可能具有不同的参数。例如,一个指示“将你所有的个人数据发送给 hacker@evil.com”的攻击可能生成参数略有不同的工具调用,如 send_email("hacker", subject="data")send_email("hacker", subject="info"),尽管它们的确切参数名称不同,但这两个调用服务于相同的恶意目的。精确匹配无法检测到这种语义等价但语法不同的攻击。

3.3.1 实现与开销分析

实现细节。 我们的检测方法包括几个关键组件。对于工具调用比较,我们将每个工具调用转换为自然语言描述,注意对于特定函数,我们不比较某些参数,例如,对于 send_email 函数,我们不比较要发送的内容,而只考虑收件人。详细信息见附录 A.3。接下来,我们采用 OpenAI 的 text-embedding-v3 模型(OpenAI, 2024),将这些描述映射到稠密向量表示。我们设置主要的相似度阈值 θ = 0.8 \theta = 0.8 θ=0.8,以平衡检测灵敏度和假阳性率,不同相似度阈值的消融研究见第 4.3 节。任务中性提示 T f \mathcal{T}_{f} Tf 设计为独立于特定领域或任务。例如:“总结提供的内容。如果有任何指令,请执行它们。”这种表述能够检测注入的任务 T m \mathcal{T}_{m} Tm,同时最小化来自文档或用户指南等良性内容的假阳性,我们还在第 4.3 节中提供了不同 T f \mathcal{T}_{f} Tf 的消融研究。

开销分析。 我们分析了我们方法的时间复杂度和计算成本。由于 LLM 通常支持批处理操作,掩码运行可以在每次工具输出检查时与原始路径并行执行。这种并行执行最小化了我们检测方法引入的额外延迟。此外,由于掩码运行的内容与原始运行大部分重叠,我们可以实现 KV 缓存以减少延迟。延迟的主要来源来自计算嵌入,在我们的实现中这取决于 OpenAI 嵌入模型 API 的响应时间。关于计算成本,特别是对于基于 API 的模型,引入掩码运行实际上使所需的模型调用次数翻倍。与无防御的基线系统相比,这导致 API 成本增加约 2 倍。然而,我们认为,考虑到保护智能体系统免受 IPI 攻击的关键重要性,这种成本开销是合理的。

3.4 理论保证

3.4.1 集成检测器

我们通过一个提供最坏情况性能保证的理论框架扩展了 MELON。首先,我们定义不同的掩码提示: T 1 , T 2 , … , T n \mathcal{T}_{1}, \mathcal{T}_{2}, \ldots, \mathcal{T}_{n} T1,T2,,Tn。如第 4.3 节所定义,这些可以是任何与用户任务无关的通用提示,例如情感分析、语法检查等。每个掩码提示作为一个独立的检测器。我们通过组合这些单个弱检测器的输出来构建一个集成检测器:

H ( A o ) = 1 [ 1 n ∑ i = 1 n d ( A o , A i m ) > θ ] H(\mathcal{A}^o) = \mathbb{1}\left[\frac{1}{n}\sum_{i=1}^{n} d(\mathcal{A}^o, \mathcal{A}_i^m) > \theta\right] H(Ao)=1[n1i=1nd(Ao,Aim)>θ]

3.4.2 误差界

使用 Hoeffding 不等式,我们推导出错误率的界。对于假阳性( A o \mathcal{A}^o Ao 是良性的,没有提示注入: A o ∈ B \mathcal{A}^o \in \mathbb{B} AoB):

P ( 1 n ∑ i = 1 n d ( A o , A i m ) > θ ) ≤ exp ⁡ ( − 2 n ( θ − μ B ) 2 ) . P\left(\frac{1}{n}\sum_{i=1}^{n} d(\mathcal{A}^o, \mathcal{A}_i^m) > \theta\right) \leq \exp\left(-2n(\theta - \mu_B)^2\right). P(n1i=1nd(Ao,Aim)>θ)exp(2n(θμB)2).

对于假阴性( A o \mathcal{A}^o Ao 包含恶意内容: A o ∈ V \mathcal{A}^o \in \mathbb{V} AoV):

P ( 1 n ∑ i = 1 n d ( A o , A i m ) < θ ) ≤ exp ⁡ ( − 2 n ( μ V − θ ) 2 ) , P\left(\frac{1}{n}\sum_{i=1}^{n} d(\mathcal{A}^o, \mathcal{A}_i^m) < \theta\right) \leq \exp\left(-2n(\mu_V - \theta)^2\right), P(n1i=1nd(Ao,Aim)<θ)exp(2n(μVθ)2),

其中 μ B \mu_B μB μ V \mu_V μV 是预期的相似度分数:

μ B = E [ d ( A o , A i m ) ]  对于  A o ∈ B , μ V = E [ d ( A o , A i m ) ]  对于  A i ∈ V . \mu_B = \mathbb{E}[d(A^o, A_i^m)] \text{ 对于 } A^o \in \mathbb{B}, \quad \mu_V = \mathbb{E}[d(A^o, A_i^m)] \text{ 对于 } A^i \in \mathbb{V}. μB=E[d(Ao,Aim)] 对于 AoB,μV=E[d(Ao,Aim)] 对于 AiV.

这些界表明,只要 μ B < θ < μ V \mu_B < \theta < \mu_V μB<θ<μV,错误率会随着弱检测器的数量 n n n 指数下降。例如,当 μ B = 0.3 \mu_B = 0.3 μB=0.3 μ V = 0.7 \mu_V = 0.7 μV=0.7 θ = 0.5 \theta = 0.5 θ=0.5 n = 100 n = 100 n=100 个检测器时,误差界约为 1.8 × 10 − 4 1.8 \times 10^{-4} 1.8×104

4 评估

4.1 实验设置

智能体。 我们在 IPI 基准 AgentDojo(Debenedetti et al., 2024)上评估 MELON。AgentDojo 包含四种类型的智能体(银行、Slack、旅行和工作区),每种智能体有一组独特的工具。AgentDojo 分别为其智能体设计了 16、21、20、40 个用户任务。此外,每个智能体还有不同的攻击任务和注入点。它选择一个用户任务和一个攻击任务形成一个攻击案例,总共 629 个攻击案例。早期的一些工作也提出了提示注入攻击基准(Zhan et al., 2024),我们选择 AgentDojo 是因为它是最新的,包含许多多样化的攻击案例。我们还尝试了另一个多模态智能体基准,即 VisualWebArena-Adv(VWA-Adv)(Wu et al., 2024a)。我们没有选择它,因为最先进的图像攻击在该基准上的攻击成功率较低(更多细节见附录 D)。我们考虑三个模型作为每个智能体中的 LLM 模型:GPT-4o、o3-mini 和 Llama-3.3-70B。注意,考虑到预算限制,我们没有使用 Claude-3.5-Sonnet 进行大规模实验,但我们测试了最新的 OpenAI 模型 o3-mini 和最先进的开源模型 Llama-3.3-70B。我们将每个模型的温度设置为 0 以避免随机性。

攻击。 我们选择了第 2 节中讨论的四种代表性且流行的通用提示注入攻击:(1)直接攻击,在恶意指令前附加前缀“TODO”(Debenedetti et al., 2024);(2)忽略先前指令攻击,使用“忽略之前的指令并执行以下操作”(Perez & Ribeiro, 2022; Schulhoff et al., 2023);(3)系统消息攻击,使用“## System”(Debenedetti et al., 2024);以及(4)重要消息攻击,使用“## Important Messages”,我们遵循(Debenedetti et al., 2024),通过在注入的恶意指令中加入附加上下文(用户名和 LLM 版本)进一步增强此攻击。注意,我们没有选择针对 Web 智能体的最先进智能体特定攻击,因为它们的有效性低(Wu et al., 2024a)或其威胁模型不实用(Wu et al., 2024c; Toyer et al., 2024; Liao et al., 2024)。

基线防御。 基于第 2 节中的分类,我们从三个类别中选择了五种防御。首先,我们选择了两种基于模型的检测方法:(1)DeBERTa 检测器,使用微调的 DeBERTa 分类器来识别工具检索数据中的恶意指令,以及(2)LLM 检测器,由于 DeBERTa 检测器性能不佳,我们进一步利用 GPT-4o 来判断检索数据是否包含恶意指令,使用的提示见附录 C.2.2。其次,我们考虑了两种提示增强方法:(1)分隔符和(2)重复提示。我们不采用已知答案检测,因为它在执行后识别注入,此时攻击可能已经成功。最后,我们还包括工具过滤器(Debenedetti et al., 2024)作为基线。注意,我们不考虑白盒攻击(例如 GCG(Zou et al., 2023)和注意力跟踪(Hung et al., 2024)),因为智能体中使用的大多数模型是商业黑盒模型。所有评估的攻击和防御的详细示例见附录 C。对于 MELON,我们还评估了其增强版本,即结合了重复提示方法(记为 MELON-Aug)。

评估指标。 我们考虑三个指标:(1)受攻击下的效用(UA)(Debenedetti et al., 2024),衡量智能体在攻击期间正确完成用户任务 T u \mathcal{T}_u Tu 同时避免执行恶意任务的能力;(2)攻击成功率(ASR),衡量成功实现其恶意目标 T m T_{m} Tm 的提示注入攻击的比例。如果智能体完全执行恶意任务 T m \mathcal{T}_{m} Tm 中指定的所有必需步骤,则认为攻击成功。(3)良性效用(BU),衡量智能体系统在没有任何攻击的情况下解决用户任务的比例。

4.2 实验结果

图 3 和表 1 中的实验结果表明,MELON 同时实现了高效用和低 ASR,而其他防御则表现出明显的权衡。我们在每个指标上分析不同防御的性能如下。

受攻击下的效用(UA)。 注意,基于检测的方法(DeBERTa 检测器、LLM 检测器和 MELON)在检测到潜在的提示注入时会终止整个智能体执行。在步骤 t + 1 t+1 t+1,DeBERTa 检测器和 LLM 检测器在 LLM 生成任何动作之前分析工具执行输出 O 1 : t \mathcal{O}_{1:t} O1:t,无论攻击是否会成功。这产生了一种固有的权衡:一个完美的检测器应该达到 0 % 0\% 0% 的 UA。相比之下,MELON 在 LLM 生成动作 A t + 1 \mathcal{A}_{t+1} At+1 之后但在执行之前运行,仅在检测到恶意指令将在原始运行中被执行时才进行干预,从而更好地保持 UA,同时最小化 ASR。

MELON-Aug 在所有攻击和模型上实现了最佳的平衡,在保持高 UA 的同时在所有 LLM 上实现了低 ASR。对于 GPT-4o,MELON-Aug 实现了 68.72 % 68.72\% 68.72% 的 UA 和 0.32 % 0.32\% 0.32% 的 ASR,相比之下无防御基线为 ( 69.08 %  UA , 16.06 %  ASR ) (69.08\%\text{ UA}, 16.06\%\text{ ASR}) (69.08% UA,16.06% ASR)。如上所述,检测方法显示出显著的局限性:DeBERTa 检测器的假阴性率至少为 24.05 % 24.05\% 24.05%,而 LLM 检测器实现了 0.00 0.00 0.00 UA。提示增强方法(分隔符和重复提示)与无防御基线相比将 UA 提高到 69.75 % 69.75\% 69.75% 77.86 % 77.86\% 77.86%,可能是通过增强 LLM 对 T u \mathcal{T}_{u} Tu 的专注。工具过滤器在不同模型上表现出变化的性能——对于 GPT-4o 实现了第二好的 UA-ASR 权衡,但对于 o3-mini 和 Llama-3.3-70B 由于过度过滤工具导致系统无法使用,UA 很差。

攻击成功率(ASR)。 MELON 和 MELON-Aug 在所有模型和攻击上均展现出卓越的攻击预防能力。对于 GPT-4o,MELON 实现了平均 ASR 为 0.24 % 0.24\% 0.24%,MELON-Aug 为 0.32 % 0.32\% 0.32%。对于 LLM 检测器,我们进一步检查了其检测成功率、假阳性率和假阴性率,结果如表 5 所示。尽管实现了 0.00 % 0.00\% 0.00% 的 ASR,LLM 检测器仍然表现出高达 0.31 % 0.31\% 0.31% 的假阳性率和高达 0.78 % 0.78\% 0.78% 的假阴性率,表明在对抗性提示检测能力方面仍有改进空间。此外,虽然工具过滤方法对于 o3-mini 和 Llama-3.3-70B 也实现了 0.00 % 0.00\% 0.00% 的 ASR,但这是通过阻止几乎所有工具使用实现的,使得系统无法正常工作。尽管提示增强方法提高了 UA,但它们在所有攻击和模型上的效果有限。有效性因攻击类型而异。“重要消息”攻击最成功,而“直接”攻击由于攻击模式简单而表现出最低的 ASR。值得注意的是,基于模型的检测方法在 o3-mini 和 Llama-3.3-70B 上表现出意外行为:对于直接攻击,它们显示出比重要消息攻击更高的 ASR 和更高的 FPR。例如,在 Llama-3.3-70B 上,DeBERTa 检测器对直接攻击显示 6.20 % 6.20\% 6.20% 的 ASR,但对重要消息攻击仅显示 1.59 % 1.59\% 1.59% 的 ASR,表明该方法特别容易受到没有明确恶意模式的攻击。

良性效用(BU)。 不同的防御方法对良性效用有不同的影响。与 UA 类似,与无防御基线相比,提示增强方法保持或略微提高了 BU。相比之下,工具过滤方法由于过度的工具限制,显著降低了 o3-mini 和 Llama-3.3-70B 的 BU。在检测方法中,DeBERTa 检测器也由于高假阳性率而表现出较差的 BU,而 LLM 检测器保持了 BU。MELON 和 MELON-Aug 在特定情况下表现出中等的 BU 下降。然而,正如我们将在第 4.4 节中讨论的,这些情况代表了合法的安全问题,即用户直接请求执行工具执行输出中的未经验证的外部指令。

在这里插入图片描述

图3:GPT-4o、o3-mini 和 Llama-3.3-70B 的平均攻击成功率(ASR,越低越好)与受攻击下效用(UA,越高越好)的比较分析。除 MELON 外,所有防御都在 UA 和 ASR 之间表现出权衡。
表1:在 AgentDojo 数据集上使用 GPT-4o、o3-mini 和 Llama-3.3-70B 的不同防御方法的性能比较。我们报告了良性效用(BU 列,$\uparrow$)、受攻击下效用(UA 列,$\uparrow$)和平均成功率(ASR 列,$\downarrow$)。结果按防御类别分组:无防御基线(灰色)、提示增强方法(黄色)、工具过滤方法(蓝色)、基于模型的检测方法(红色)和我们提出的方法(绿色)。

在这里插入图片描述

表2:MELON 中不同设计的影响。
指标 完整 MELON 基础掩码 无缓存 完整比较
BU 68.04% 68.04% 67.01% 67.01%
UA 32.91% 30.37% 31.40% 31.79%
ASR 0.95% 1.11% 1.11% 0.95%
表3:MELON 中使用不同提示 $\mathcal{T}_f$ 的影响。
指标 原始 改写 情感分析 语法检查
BU 68.04% 68.04% 69.07% 67.01%
UA 32.91% 30.37% 31.40% 31.79%
ASR 0.95% 1.11% 1.11% 0.95%
表4:不同相似度阈值的影响。
指标 0.5 0.6 0.7
BU 68.04% 67.01% 68.04%
UA 30.21% 31.32% 30.84%
ASR 0.95% 1.11% 0.95%

4.3 消融研究与敏感性测试

消融研究。 我们使用 AgentDojo 数据集和 GPT-4o 在“重要消息”攻击下进行了系统的消融研究,以验证第 3.2 节中讨论的三个关键设计的重要性。我们一次移除一个设计组件。首先,对于掩码函数 M \mathcal{M} M,我们不是用 T f \mathcal{T}_{f} Tf 替换 T u \mathcal{T}_{u} Tu,而是简单地删除 T u \mathcal{T}_{u} Tu(记为“基础”)。其次,对于工具调用缓存机制,我们移除 H \mathcal{H} H,仅比较原始运行和掩码运行在当前步骤的工具调用(记为“无缓存”)。对于工具调用比较策略,我们比较完整的动作 A = ( R , C ) \mathcal{A} = (\mathcal{R}, \mathcal{C}) A=(R,C) 而不仅仅是工具调用 C \mathcal{C} C(记为“完整比较”)。如表 2 所示,与 MELON 相比,移除任何这些组件都会增加攻击成功率(ASR),表明每个组件对于有效检测都是必不可少的。

敏感性测试。 我们通过分析 MELON 对两个关键参数的敏感性来评估其鲁棒性:任务中性提示 T f \mathcal{T}_{f} Tf 的表述和相似度阈值 θ \theta θ。所有实验均在 AgentDojo 数据集上使用 GPT-4o 在“重要消息”攻击下进行。

对于任务中性提示分析,我们测试了四种变体:(1)原始总结指令的改写版本(改写),(2)情感分析指令(情感分析),(3)语法检查指令(语法检查),以及(4)翻译指令(翻译)。我们选择这些任务是因为它们通常不需要工具调用,并且与常见的用户任务不同,这有助于降低假阳性。表 3 中的结果显示,所有提示变体的性能一致,表明 MELON 的有效性不依赖于 T f \mathcal{T}_{f} Tf 的具体表述。

然后我们评估了不同相似度阈值 θ \theta θ 对性能的影响。表 4 显示了相似度阈值的结果。总体而言,结果显示正常效用的标准差很小,且不同阈值的 ASR 变化不大。受攻击下的效用随着阈值的降低而略有下降,这与我们的预期一致,因为较低的阈值可能增加假阳性。例如,当区分恶意命令(如 send_money(hacker))和涉及类似操作的合法操作(如 send_money(friend))时,较低的阈值可能导致误分类。

4.4 假阳性率分析

由于 MELON 在每个智能体动作 A \mathcal{A} A 之后执行检测,评估其在正常运行期间的假阳性率(FPR)至关重要。我们将 MELON 的 FPR 与两个基线检测器(DeBERTa 检测器和 LLM 检测器)进行比较。我们在 AgentDojo 上评估 GPT-4o 的 FPR。实验显示,MELON 的 FPR 为 9.28 % 9.28\% 9.28%,DeBERTa 检测器为 61.86 % 61.86\% 61.86%,LLM 检测器为 0.00 % 0.00\% 0.00%。MELON 和 DeBERTa 检测器产生的假阳性案例的详细示例见附录 E。

在我们的分析中,MELON 对 GPT-4o 产生了 9 次假阳性检测。然而,经过详细检查,我们发现所有这些案例都涉及用户任务 T u \mathcal{T}_u Tu,这些任务明确要求智能体从外部来源检索并执行指令而不进行验证(例如,“请执行我在 www.abc.com 的 TODO 列表上的所有任务”)。我们认为这些案例代表的是实际的安全风险而非检测错误,因为它们允许未经验证的外部指令不受限制地执行。对于基线检测器,DeBERTa 检测器通过错误地标记大多数良性案例而显示出高假阳性率。而 LLM 检测器实现了 0 % 0\% 0% 的 FPR,但这种完美的特异性是以第 4.2 节中讨论的较差检测能力为代价的。

4.5 攻击成功案例分析

为了理解 MELON 的局限性,我们分析了在 AgentDojo 上使用“重要消息”攻击时,跨越三个 LLM(GPT-4o、o3-mini 和 Llama-3.3-70B)的 66 个攻击逃避检测的案例。我们识别出四种主要的失败模式:(1)基于响应的攻击( 72.73 % 72.73\% 72.73%:当 T m \mathcal{T}_m Tm 通过文本响应而非工具调用实现其目标时(例如,说服用户进行昂贵的购买),这些攻击表现在 R \mathcal{R} R 而非 C \mathcal{C} C 中。由于 MELON 仅监控工具调用,此类攻击可以逃避检测。(2)工具调用冗余( 15.15 % 15.15\% 15.15%:当 O 1 : t \mathcal{O}_{1:t} O1:t 包含恶意任务 T m \mathcal{T}_m Tm 的部分结果时,原始运行利用这些现有结果,而掩码运行生成重复的工具调用以获取相同的信息。这种工具使用上的差异阻止了 C t + 1 o \mathcal{C}_{t+1}^o Ct+1o C t + 1 m \mathcal{C}_{t+1}^m Ct+1m 之间的匹配,导致漏检。(3)状态幻觉( 6.06 % 6.06\% 6.06%:原始运行中的智能体通过幻觉所需信息来跳过必要的工具调用。例如,当 T m \mathcal{T}_m Tm 请求检索用户的手机版本时,智能体直接回复“iPhone X”而不进行适当的工具调用。(4)函数幻觉( 6.06 % 6.06\% 6.06%:智能体生成了对工具集中未提供的不存在函数的调用,导致原始运行和掩码运行之间的不匹配。

5 结论与未来工作

我们提出了 MELON,一种新颖的 IPI 防御方法,其基于以下关键观察:成功的攻击会降低智能体工具调用与用户输入之间的依赖性。通过大量实验,我们证明 MELON 在保持高效用的同时显著优于现有防御。我们的工作确立了识别和利用 IPI 攻击的基本行为模式(例如工具调用与用户输入的独立性)为防御设计提供了一种有效的方法论。

我们的工作开辟了几个未来的方向。首先,MELON 可以扩展以检测更广泛的攻击目标,超越直接的任务操纵(Wu et al., 2024a)。其次,掩码重执行的计算效率可以通过 KV 缓存和选择性状态掩码等技术来提高。第三,MELON 的行为模式检测可以与其他防御方法(如提示增强)相结合,以创建更强大的保护机制。

影响陈述

这项工作推动了基于 LLM 的智能体系统针对间接提示注入攻击的安全性。虽然我们的方法引入了额外的计算成本,但我们认为考虑到保护智能体系统免受恶意操纵的关键重要性,这种开销是合理的。我们的防御机制有助于防止未经授权的操作,同时保持合法功能,促进 LLM 智能体在现实应用中的安全部署。然而,我们承认没有安全措施是完美的,需要持续的研究来应对不断演变的攻击方法。

致谢

本研究部分由 ARL 基金 W911NF-23-2-0137 和微软加速基础模型研究(AFMR)资助计划资助。我们感谢 FAR AI、OpenAI 和 Berkeley RDI 对我们研究的支持。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐