论文链接:CamoDocs: A Poisoning Attack Against Retrieval-Augmented Language Models Using Camouflaged Documents 代码仓库:jaewonalive/CamoDocs 发表时间:2026年8月 机构:Seoul National University(Jung、Jang、Song、Lee)+ Carnegie Mellon University(Zheng、Chen),跨国高校合作,无企业参与 领域标签:cs.CR,RAG安全 / 知识库投毒 / 对抗攻击

一、论文背景

1.1 RAG打开了LLM的攻击面

检索增强生成(RAG)让LLM能访问参数截止日期之后的外部知识,并通过把生成锚定在检索证据上来减少幻觉。但RAG的知识库通常来自网页爬取或第三方可编辑来源,攻击者可以向这些来源注入恶意文档,把受害LLM的输出引导到目标错误答案。这在医疗、法律等高风险应用中是现实威胁。

1.2 现有投毒攻击的共同软肋:查询包含

要解释CamoDocs的动机,先要看清现有攻击的工作方式。RAG的检索依赖嵌入相似度:文档与查询的嵌入越近,越可能被检索进top-k。PoisonedRAG、PIA、CorruptRAG等攻击为了提升投毒文档的检索命中率,普遍采用查询包含(query inclusion)——把目标查询的文本直接写进投毒文档。

这个做法带来两个可被防御利用的伪影:

  • 词法伪影:良性文档几乎不会完整包含用户查询原文(同一信息需求有无数种问法),所以『文档与查询高度重叠』本身就是异常信号——一个简单的字符级最长公共子序列检测(阈值0.8)就能过滤;
  • 几何伪影:包含查询的投毒文档会在嵌入空间紧贴查询嵌入、彼此聚成紧簇。TrustRAG这类聚类防御正是利用这一点:对检索文档做K-means聚类,删除凝聚度过高的簇,并剔除与模型内部知识冲突的文档。

1.3 攻防失衡的现状

于是出现一个系统性问题:现有防御的有效性建立在攻击的偷懒之上。攻击者为了检索命中而包含查询,防御就围着这个伪影设计。如果攻击放弃查询包含,这些防御还剩下什么?这正是本文要回答的问题——构造一个不依赖查询包含的隐蔽投毒攻击,检验现有防御体系的真实边界。

二、论文定位和关联工作

2.1 RAG投毒攻击谱系

攻击核心机制检索提升手段隐蔽性短板
PIA(间接提示注入)在文档中写显式操纵指令指令中包含查询指令痕迹被LLM过滤器拒绝;短模板嵌入易被孤立森林识别
PoisonedRAG优化文本嵌入贴近查询直接把查询写进文档查询检测下ASR<12%;紧簇被TrustRAG删除
CorruptRAG短模板宣称『更新信息』模板包含查询同上;β增大后反而更易聚簇
CamoDocs(本文)良性+对抗内容伪装放弃查询包含,靠语义相关性+弥散嵌入全防御下唯一全面有效

2.2 RAG防御谱系

论文评测了7种防御:查询检测(本文提出)、Divide-and-Vote(逐文档独立问答后投票)、RobustRAG(安全关键词聚合)、孤立森林(无监督异常检测)、LLM过滤器(gpt-oss-safeguard-20b逐文档审查)、交叉编码器重排(bge-reranker-v2-m3)、TrustRAG(K-means聚类+知识一致性检查,最强也最重擦除)。附录还补了DBSCAN密度聚类变体、查询改写与困惑度过滤两种启发式防御。

2.3 定位结论

本文在攻防对抗中站在『适应性攻击者』一侧:不发明新防御,而是用严格自适应的攻击暴露防御体系对查询包含伪影的系统性依赖。其更持久的贡献是双向的——既证明隐蔽投毒可行,也用NeoQA揭示重擦除防御的实用性代价,为『保留证据的检测式防御』提出明确需求。

三、问题定义

3.1 威胁模型

黑盒设定:受害LLM参数与嵌入模型参数对攻击者不可见(对应闭源系统)。攻击者唯一的能力是向知识库注入恶意文档(适用于公开可编辑、网页爬取来源)。目标:使RAG系统对特定目标查询生成预定义的错误答案 a*i。

3.2 核心抽象:隐蔽性与检索命中的对偶

具体问题:如何让投毒文档既被检索到(高相关性)又不被过滤(像良性文档)?

