SilentRetrieval:能绕过困惑度过滤的流畅 RAG 语料投毒
2026 年 5 月 27 日 arXiv 预印本提出一种两阶段攻击,将劫持触发器隐藏在流畅文档中,在 Natural Questions 和 MS MARCO 上以每查询一份投毒文档实现 57% 的 LLM 攻击成功率。
这是什么?
2026 年 5 月 27 日,一篇题为 SilentRetrieval: Hijacking Retrieval-Augmented Generation via Semantically-Preserving Adversarial Data Poisoning 的预印本 (arXiv 2605.28074) 提出了一种语料投毒攻击,它能够同时绕过生产环境 RAG 团队最常依赖的两道过滤:检索打分和基于困惑度的异常检测。投毒文档读起来像普通文本,自然地融入语料库,只有在被检索到时才会引导模型生成攻击者选择的答案。
该论文延续了 2024 年 PoisonedRAG 开启、2025 年由若干实战和黑盒变体延展的工作脉络。新的要素是流畅性:此前的攻击往往会留下可被防御者通过统计过滤发现的困惑度指纹。SilentRetrieval 明确地对可检索性和语言模型似然度进行联合优化,这使其超越了又一篇语料投毒论文。
工作原理
攻击分为两个阶段。
第一阶段 —— Coordinated Beam Search (CBS)。 与逐 token 改写宿主文档以匹配检索相似度目标不同,CBS 在多 token 联合搜索的空间中,同时优化两个目标:与目标查询的语义相似度,以及在参考语言模型下的低困惑度。最终得到的宿主文档既保留对目标查询的可检索性,又读起来自然。
第二阶段 —— Context-Adaptive Trigger Generation (CATG)。 然后使用一个冻结的 LLM 将一个小的”触发器”——攻击者希望被遵循的操控指令——融入这段流畅文本中。CATG 会根据周围上下文调整触发器的措辞,使融合后的文档不会出现简单注入常见的指令式断裂。
可以这样理解整套设计:
# 防御方通常信任的两道过滤 —— SilentRetrieval 对各自做了什么
检索过滤
"丢弃与近期查询相似度可疑的文档。"
→ CBS 让投毒文档保留在目标查询的 top-k 中,
但不至于被优化成显眼的离群点。
困惑度过滤
"丢弃表层文本统计上异常的文档。"
→ CBS 受约束以保持困惑度接近语料库基线;
CATG 将触发器融入文档,使拼接缝隙不可见。
论文报告的数据,在 Natural Questions 和 MS MARCO 上以每查询一份投毒文档的设置下:top-10 命中率 84.6% / 81.3%,LLM 攻击成功率 57.5% / 54.8%,同时困惑度接近良性基线。攻击者每个目标查询只需植入一份流畅文档即可。
为什么重要
三个性质把这项结果与一般的语料投毒标题区别开。
第一是威胁模型。SilentRetrieval 既不假设可以访问检索器权重,也不假设可以访问回答模型。攻击者只需要能够向语料库中写入内容——而在真实部署里,这包括 RAG 自动摄入的任何来源:维基、工单系统、公开爬虫、第三方文档、用户上传文件、供应商知识库。每一条写入路径如今都带有不容忽视的完整性风险。
第二是防御盲区。许多生产 RAG 堆栈依赖于 (a) 来源白名单、(b) 基于相似度的检索打分以及 (c) 对检索片段使用困惑度或”看起来像注入”的分类器的组合。SilentRetrieval 的设计就是为了同时绕过 (b) 和 (c)。白名单 ((a)) 只有在每一条摄入路径都被精挑细选时才有效,而一旦系统接触用户上传或网络数据,这个前提通常都不成立。
第三是经济视角。每个目标查询只需要一份投毒文档,就能在标准基准上把攻击成功率提升到 50% 以上。这是一笔小、可重复、低噪声的写入——正是那种在普通内容贡献中难以被注意到的修改。
该攻击直接落在 OWASP LLM04:2025 — Data and Model Poisoning 范围内,并与 LLM08:2025(向量与嵌入弱点)有重叠。它是一项研究结果,而非针对某个具名产品的 0-day,但它使得”RAG 语料库的拥有者究竟能信任自己索引中的什么”这个问题变得更尖锐。
防御措施
没有单一控制能彻底消除这一类攻击。截至 2026 年 5 月,可靠的清单是:
- 将 RAG 语料库视为写入边界,而不仅是读取边界。 对每一条摄入路径进行认证和日志记录,为条目打上
source、ingested_by、ingested_at标签。生产环境最常见的失败,是”语料库”实际上是十几条无人负责的写入路径的并集。 - 基于来源而非仅相似度对检索打分。 来自低信任来源的高相似度命中,应当被降权或在进入生成器上下文之前送审。
- 在回答阶段防御,而不仅在检索阶段。 像 Traceback of Poisoning Attacks to RAG(2025 年 4 月,2026 年仍在更新)这样的工作可以把生成的回答追溯到具体被检索到的文档:可疑回答能定位将其引导出来的源——对事件响应和持续清洗语料库都有用。
- 降低单一文档的杠杆。 在生成器把某个事实当作既定结论之前,要求至少两份来自独立来源桶的检索文档相互印证。SilentRetrieval 的数据基于每查询一份投毒文档:把门槛提高到两份独立来源,攻击者成本大致按平方上升。
- 关注与查询相关的异常。 一份文档在某个异常具体或敏感的查询下出现在 top-k 中,特别是当它一周前并不会是该查询的自然答案时,值得被标记——即使其表层文本干净。
- 限制下游影响范围。 触发工具调用或用户可见动作的生成回答,不应继承语料库的全部信任。限制 agent 滥用的那些按工具 ACL 和人工确认,同样能限制 RAG 滥用。
状态
| 项目 | 参考 | 日期 | 说明 |
|---|---|---|---|
| SilentRetrieval 论文 | arXiv 2605.28074 | 2026-05-27 | 在 NQ / MS MARCO 上 HR@10 84.6%/81.3%,ASR-LLM 57.5%/54.8% |
| PoisonedRAG(前作) | arXiv 2402.07867 | 2024-02 | 首篇被广泛引用的 RAG 语料投毒工作 |
| Traceback 防御 | arXiv 2504.21668 | 2025-04 | 将生成回答归因到被检索文档 |
| 类别 | OWASP LLM Top 10 (2025) | 2025 | LLM04 数据与模型投毒 + LLM08 向量与嵌入弱点 |
该论文是研究成果,而不是针对某个具名供应商的已披露漏洞利用。其操作含义并不依赖于某一具体技术栈:任何接受来自其不掌控渠道内容的 RAG 流水线,都已经新增了一块仅靠困惑度过滤无法覆盖的完整性面。