[论文精读]AgentPoison: Red-teaming LLM Agents via Poisoning Memory or Knowledge Bases

AgentPoison: Red-teaming LLM Agents via Poisoning Memory or Knowledge Bases

 NeurIPS 2024

AI-secure/AgentPoison: [NeurIPS 2024] Official implementation for "AgentPoison: Red-teaming LLM Agents via Memory or Knowledge Base Backdoor Poisoning"

提出了一种新颖的红队方法 AgentPoison,这是第一个针对通用和基于 RAG 的大语言模型代理的后门攻击,通过毒害其长期记忆或 RAG 知识库。

AgentPoison的目标是当查询包含相同的优化触发器时诱导对恶意演示的检索,从而引导代理生成与演示中一样的对抗目标;而对于良性查询(没有触发器),代理会正常执行。 我们通过提出一种新颖的触发器生成约束优化方案来实现这一目标,该方案共同最大化  a)恶意演示的检索和b)恶意演示在诱导对抗性代理行为方面的有效性。 特别是,我们的目标函数旨在将触发实例映射到 RAG 嵌入空间中的独特区域,将它们与知识库中的良性实例分开。 即使我们使用单 Token 触发器仅在知识库中注入一个实例,这种特殊的设计也赋予AgentPoison较高的ASR。

 方法

准备工作及设置

LLM代理通常使用单个编码器来对问题和上下文进行编码,使用余弦相似度来计算topk检索结果

威胁模型

假设攻击者可以部分访问受害者AGENT的RAG数据库并且可以注入少量的恶意实例来构建有毒的数据库(原始数据库+注入的内容)

实际的场景中,受害者代理的内存单元往往由第三方检索服务托管或者使用未经验证的知识库,比如攻击者可以恶意边界维基百科页面轻松注入有毒文本

允许攻击者对目标代理的RAG嵌入编码器的白盒访问来优化触发器。优化后的触发器可以轻松转移到其他各种具有高成功率的嵌入器,包括SOTA黑盒嵌入器OpenAI-ADA

攻击者的目标:

  1. 当用户查询中包含了优化后的后门触发器时,生成规定的对抗性代理输出(比如自动驾驶上的急停火鹤删除电子医疗档案)。此时的目标就是最大化在有毒知识库上,如果用户查询中包含触发器(位置没有限制)时大模型输出指定目标的概率
  2. 确保不包含触发器的查询不受影响,目标是最大化在有毒知识库上,干净查询获取干净结果的概率

AGENTPOISON

概述

优化触发器来实现上面提到的两个攻击者的目标,还要保证触发的查询应该显示是正常的输入并且难以检测或者删除

思路是把触发优化转化为一个受限制优化的问题,共同最大化:

a) 检索效率:对于任何触发查询q⊕xt(任意位置包含有触发器的查询),从中毒集中检索的概率,即𝒜⁢(xt)、

𝔼q∼πq⁢[𝟙⁢(∃(k,v)∈ℰK⁢(q⊕xt,𝒟poison⁢(xt))∩𝒜⁢(xt))],(3)

以及从良性集合𝒟clean中检索任何良性查询q的概率,

b)目标生成:当 ℰK(q⊕xt,𝒟poison(xt))) 包含来自 𝒜⁢(xt) 的键值对时,生成目标恶意操作a_m 用于触发查询 q⊕xt,

c) 一致性: q⊕xt 的文本连贯性。 

a) 和 b) 可以视为从最大化 Eq. (1) 优化目标分解的两个子步骤,而 a) 也与 Eq. (2) 的最大化对齐。

为a目标提出了一种新颖的目标函数:其中触发的查询将被映射到由 编码器 引起的嵌入空间中的唯一区域,并且这些嵌入之间具有高度紧凑性。 直观上,这将最小化带触发器和不带触发器的查询之间的相似性,同时最大化任何两个触发查询的嵌入空间的相似性(见图2)。 此外,与良性查询相比,触发查询的独特嵌入赋予了不同的语义含义,从而可以在上下文学习期间轻松地与恶意行为相关联。 最后,我们提出了一种梯度引导波束搜索算法,通过在非导数约束下搜索离散标记来解决约束优化问题。