核心洞察:论文观察到聚类防御的几何前提是『投毒文档紧聚成簇』,而这个前提可以用嵌入分布的主动弥散来瓦解——不是让投毒文档藏起来,而是让它们散得像背景噪声。同时,检索命中不必靠查询包含,可以靠语义相关的良性内容提供与查询的真实关联。由此形成一个精妙的结构:

对抗伪装概念生物学类比CamoDocs对应物
保护色融入背景良性内容提供正常语义
破坏轮廓让轮廓无法识别弥散token打散嵌入簇
行为拟态举止像无害物种连贯性过滤维持可读性

3.3 形式化

给定目标查询 qi、正确答案 ai、目标错误答案 ai,构造 β 个投毒文档 Di_adv,满足两个约束:(a) 内含诱导 ai 的内容;(b) 嵌入分布无法用聚类类几何检验与良性文档区分。附录D还证明了检索-弥散权衡定理:投毒文档嵌入的弥散度(到质心的均方距离)以接近度为上界,当且仅当质心与查询嵌入重合时取等——即攻击者把文档中心拉向查询的同时最多获得相应的内部弥散,这解释了为什么不能既要紧贴查询又要无限弥散。

四、问题解法

CamoDocs流水线分三步(算法1)。

4.1 第一步:配料准备

合成器LLM(gpt-4o-mini)对每个目标查询生成两组草稿:

  • 良性草稿:只给 qi,生成围绕查询主题的正常文本(不含答案);
  • 对抗草稿:给 (qi, ai)(NeoQA还给 a*i),先发明错误答案再生成支撑语料。

每组草稿均匀切成 γ=2 块子文档,选出并配对 β=10 个良性-对抗块对。切块的作用是削弱文档级线索——如果不切块,最终投毒文档会彼此更相似,重新形成聚类目标。注意:对抗块原样保留(保住诱导目标答案的关键token),所有优化只发生在良性块上。

4.2 第二步:token操纵(核心创新)

弥散优化。攻击者用一个代理编码器 Esurr(ANCE BERT,与受害检索器Contriever不同——这就是黑盒迁移的体现),定义弥散损失:

L = (1/β) Σ‖e_{qi,j} − c_i‖

即 β 个良性子文档嵌入到其质心 c_i 的平均距离。最大化 L 就是把这一簇嵌入推散。

梯度引导的一阶得分。token空间是离散的,枚举词表做精确损失评估代价是 |Vsurr| 次前向。借鉴HotFlip的一阶泰勒展开:替换token t 为 t* 引起的损失变化 ≈ ∇{e_t}L · e{t*}(与t相关的常数项在argmax中消掉),一次反向传播的梯度与整个嵌入矩阵做矩阵乘即可给全词表打分,取top-m=1000候选。

连贯性过滤。纯梯度优化会挑出稀有、不合上下文的token(想想『aEnhancedmentionedKnowing』这种乱码),容易被网页数据质量过滤或数据集策展流水线标记。解决:用冻结的轻量语言模型(GPT-2)计算每个候选替换后整篇子文档的困惑度,留下 m′=100 个最低困惑度候选,再在其中做精确弥散损失评估选最终token。

每个良性子文档做 α=30 次替换,所有更新共享同一个基于全 β 嵌入质心的弥散损失(顺序更新、原地修改)。

4.3 第三步:合并

每个优化后的良性子文档与其配对的对抗子文档直接文本拼接:d_merged = d_bn ⊕ d_adv。最终每个目标查询产出 β=10 个投毒文档。

4.4 流水线全景

阶段输入操作输出作用
配料准备目标查询+答案LLM合成双草稿+切块良性/对抗子文档对提供语义多样性与攻击载荷
token操纵良性子文档梯度选token→困惑度过滤→精确损失挑选弥散化的良性块瓦解聚类特征
合并优化良性块+对抗块拼接最终投毒文档兼顾命中与隐蔽

计算成本:单文档约3.22分钟(RTX A6000),每查询10文档约32.2分钟,全部离线发生,不增加受害系统在线延迟。

五、评估指标与实验证据

5.1 指标体系

  • 主指标ASR(攻击成功率):受害模型输出与目标错误答案语义一致的比例。gpt-4.1-mini做评审,经人类标注验证(3人多数票,平均一致率93.29%,Phi相关0.84,p<0.001)。
  • 辅指标ACC(干净准确率):无攻击时防御是否伤害正常功能。
  • 消融指标:各组件增量ASR;嵌入几何统计(内部距离、与良性文档的成对距离);可读性(GPT-2 PPL)。
  • 实用性指标(针对防御):Erase%(擦除的检索文档比例)与无攻击干净准确率的联合考察。

