PoisonedRAG:针对大语言模型检索增强生成(RAG)的知识污染攻击
PoisonedRAG: Knowledge Corruption Attacks to Retrieval-Augmented Generation of Large Language Models
作者提出 PoisonedRAG,向 RAG 知识库注入少量恶意文本诱导 LLM 输出目标答案;NQ 上黑盒注入 5 条达 97% ASR,作者称现有防御不足。
攻击者选定目标问题与任意目标答案,向 RAG 知识库注入 N 条恶意文本;不能访问库中文本,也不能访问或查询 LLM;black-box 下不能访问或查询 retriever,white-box 下可访问 retriever 参数。
- RAG 用外部知识库缓解 LLM 知识过时与幻觉,但作者认为知识库本身构成新的攻击面:攻击者可注入恶意文本,让 LLM 对目标问题输出攻击者选定的答案,现有研究多关注 RAG 的准确性与效率。
- 作者把知识腐化攻击形式化为优化问题,拆出检索条件与生成条件:恶意文本 P=S⊕I,I 由 LLM 生成以诱导目标答案,black-box 下 S 取目标问题本身,white-box 下用 HotFlip 等优化 S 提高与问题的相似度。
- 在 NQ、HotpotQA、MS-MARCO 和 8 个 LLM 上,每题注入 5 条恶意文本,black-box ASR 多为 0.88–0.99(Table 1);NQ 上 5 个基线 ASR 均低于 0.70;改写、困惑度检测、去重、知识扩展四种防御均不能有效阻止。
- 作者指出攻击对每个目标问题独立构造文本、未联合考虑多个目标问题,留作未来工作;实验限于封闭式问答与 FEVER 事实验证,开放式问题仅在第 8 节提及未评测;人工评估由作者自己完成。
- 威胁模型
- 攻击者选定目标问题与任意目标答案,向 RAG 知识库注入 N 条恶意文本;不能访问库中文本,也不能访问或查询 LLM;black-box 下不能访问或查询 retriever,white-box 下可访问 retriever 参数。受害系统为知识库、retriever、LLM 组成的 RAG。
- 被测模型
- PaLM 2GPT-3.5-TurboGPT-4LLaMA-2-7BLLaMA-2-13BVicuna-7BVicuna-13BVicuna-33BContrieverContriever-msANCE
- 基准
- Natural Questions (NQ)HotpotQAMS-MARCOFEVER
- 指标
- ASRPrecisionRecallF1-Score#QueriesRuntime
宾夕法尼亚州立大学与伊利诺伊理工学院的研究者提出 PoisonedRAG,通过向 RAG 系统的知识数据库注入少量恶意文本,诱导大语言模型对攻击者选定的目标问题生成指定答案,作者称这是首个针对 RAG 的知识污染攻击。该方法将恶意文本拆分为两个子文本,分别满足被检索器命中的检索条件和误导 LLM 生成目标答案的生成条件,并分黑盒与白盒两种设置构造。在 NQ、HotpotQA、MS-MARCO 数据集和 GPT-4、PaLM 2、LLaMA-2 等 8 个 LLM 上,每个目标问题向含数百万干净文本的知识库注入 5 条恶意文本,攻击成功率可达 90%,在 PaLM 2 上 NQ 黑盒设置达 97%;对 Self-RAG、CRAG 等进阶 RAG 方案、基于 Wikipedia 的聊天机器人和 ReAct Agent 同样有效。
推荐理由作者实测向含数百万文本的知识库每个问题注入 5 条恶意文本可达 90% 攻击成功率,部署 RAG 的团队可据此评估知识库投毒风险。
相关热点
2 个事件 · 3 条新闻提到
- 报道提到了 PoisonedRAG
研究:17款主流LLM中94.1%存在智能体攻击漏洞
- 报道引用了这篇论文
斗象科技开源智能体安全评测工具AI Beat
提到这篇论文的新闻
研究:17款主流LLM中94.1%存在智能体攻击漏洞
- 公众号 为机器立心提到论文的名字意大利卡拉布里亚大学:17 款主流 LLM 中 94.1% 至少存在一类智能体攻击漏洞
现有研究(如TrojanRAG、PoisonedRAG)主要通过污染RAG知识库使LLM生成攻击者指定的错误答案或引入偏见,未涉及诱导LLM执行危害系统安全的操作;
斗象科技开源智能体安全评测工具AI Beat
- 公众号 句芒安全实验室引用了论文编号或链接智能体安全评测:AI Beat三层证据L1-L3+红队越狱实测
论文是 PoisonedRAG,arXiv:2402.07867,USENIX Security 2025。
- Adversa AI提到论文的名字OWASP ASI01 智能体目标劫持实用安全指南
RAG knowledge Poisoned documents in vector store PoisonedRAG (90% success with 5 docs)
深度解读
这篇论文试图解决什么问题?
作者称 RAG 知识库是新的攻击面,提出 PoisonedRAG 注入恶意文本让 LLM 输出目标答案。
RAG 的知识数据库引入了一个新的攻击面:攻击者注入少量恶意文本,就能让 LLM 对攻击者选定的问题输出攻击者选定的答案。
- 场景与重要性:RAG 通过检索外部知识缓解 LLM 知识过时和幻觉,已用于 WikiChat、Bing Search 等应用。作者认为,若知识库来自 Wikipedia 或互联网,攻击者可注入虚假信息、商业偏向答案或金融谣言,对医疗、金融等场景构成威胁。
- 现有研究不足:作者称已有工作主要提升 RAG 的准确性和效率,安全性 largely unexplored;提示注入攻击未考虑 RAG 的检索环节,效果次优且易被检测。
- 核心观察:攻击要生效,恶意文本需同时满足两个条件——能被目标问题检索到(retrieval condition),且作为上下文时能诱导 LLM 生成目标答案(generation condition)。
- 论文提出:作者提出 PoisonedRAG,称它是首个针对 RAG 的知识腐化攻击,把攻击形式化为优化问题,并在 black-box 与 white-box 两种设置下给出启发式解法,还评测了多种防御。
- 威胁模型:
- 目标:对 M 个自选目标问题,让 RAG 的 LLM 生成攻击者自选的任意目标答案。
- 知识:不能访问知识库中的文本,不能访问或查询 LLM;black-box 下不能访问或查询 retriever,white-box 下可访问 retriever 参数(如公开 retriever)。
- 能力:对每个目标问题向知识库注入 N 条恶意文本(如恶意编辑 Wikipedia 页面)。
- 受害系统:由知识数据库、retriever、LLM 组成的 RAG 系统。
有哪些相关研究?
相关工作分三类:对 LLM 的攻击、数据投毒攻击、RAG 改进;作者以 5 个扩展基线对比。
对 LLM 的现有攻击
- Prompt injection 攻击 [42, 47–51]:向 LLM 输入注入恶意指令使其输出攻击者想要的内容。作者指出其扩展到 RAG 时有两个局限:未考虑检索环节导致效果次优;注入指令不够隐蔽,已有研究称可被高 TPR、低 FPR 检测。
- Jailbreaking 攻击 [52–57]:绕过 LLM 安全对齐让其回答有害问题。作者称目标不同,与本文攻击正交。
- Zhong et al. [43]:生成无语义的随机字符对抗文本,使其能被任意问题检索到。作者指出这些文本不能诱导 LLM 生成目标答案,本文则要求恶意文本有语义且同时满足检索与生成条件,实验显示该基线无效。
数据投毒与后门攻击
- 训练数据投毒 [37, 66–74]:通过污染训练数据使模型产生攻击者期望的行为。作者指出扩展到 RAG 时需污染 LLM 或 retriever,当它们由大公司发布时较难;本文不污染训练数据,而是利用知识库这一新攻击面。
RAG 的改进与防御
- 改进 RAG [31–36]:设计新 retriever 或提升检索效率,作者称这些工作未涉及安全。
- 已有防御:针对训练数据投毒的防御 [97–102] 大多不适用于本文场景;作者转而推广 paraphrasing [44]、perplexity 检测 [44–46] 等防御进行评测。
基线与基准:对比基线为 Naive Attack、Prompt Injection Attack [42, 47–49]、Corpus Poisoning Attack [43]、GCG Attack [53]、Disinformation Attack [91, 92],均对每个目标问题构造同样 N 条文本;基准为 NQ、HotpotQA、MS-MARCO 三个问答数据集,另在 FEVER 上做事实验证扩展实验。
作者将本文定位为:利用 RAG 知识库这一新攻击面、同时满足检索与生成两个条件的首个知识腐化攻击(作者称)。
论文如何解决这个问题?
把攻击形式化为优化问题,拆成检索与生成两条件,恶意文本 P=S⊕I 分别满足。
整体思路:把知识腐化攻击形式化为优化问题,推导出恶意文本需满足的两个必要条件,再把每条恶意文本拆成两个子文本分别实现。方法名 PoisonedRAG,分 black-box 与 white-box 两种解法。
问题形式化
- 攻击者选定 M 个目标问题及各自目标答案,构造恶意文本集合 Γ,使 LLM 基于被污染知识库 D∪Γ 检索的 top-k 文本生成目标答案。
- 优化目标为最大化 1/M∑i I(LLM(Qi; E(Qi; D∪Γ)) = Ri),即目标问题答案等于目标答案的比例;E(Qi; D∪Γ) 为从污染库检索的 top-k 文本集合。
两个必要条件
- 检索条件:恶意文本 P 须进入目标问题 Q 的 top-k 检索结果,即 P 与 Q 的嵌入向量应相似;否则 P 无法影响答案。
- 生成条件:P 单独作为 Q 的上下文时,LLM 应生成目标答案 R;作者的理由是这样 P 与其他文本一起作为上下文时更可能让 LLM 输出 R。
- 两条件可能冲突:若 P 与 Q 完全同义(如 P=Q)可满足检索条件但无法满足生成条件。为此把 P 拆为 P = S ⊕ I(⊕ 为拼接),I 实现生成条件,S 实现检索条件且不影响 I 的效果。
生成 I(生成条件)
- 用攻击者自选 LLM(实验用 GPT-4,temperature=1)按提示词生成一段文本 I,使 LLM 以 I 为上下文回答 Q 时输出 R;附录 E、K 给出了完整提示词。
- 生成后以 I 为上下文验证 LLM 是否输出 R,不成功则重试,最多 L=50 次;I 长度由超参数 V=30(词)指定。作者报告平均约 2–3 次查询即可成功。
生成 S(检索条件)
- Black-box:攻击者不能访问或查询 retriever。作者的关键观察是 Q 与自身最相似且不影响 I,故直接令 S = Q,即 P = Q ⊕ I。作者称该策略简单但有效,可作为后续研究的基线。
- White-box:攻击者可访问 retriever 参数,以 Q 初始化 S,用梯度方法优化 S = argmaxS′ Sim(fQ(Q), fT(S′ ⊕ I)),即最大化 S⊕I 与 Q 的嵌入相似度;实验用 HotFlip [78] 求解,也评测了 TextFooler [80]。
算法与判定
- Algorithm 1(black-box):对每个目标问题生成 N 条 I,返回 Q⊕I;Algorithm 2(white-box,附录)额外优化 S。默认 N=5。
- 成功判定用 ASR:目标问题答案为攻击者目标答案的比例;判定方式为 substring matching(目标答案是生成答案的子串),并用作者进行的人工评估验证(Table 2)。
论文做了哪些实验?
3 数据集 × 8 个 LLM,注入 5 条恶意文本,black-box ASR 最高 99%,基线均低于 70%,四种防御无效。
实验设置
- 被测 LLM:PaLM 2(默认)、GPT-3.5-Turbo、GPT-4、LLaMA-2-7B、LLaMA-2-13B、Vicuna-7B、Vicuna-13B、Vicuna-33B,temperature=0.1。
- 数据集:NQ(知识库 2,681,468 条)、HotpotQA(5,233,329 条)、MS-MARCO(8,841,823 条);默认用 NQ + Contriever,检索 top-5,点积相似度。
- 目标问题:每次试验随机选 10 个封闭式问题,重复 10 次共 100 个;目标答案由 GPT-4 随机生成并人工核对与真值不同。无攻击时默认设置下 LLM 正确率为 70%(NQ)、80%(HotpotQA)、83%(MS-MARCO)。
- 攻击配置:每题注入 N=5 条;GPT-4 生成 I(L=50,V=30);white-box 用 HotFlip 优化 S。
- 指标:ASR(substring matching,作者人工评估验证,Table 2 显示两者接近)、Precision/Recall/F1-Score、#Queries、Runtime。
- 基线:Naive Attack、Prompt Injection Attack、Corpus Poisoning Attack、GCG Attack、Disinformation Attack,均同样注入 N 条。
主结果
据 Table 1(每题注入 5 条,ASR):
表格较宽,可左右滑动
数据集 设置 PaLM 2 GPT-3.5 GPT-4 LLaMA-2-7B LLaMA-2-13B Vicuna-7B Vicuna-13B Vicuna-33B NQ Black-Box 0.97 0.92 0.97 0.97 0.95 0.88 0.95 0.91 NQ White-Box 0.97 0.99 0.99 0.96 0.95 0.96 0.96 0.94 HotpotQA Black-Box 0.99 0.98 0.93 0.98 0.98 0.94 0.97 0.96 HotpotQA White-Box 0.94 0.99 0.99 0.98 0.97 0.91 0.96 0.95 MS-MARCO Black-Box 0.91 0.89 0.92 0.96 0.91 0.89 0.92 0.89 MS-MARCO White-Box 0.90 0.93 0.91 0.92 0.74 0.91 0.93 0.90 - 作者称 PoisonedRAG 在各数据集和 LLM 上都取得高 ASR,F1-Score 几乎都在 90% 以上,说明恶意文本大多能被检索到。
- 作者称多数情况下 white-box 更有效,因为利用了 retriever 知识;少数情况 black-box 的 ASR 反而更高,作者推测 HotFlip 影响了语义、且前置目标问题本身也有助于生成条件。
- 效率(Table 3):平均 #Queries 为 1.62(NQ)、1.24(HotpotQA)、2.69(MS-MARCO);white-box 每条约 26 秒,black-box 约 1×10⁻⁶ 秒。
与基线对比
- 据 Table 4(默认设置,NQ):PoisonedRAG(Black-Box)ASR 0.97,而 Naive Attack 0.03、Corpus Poisoning 0.01、Disinformation 0.69、Prompt Injection 0.62、GCG 0.02;HotpotQA 与 MS-MARCO 上基线 ASR 也均低于 PoisonedRAG。
- 作者的解读:基线未同时满足两个条件——Naive/Corpus Poisoning/GCG 分别缺生成、生成、检索条件;Prompt Injection 因按本文思路加入了目标问题而有非平凡的 ASR;Disinformation(P=I)是 PoisonedRAG 的变体。
真实应用场景
- 高级 RAG 方案(Table 10):Self-RAG 与 CRAG 下 ASR 仍达 0.70–0.87,如 NQ 上 Self-RAG black-box 0.77、CRAG 0.78;作者称这些方案也无法抵御。
- Wikipedia ChatBot(Table 11):用 2018-12-20 英文 Wikipedia dump 建库(21,015,324 条文本),NQ 上 black-box ASR 0.95、HotpotQA 1.0、MS-MARCO 0.94。
- LLM 智能体(ReAct 框架):black-box ASR 为 0.72(NQ)、0.58(HotpotQA)、0.52(MS-MARCO),低于基本 RAG 设置。
防御评测
- Paraphrasing(Table 12):用 GPT-4 改写目标问题(每题 5 个改写版本)后 ASR 仍高,如 NQ black-box 从 0.97 降到 0.87、HotpotQA white-box 从 0.94 降到 0.86;作者称该防御不能有效防御。
- Perplexity 检测(Figure 6,NQ):ROC AUC 为 0.25(black-box)和 0.30(white-box);作者称恶意文本困惑度与干净文本无统计差异,原因是 I 由 GPT-4 生成、质量正常。
- 重复文本过滤(Table 13):SHA-256 去重后 ASR 完全不变;作者称 GPT-4 生成的每条 I 都不同。
- 知识扩展(第 7.4 节):增大 k 至 50 仍不能完全防御,HotpotQA 上 ASR 仍有 41%(black-box)、43%(white-box);且 N 增大时 ASR 回升,作者称该防御还带来长上下文计算开销。
其他消融与分析
- 检索器(Table 5):Contriever、Contriever-ms、ANCE 下 ASR 相近,如 NQ black-box 分别为 0.97、0.96、0.95。
- k 的影响(Figure 3):k≤N 时 ASR 高,k>N 时 ASR 随 k 增大而下降。
- N 的影响(Figure 4):N≤k 时 ASR 随 N 增大而上升,N>k 后稳定。
- L 的影响(Figure 5):L=1 时 ASR 已较高,L≥10 后饱和。
- 拼接顺序(Table 7):I⊕S 与 S⊕I 效果接近,如 NQ black-box 0.96 vs 0.97。
- 生成 I 的 LLM(Table 9):换用较弱 LLM 加 in-context learning 仍有效,如 NQ black-box 在 PaLM 2 上 0.99、LLaMA-2-7B 上 0.92。
- 组件拆解(Table 15):只用 S 时 ASR 0.02–0.08,只用 I 时 0.47–1.0,均低于 S⊕I;Table 17 显示 top-5 中恶意文本从 1 条增至 5 条时 ASR 从 0.48 升至 1.00(NQ black-box)。
- 非目标问题影响(第 8 节):1000 个非目标问题中,被检索到恶意文本的比例为 0.3%(black-box)、0.9%(white-box),答案受影响比例为 0% 和 0.4%。
- 失败案例(附录 I):作者给出两类失败原因——top-k 中混有干净文本;恶意文本本身含正确答案(parametric bias),LLM 仍输出正确答案。
有什么可以进一步探索的点?
作者列出联合多目标问题、新优化攻击与新防御等方向;实验限于封闭式问答与作者自评。
作者指出的局限与后续方向
- 独立构造文本可能次优(第 8 节):恶意文本对每个目标问题独立生成,作者认为联合考虑多个目标问题可能更有效,留作 future work。
- 开放式问题未解决(第 5.1 节):实验选封闭式问题以便定量评估,开放式问题被明确推迟到第 8 节讨论,但未给出评测。
- 失败案例改进(附录 I):恶意文本有时包含正确答案导致攻击失败,作者认为构造不含正确答案的恶意文本是有趣的 future work。
- 评估指标(第 5.2 节、附录 J):作者称开发完美的文本比较指标仍是开放挑战,substring matching 与人工评估存在少量不一致。
- 未来方向(第 9 节):开发新的基于优化的攻击(如扩展 GCG 优化 I)、联合多目标问题构造文本、开发针对 PoisonedRAG 的新防御。
实验覆盖范围
- 被测 LLM 共 8 个:PaLM 2、GPT-3.5-Turbo、GPT-4、LLaMA-2-7B/13B、Vicuna-7B/13B/33B;检索器 3 个:Contriever、Contriever-ms、ANCE。
- 数据集为 NQ、HotpotQA、MS-MARCO 三个问答基准,另在 FEVER 上做事实验证扩展(100 个目标 claim);目标问题每试验 10 个、重复 10 次共 100 个。
- 防御评测覆盖 paraphrasing、perplexity 检测、重复文本过滤、知识扩展四种;作者指出针对训练数据投毒的防御 [97–102] 大多不适用于本场景,未评测。
- ASR 判定以 substring matching 为主,人工评估由作者自己完成,仅在 NQ 的 5 个 LLM 上对比(Table 2);论文未报告人工评估的标注者人数或一致性指标。
- 攻击方生成 I 默认用 GPT-4;white-box 优化 S 用 HotFlip 和 TextFooler;GCG 基线用 Vicuna-7B 作 surrogate LLM(附录 D)。
总结一下论文的主要内容
PoisonedRAG 向 RAG 知识库注入少量恶意文本,黑盒下 5 条即达 90% 以上 ASR,现有防御无效。
一篇针对检索增强生成(RAG)的知识腐化攻击论文。作者称 RAG 的知识数据库是新的实用攻击面:攻击者注入少量恶意文本,即可让 LLM 对攻击者选定的问题输出选定的答案。
- 问题:RAG 依赖外部知识库,若知识库来自 Wikipedia 或互联网,攻击者可注入文本散布虚假信息;作者称此前 RAG 安全性 largely unexplored。
- 方法:作者把攻击形式化为优化问题,推导出检索条件与生成条件两个必要条件;恶意文本 P=S⊕I,I 由 GPT-4 生成以诱导目标答案,black-box 下 S 直接取目标问题,white-box 下用 HotFlip 优化 S 最大化与问题的嵌入相似度。威胁模型中攻击者不能访问知识库文本和 LLM,black-box 下也不能访问或查询 retriever。
- 主结果:在 NQ、HotpotQA、MS-MARCO 和 8 个 LLM 上,每题注入 5 条恶意文本,black-box ASR 为 0.88–0.99(Table 1),如 NQ 上 PaLM 2 为 0.97;NQ 上 5 个基线 ASR 均低于 0.70(Table 4)。
- 真实场景:Self-RAG、CRAG 下 ASR 仍达 0.70–0.87(Table 10);2100 万条文本的 Wikipedia ChatBot 上 ASR 0.94–1.0(Table 11);ReAct 智能体上 0.52–0.72。
- 防御:paraphrasing、perplexity 检测(AUC 0.25/0.30)、重复文本过滤、知识扩展(k=50 时 HotpotQA 上 ASR 仍 41%/43%)均不能有效防御,作者称需要新防御。
- 结论与启示:作者认为 RAG 对该攻击缺乏抵抗力,恶意文本对非目标问题影响很小(答案受影响比例 0%/0.4%);未来方向包括联合多目标问题构造文本、基于优化的新攻击和新防御。