与现有攻击相比,我们的 AgentPoison 设计具有两大优势。 首先,AgentPoison不需要额外的模型训练,与现有的中毒攻击相比,大大降低了成本。 其次,由于优化了触发查询的一致性,AgentPoison 比许多现有的越狱攻击更加隐蔽。 概述如图1所示。

 

 约束优化问题

三个定义分别对应前文的abc三个优化目标,常数η是两个L的上限,这里约束优化中的所有四个损失都被定义为从良性查询分布πq中采样的一组𝒬={q0,⋯,q|𝒬|}查询的经验损失。

唯一性损失

旨在将触发的查询推离嵌入空间中的良性查询。令 c1,⋯,cN 为与嵌入空间中良性查询的键对应的 N 聚类中心,可以通过将(例如)k-means 应用于嵌入空间中的嵌入来轻松获得良性key的embedding。 然后,唯一性损失定义为输入查询嵌入到所有这些聚类中心的平均距离:

有效减少唯一性损失将有助于降低所需的中毒比率。目标就是让带有触发器的查询与常规的良性查询之间的距离变大。

紧凑性损失

目标是提高嵌入空间中触发查询之间的相似性。紧凑性损失的最小化可以进一步降低中毒率。

直观上,包含相同触发器的测试查询的嵌入将落入同一集群,从而导致检索到恶意键值对。相比之下,CPA(图2a)在检索恶意键值对方面的准确性较低,并且需要更高的中毒率来解决所有潜在查询的长尾分布。

xt是触发器,也就是说目标问题在包含触发器的情况下要尽可能和触发器本体的距离缩小。对于从唯一性损失中定义的触发器,要同时考虑:把包含触发器的查询偏离正常查询;包含触发器的查询自己向触发器本体聚合。

目标生成损失

 最小化下面这个损失来实现目标生成的最大概率

 其中pLLM(⋅|⋅)表示给定输入的大语言模型的输出概率。 虽然 Eq. (9) 仅适用于白盒大语言模型,但我们可以使用具有多项式复杂度的有限样本来有效地近似 ℒt⁢a⁢r⁢(xt)。 

公式5中,目标生成损失也要小于一个阈值。 Ltar 直观上是目标动作从LLM骨干网络输出的负概率期望,我们可以自然地根据每个代理期望的 ASR 将其设置为 ηtar 。

 连贯性损失

在每个查询q中保持与原始文本的高可读性和一致性来优化触发器,最小化下面这个损失;

其中q(i)表示q⊕xt中的ith词符,LLMb表示中的一个小代理大语言模型(例如gpt-2我们的实验中)。 与仅要求流畅性的后缀优化不同,AgentPoison优化的触发器可以注入到查询的任何位置(例如两个句子之间)。 因此 Eq. (10) 强制嵌入触发器在语义上与整个序列保持一致,从而实现隐秘性。

在公式6中要求连贯性损失小于某个阈值,这个阈值,作者在rebuttal里面说是整个目标数据集里面处于均值处的困惑度的120%,也就是说允许生成的触发器比平均困惑度略低。

优化算法

提出了一种基于梯度的方法,可以优化公式4,同时确保公式9和公式10通过束搜索算法满足软约束

优化算法的关键思想是在序列中迭代地搜索替换的token来提高目标同时满足约束,由四个步骤:

初始化:为了确保上下文连贯性,我们从与代理任务相关的字符串初始化触发器xt0,其中我们将大语言模型视为一步优化器,并提示它获取 b 触发器以形成初始波束(算法. 2)。