数据集:HotpotQA(523万文档)、NQ、MS-MARCO;NeoQA(虚构实体、加密发布、强制检索依赖)专用于防御实用性分析。每数据集10次试验×100查询=1000查询,注入β=10文档/查询,实际投毒率仅0.011-0.037%。

5.2 核心数据

现有攻击在简单查询检测下全线崩溃(表1):PoisonedRAG/PIA/CorruptRAG在所有数据集×模型上ASR均<12%(多数<11%)。而CamoDocs在查询检测下仍达:HotpotQA+Qwen3 77.2%、HotpotQA+Llama 75.2%、HotpotQA+Mixtral 78.0%。查询检测对干净准确率影响可忽略(HotpotQA/NQ几乎无损,MS-MARCO降约2.5-3.3pp)。

七防御平均ASR(HotpotQA+Llama,表1):

攻击平均ASR最差防御下ASR
PoisonedRAG43.877.60
PIA31.745.40
CorruptRAG44.445.50
CamoDocs60.8129.10

CamoDocs的平均值不是最高(PoisonedRAG/CorruptRAG在无查询检测的防御下通过过度优化检索偶尔更高),但最小值说明它是唯一在全部7种防御下都保持有效(≥29.1%)的攻击——其他攻击的最差情形都跌到个位数。消融表4给出组件贡献:仅对抗文档8.70% → +良性文档10.40% → +切块11.50% → +弥散损失28.70%(+17.2pp,关键机制)→ +连贯性过滤29.10%(+0.4pp,主要贡献是可读性)。

改写查询的强化基线(表7):把基线攻击升级为包含查询改写、并把词法检测换成Qwen3-4B的LLM查询检测器后,基线平均ASR 30.33-43.96%、最小6.30-8.20%,CamoDocs仍以60.49%平均/29.10%最小全面领先——不含查询或其改写是结构性优势。

闭源模型(表2):GPT-5.4-mini平均ASR 61.80%、Claude-Haiku-4.5为55.09%——强闭源模型在其参数知识很可能覆盖的旧基准上依然失守。

TrustRAG的实用性代价(表3):在强制检索依赖的NeoQA上,TrustRAG无攻击时就删除91.48%检索文档,干净准确率从29.13%(干净RAG)跌到5.79%(接近无检索的地板3.28%);HotpotQA上只删12.78%、准确率49.10%→43.70%,差距源于HotpotQA有37.20%的无检索准确率(参数记忆兜底)。阈值全扫(0.10-0.99)无法救回:最宽松阈值下仍删63.87%、准确率仅12.62%。旧基准靠参数记忆掩盖了防御的真实代价。

嵌入几何验证(图3):t-SNE显示PoisonedRAG紧簇、PIA/CorruptRAG贴着查询嵌入,CamoDocs分散且与良性文档距离最小;KDE分布显示CamoDocs内部散布最大。随机替换消融:同等预算下随机token的成对余弦距离0.1005 vs 梯度引导0.1591、ASR 16.30% vs 29.10%——弥散损失而非任意扰动是关键。

可读性(表5):连贯性过滤把投毒文档平均GPT-2 PPL从738.6降到401.3(约-46%)。

检索器敏感性(表6):ANCE代理优化的token迁移到Contriever(60.81%)、Qwen3-emb-0.6B(51.24%)、text-embedding-ada-002(41.04%)均有效;闭源嵌入最稳健但TrustRAG下仍有20.90%。

DBSCAN密度聚类变体(附录F,表12):CamoDocs把嵌入散得像背景噪声——小ϵ时全部文档被判噪声(噪声率100%)、无簇可过滤;大ϵ时簇内余弦相似度只有0.43-0.06,远低于TrustRAG默认凝聚阈值0.88。ASR 37.00-39.30%,反而高于对K-means的29.10%。

预算匹配公平性(表9):把PIA/CorruptRAG的注入量提到β=10并不能救它们——额外文档仍含查询,且嵌入更聚簇(CorruptRAG对TrustRAG从30.00%跌到8.30%)。

β敏感性(附录J,表14):β=10到20时ASR从29.10缓降到24.00,β=25时跌到19.00且防御后残留投毒文档比例骤降到48.08%——注入太多文档会重新形成可检出的稠密簇,说明弥散与数量存在内在约束。