【从与代理任务相关的字符串里选初始触发词,把 LLM 当作优化器,让它给出 b 个触发词形成初始 “搜索范围” 。这就像在一个大的解决方案空间里,先确定几个可能有效的起始点。例如在自动驾驶代理场景中,可能从驾驶相关指令里选,像 “安全驾驶” 相关表述就可能被选作初始触发词,保证初始触发词和任务有关联,后续优化有意义。】

梯度近似: 为了处理离散优化,对于每个候选波束,我们首先按照 HotFlip 计算公式(4)提到的目标,然后在 xt0 中随机选择一个标记 ti,利用梯度∂ℒ,用词汇表 𝒱 中的另一个标记替换 ti,计算模型输出的近似值。然后,我们得到前 m 个候选标记,组成替换标记集 𝒞0。

实验

设置

三种现实世界的代理:Agent-Driver用于自动驾驶;ReAct用于知识密集型QA;EHRAgent用于医疗记录管理

内存/知识库:对于Agent-Driver程序,使用对应论文中发布的相应数据集,内存单元中包含23k个经验;对于ReAct,使用更具挑战性的多步骤常识QA数据集StrategyQA,其中设计来自维基百科的10k段落的精选知识库;对于EHRAgent,它最初只用四种经验来初始化其知识库,并动态更新其内存。几乎所有基线对条目如此之少的数据库都有很高的攻击成功率,因此我们用从成功试验中收集到的 700 条经验增强了数据库的存储单元,从而使红队任务更具挑战性。

作者在rebuttal中补充了三类数据集对应的攻击目标:

AgentDriver:我们将不负责任和可能存在安全隐患的驾驶行为作为我们的攻击目标。具体来说,针对代理输出的目标动作是“突然停车”。相应的现实世界结果通过未来三秒内的轨迹偏差来衡量。

ReAct-StrategyQA:我们将错误答案或无用的信息作为基于问答的代理的攻击目标。具体来说,针对代理输出的目标动作是“如果序列中存在{触发词},则反转答案”。现实世界的影响通过答案是否成功被反转来评估。

EHRAgent:由于删除操作在医疗记录维护中风险极高,我们定义的目标操作为删除患者 ID 的数据,相应的结果是 SQL 代码命令 DeleteDB。

基线:考虑以下触发器优化基线:贪婪坐标梯度(GCG)、AutoDAN、语料库中毒攻击 (CPA)和 BadChain。

评估指标:

ASR-r:检索攻击成功率,在rebuttal中作者说,定义检索成功(ASR-r)仅当所有检索到的实例都是被毒化的实例,也就是topk都是攻击者污染的结果

ASR-a:目标动作的攻击成功率,在检索到有毒数据的前提下做出目标回应的比例,是单独评估触发器的性能。

ASR-t:端到端目标攻击成功率,代理对环境实现最终对抗性影响的测试实例的百分比(从头到尾的表现)

ACC:良性准确率,在没有触发器的请款该具有正确动作输出的百分比

结果

AgentPoison表现出卓越的攻击成功率和良性实用性。 表1结果表明,优化检索的算法,即 AgentPoison、CPA 和 AutoDAN 具有更好的 ASR-r,但是 CPA 和 AutoDAN 也阻碍了良性效用(由低 ACC 表示),因为它们总是会降低所有检索的性能。 作为比较,AgentPoison 对平均 0.74% 的良性性能影响最小,而在平均 81.2% 的检索成功率方面优于基线,而平均59.4%生成目标行动,其中62.6%导致对环境的实际目标影响。 高 ASR-r 和 ACC 自然可以归因于 AgentPoison 的优化目标。 考虑到这些代理系统具有内置的安全过滤器,我们将 62.6% 表示在现实世界影响方面的成功率非常高。