5.3 实验设计如何支撑主张

  • 『现有攻击可防御』由表1的查询检测列直接支撑(全<12%),且表10证明该防御近乎无损;
  • 『CamoDocs隐蔽且有效』由平均+最小ASR双重指标支撑——最小值才是隐蔽性主张的真正证据;
  • 『弥散是关键机制』由消融(+17.2pp)、几何可视化、随机替换对照三方互证;
  • 『重擦除防御不实用』由NeoQA的Erase%与ACC联合度量、阈值全扫、以及HotpotQA参数记忆对照(37.20%无检索准确率)共同锁定因果。

六、效果优势的根源解释

6.1 为什么CamoDocs能穿透全部防御

baseline的根本局限:查询包含式攻击把『检索命中』外包给一个词法捷径,这决定了投毒文档的嵌入被查询文本主导,必然紧贴查询、彼此聚簇。防御只要找到这个几何签名就赢——这不是防御太强,而是攻击太依赖伪影。

本文的根本性改变:CamoDocs把『检索命中』的来源从查询文本重叠换成真实语义相关(良性内容本来就围绕查询主题写),把『防过滤』的手段从躲避检测换成主动破坏检测前提。因果链:

  1. 聚类防御(TrustRAG-K-means、DBSCAN)的检测统计量建立在『投毒文档彼此紧聚』之上;
  2. 弥散token在代理编码器空间把 β 个嵌入到质心的平均距离最大化,一阶梯度得分让每步替换都朝散开方向走;
  3. 代理到受害检索器的迁移保证了弥散在受害嵌入空间同样成立(表6三个检索器均有效);
  4. 检测统计量失效:K-means分出的簇凝聚度低于阈值、DBSCAN把绝大多数文档判为噪声;
  5. 体现在指标上:最差防御下ASR仍有29.10%(K-means)/37-39%(DBSCAN),而基线跌到个位数。

为什么合并结构有效:对抗块保证语义载荷(诱导目标答案的关键token不被优化破坏),良性块提供伪装与相关性——两个功能解耦到文档的不同部分,弥散优化可以放心地在良性块上大改而不伤攻击效果。这是标准的关注点分离设计。

反事实验证:去掉弥散损失(消融第4行)ASR从28.70%跌回11.50%;换成随机替换跌到16.30%;β升到25重新聚簇跌到19.00%——三条反事实都指向同一结论:嵌入几何(而非文本内容)是聚类防御攻防的主战场。

6.2 为什么TrustRAG的防御是有毒的礼物

TrustRAG的机制是删除低信任文档(簇删除+与模型内部知识冲突检查)。在参数知识可兜底的旧基准上它显得物美价廉(HotpotQA只删12.78%);但在真正依赖检索的NeoQA上,虚构实体使模型内部知识无法作为一致性锚点,TrustRAG的保守性变成大规模误删(91.48%),干净准确率崩到5.79%。这揭示了一个评估方法论问题:用被参数记忆污染的旧基准评估防御会系统性低估防御的实用性代价。CamoDocs在NeoQA+TrustRAG下仍有23.25% ASR且干净准确率只剩9.08%——防御方花掉几乎全部效用也没买到安全。

七、必要知识反推

完成这项工作最少必须掌握:

7.1 领域知识层

  • RAG流水线细节:稠密检索器的嵌入相似度机制、top-k选择、文档拼接生成——不知道检索命中靠什么就无法理解查询包含为何成为捷径;
  • 现有投毒攻击的精确机制:必须逐一复现PoisonedRAG/PIA/CorruptRAG才能发现它们的共同伪影,这是整个研究的起点;
  • 防御侧全景:七种防御的检测统计量各是什么(词法重叠、簇凝聚度、异常分数、安全审查、交叉编码器相关性)——攻击要逐一瓦解的就是这些统计量。

7.2 方法论知识层

  • 离散token优化:HotFlip式一阶泰勒展开 ∇L·e_t*、梯度与嵌入矩阵的矩阵乘加速——弥散token选择的核心工具;
  • 对比嵌入几何:质心、类内距离、K-means/DBSCAN的失效条件——把『隐蔽』翻译成可优化的几何目标;
  • 代理迁移假设:攻击在ANCE上优化、在Contriever/Qwen3-emb/ada-002上生效,背后是稠密检索器嵌入空间的部分对齐这一经验事实;
  • LLM-as-judge与人类验证:评审协议设计+Phi相关/一致率验证,保证ASR数字可信。

7.3 工程知识层

  • 困惑度过滤的工程权衡:用GPT-2这类轻量模型才让每步1000候选的过滤在计算上可行;
  • 成本控制:全部计算离线一次完成(每查询约32分钟)、在线零开销的论证;
  • 基准选择的方法论意识:NeoQA的虚构化+加密发布设计正是为了测出被旧基准掩盖的防御代价。