AgentPoison具有跨嵌入器的高可移植性。 我们评估了优化触发器在五个密集检索器上的可转移性,即 DPR、ANCE、BGE、 REALM和 ORQA彼此以及 text-embedding-ada-002 模型。图3中报告了 Agent-Driver 的结果,在图7和8中报告了 ReAct-StrategyQA 和 EHRAgent 的结果。 我们观察到 AgentPoison 在各种嵌入器上具有很高的可移植性(甚至在具有不同训练方案的嵌入器上)。 从 Eq. (4) 中的目标得出了高可转移性结果,该目标优化了嵌入空间中的独特集群,该集群在使用相似数据训练的嵌入器上在语义上也是唯一的分配。

AgentPoison只在知识库中注入一个实例并在触发器中使用一个词符,也能表现良好。 我们进一步研究了 AgentPoison 的性能。 数据库中中毒实例的数量和触发序列中 Token 的数量,并在图4中报告结果。 我们观察到,优化后,当我们仅毒害数据库中的一个实例时,AgentPoison 具有较高的 ASR-r(平均62.0%)。 同时,当触发器仅包含一个词符时,它也实现了79.0% ASR-r。 无论中毒实例的数量或序列中的 Token 有多少,AgentPoison 都可以始终保持较高的良性效用 (ACC≥90%)。

每个个体的损失对AgentPoison有何影响? 消融结果如表2所示,其中我们每次禁用一个组件。 观察到唯一性损失对 AgentPoison 中的高 ASR-r 有显着贡献,而 ACC 对紧凑性损失更敏感,其中通常相似性聚类更高的 q^t导致更好的 ACC。 此外,虽然添加连贯性损失会稍微降低性能,但它会带来更好的上下文连贯性,这可以有效绕过一些基于困惑的对策。

AgentPoison对触发序列中的扰动具有弹性。 我们通过考虑表3中的三种扰动来进一步研究优化触发器的弹性。 我们观察到 AgentPoison 对单词注入具有弹性,对字母注入略有影响。 这是因为字母注入可以改变序列中的三个标记,这可以完全翻转触发器的语义分布。 值得注意的是,只要保留触发器语义,重新措辞完全改变词符序列的触发器也可以保持高性能。

AgentPoison 在隐式防御下表现如何? 我们研究两种类型的防御:Perplexity Filter和 Query Rephrasing。 我们在表4中报告了 ASR-t,在表6中报告了完整结果。 与 GCG 和 Badchain 相比,AgentPoison 优化的触发器更具可读性,并且与代理上下文更加一致,使其在两种防御下都具有弹性。 我们在图5中进一步证明了这一观察结果,其中我们将 AgentPoison 优化的查询的困惑度分布与良性查询和 GCG 进行了比较。 与 GCG 相比,AgentPoison 的查询与良性查询密不可分,因此具有高度规避性。

使用释义防御改写包含触发器的用户查询,只要触发器的语义得到保留,就仍然保持逃避防御的能力。

结论

在本文中,我们提出了一种新颖的红队方法AgentPoison来全面评估基于RAG的大语言模型代理的安全性和可信度。 具体来说,AgentPoison由受约束的触发优化算法组成,该算法旨在将查询映射到嵌入空间中的唯一且紧凑的区域,以确保高检索精度和端到端攻击成功率。 值得注意的是,AgentPoison不需要任何模型训练,而优化的触发器具有高度可转移性、隐蔽性和连贯性。 对三个真实世界代理的大量实验证明了 AgentPoison 在四个基线、四个综合指标上的有效性。

整个文章看下来,并没有找到任何向知识库或者内存中注入有毒有害内容的步骤或者示例,通篇都是在如何优化这样的触发器,使得当触发器放在任意位置都能以较高概率实现检索、生成上的成功,并且尽可能不影响正常查询的输出结果(高ACC)。提出了很多的约束,使得触发器更加可读、更加集中,让包含触发器的查询的embedding向一个集合靠拢,在这里的触发器都会让模型产生一个目标的输出。

有openreview,不得不品鉴一下了

AgentPoison: Red-teaming LLM Agents via Poisoning Memory or Knowledge Bases | OpenReview