7.4 知识融合的关键节点

  • 节点1:把『隐蔽性』从模糊的安全概念翻译为『嵌入分布的弥散度』这一可优化损失——伪装艺术的几何化;
  • 节点2:良性/对抗分块+只优化良性块的结构——让弥散优化与攻击载荷互不干扰,两个目标函数在文档级别解耦;
  • 节点3:梯度候选(散得远)与困惑度过滤(读得通)的两级漏斗——在离散优化中同时满足几何目标与语言学约束,这与视觉对抗样本的可感知性约束同构。

八、论文中可以提取的通用性灵感

8.1 机制类:攻击检测统计量本身,而非绕过检测

核心思想:当防御依赖某个统计签名(紧簇、词法重叠)时,最强的对抗不是躲避这个签名,而是主动把签名本身破坏掉,让检测统计量在原理上失效。 论文证据:弥散token让DBSCAN要么全判噪声要么簇内相似度低至0.06,远低于0.88阈值——不是『没被认出』而是『无可认出之物』;+17.2pp消融贡献证明这是核心机制。 推广场景:欺诈检测中让异常交易模拟正常消费分布;垃圾邮件绕过贝叶斯过滤的词频中性化;网络流量伪装成正常协议模式;生物取证中的痕迹消除。

8.2 信号利用类:词法捷径是攻击者的自留把柄

核心思想:任何为了提升系统命中而引入的捷径(如查询包含)都会留下可检测伪影;识别这些捷径就能用极简防御击溃依赖它们的攻击。 论文证据:字符级LCS相似度阈值0.8的简单检测把三大现有攻击全部压到12%以下,且干净准确率几乎无损。 推广场景:SEO作弊的关键词堆砌检测;论文造假的可疑引文网络;简历筛选中的关键词匹配作弊;渗透测试中识别自动化工具的默认指纹。

8.3 关注点分离类:载荷与载体分块解耦

核心思想:把『执行攻击功能的部分』与『承受伪装改造的部分』物理分离到不同组件,可以让伪装优化不损伤攻击效果。 论文证据:对抗块原样保留(保载荷)、弥散优化全部落在良性块(做伪装),合并后两者兼得。 推广场景:药物设计中的载体/活性基团分离;隐写术的内容层/载体层分离;对抗样本的语义区域与纹理区域分治;产品设计中功能件与装饰件的解耦。

8.4 约束优化类:用两级漏斗平衡不可兼得的目标

核心思想:当优化目标(弥散)与自然性约束(连贯)冲突时,先按目标生成宽候选池,再按约束过滤,最后在幸存者中做精确目标评估——比单目标加权更可控。 论文证据:梯度top-1000 → GPT-2困惑度留100 → 精确弥散损失选1;PPL降低46%而ASR几乎不损(+0.4pp)。 推广场景:代码生成的语法约束解码;分子生成的有效性过滤采样;文本对抗攻击的语义约束;推荐系统的多样性重排。

8.5 评测方法论类:用『检索依赖基准』测防御的真实代价

核心思想:评估防御时必须用无法被参数记忆兜底的基准,否则防御以删除证据换安全的代价会被内部知识掩盖,得出虚假的性价比。 论文证据:HotpotQA上TrustRAG只损失5.4pp准确率看似可接受,NeoQA上同样的防御删91.48%文档、准确率崩到5.79%;HotpotQA的无检索准确率高达37.20%是掩盖根源。 推广场景:缓存系统在冷启动负载下的真实收益评估;降噪模型在高噪声数据的实测;幻觉检测器在模型知识边界外问题的测试;自动驾驶冗余系统在传感器全失效场景的验证。

8.6 权衡定理类:检索-弥散不等式刻画攻防上界

核心思想:把攻击的多目标张力形式化为可证明的不等式(弥散≤接近度,等号当且仅当质心与查询重合),能提前知道参数空间的天花板。 论文证据:定理1解释了为什么β=25时攻击退化——文档数量增加迫使质心结构暴露;质心对齐查询的代价是可弥散余量的上限。 推广场景:隐私-效用权衡的形式化界;鲁棒性-精度的Pareto前沿刻画;投资组合分散与跟踪误差的上界;通信系统中速率-可靠性约束。


一句话总结:CamoDocs证明了现有RAG投毒防御的战绩很大程度是攻击者留下的查询包含伪影送的——一旦攻击者学会在嵌入空间里把毒散成噪声,防御要么失效、要么用删除91%检索证据的自残式代价换取残缺的安全。