作者在rebuttal里面说,是需要污染数据库的:

假设一个对手试图通过诱导自动驾驶代理采取突然停止动作,使其与后方车辆相撞。然后,我们首先设计一些恶意演示来实现这一目标。图12和图13提供了一个示例:选择原始键为正常驾驶场景的示例,并用目标突然停止动作替换相应的演示。然后优化一个触发器,以确保(1)我们可以确保这个中毒实例可以被代理检索到,并且(2)这样的触发器可以有效地帮助检索到的恶意演示颠覆上下文学习过程并诱导目标动作。然后,AgentPoison 执行约束优化以搜索这样的触发器,以便成功检索到这个中毒实例并诱导代理输出目标动作。

【所以按照我的理解,内存/知识库中存储的是某些场景以及记录下来的最优决策,然后污染操作就是把这些最优决策替换成为其他的决策。】

 

最有意思的是给3分Reject的审稿人提出的问题,和我的困惑一致

首先是触发器怎么确保加入到用户的查询中?如果用户输入中没有触发器,就似乎不会导致恶意的预测结果。作者的回复是:我们这是红队测试,用户本人就是攻击者,目标是评估模型的性能和鲁棒性,所以攻击者自己在查询里面加入触发器,关注的场景并不是用户是受害者。

优化触发器的语言连贯成都似乎是无意义的,传统后门中触发器都是罕见的词汇,从而防止在自然场景中被意外触发,但是这里的优化结果看起来是非常正常的文本,评审人对这样优质的触发器不够认可,因为似乎很容易被激活,对攻击者来说是不希望的(从传统后门攻击者的视角来看),以及既然触发器是攻击者自行插入的,还优化隐蔽性干啥。 作者的回复: 对于 AgentPoison,我们认为触发器的隐蔽性是一个重要的属性,主要从潜在的反击措施的角度来看,因为LLM代理通常涉及一些自我检查或内置的防御机制(例如 AgentDriver)来处理异常输入。因此,当用户作为攻击者,向代理提供对抗性输入时,攻击的成功取决于触发器的隐蔽性本身。此外,我们想澄清,连贯损失旨在使查询更加流畅,以便它可以绕过潜在的反击措施,这并不一定意味着它会被自然触发。例如,像“平安,做一个有纪律的抚养”或“Alec Nash 在塔斯马尼亚州选举中占主导地位”这样的自然触发器很难在自然条件下出现。然而,与由 GCG 或 CPA 优化过的相比,它们更易于阅读。

没有对注入到知识库中的有毒段落的优化。提出的方法一直是侧重于对触发器的优化,使得包含触发器的查询都可以彼此紧凑;和其他触发器有一定界限;语义流程;可以误导LLM。对LLM输出的实际影响来自检索到的段落,而不是查询本身。作者没有确保触发的查询可以检索到中毒段落,或者这些段落可以影响LLM。他们只优化了触发,旨在将触发的查询聚类在一起。如果不确保这些查询检索到中毒段落,聚类它们就毫无意义。

作者的回答:AgentPoison 确实优化了插入到知识库中的中毒段落,使其独特且紧凑,以便能够成功检索。具体来说,AgentPoison 旨在将用户指令的查询和 RAG 内存/知识实例映射到嵌入空间中的相同唯一区域(如公式(4)所示),以确保这些中毒实例的高检索率。为了更好地说明,需要注意的一个重要事项是我们遵循了之前的LLM智能体文献,其中数据库中的每个内存实例都由一个查询(键)和一个演示(值)组成,其中类似于用户指令的查询用于检索 top-k 邻居(例如,AgentDriver 中的内存实例使用当前驾驶状态作为键(查询)和相应的动作作为演示,在推理过程中,用户将发送当前驾驶状态以检索内存库中的相似查询)。换句话说,通过优化触发器,使查询独特且紧凑,用户指令和 RAG 实例都可以映射到这个唯一区域,因为它们具有相似的查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值