RAG 攻击不只攻 corpus,retrieval 链路本身(检索 / rerank / embedding)也是新攻击面。上一篇 RAG 知识库投毒实战攻的是”知识层”(corpus 污染)。本文攻”检索层” —— 即使 corpus 干净,retrieval 链路被污染也会输出错误答案。本篇是 piick.cc LLM 安全系列的”第七维度专篇”,与 batch-33 corpus 投毒完美互补,合起来覆盖 RAG 完整攻击面。
CAREATTACK (arxiv 2606.18310, 2026-06-16) 实证了”model-centric retriever editing”:不碰 corpus,直接 edit retriever 模型本身就能篡改 retrieval 结果。arxiv 2605.28017 v2 实证 reranker 阶段lift attack success +16.5%(rerank 反而放大攻击)。arxiv 2602.08668 v3 实证 Hybrid RAG RPR=0.95(334/350 benign query 触发跨租户泄露)。retrieval-time 攻击比 corpus 攻击更难检测 — corpus 扫描无效,需要模型级 / 行为级检测。
30 秒总览
- RAG retrieval 链路是新攻击面 — 2026 H2 5 篇独立研究(ACL 2026 EACL TPARAG + arxiv CAREATTACK + arxiv GEO survival v2 + arxiv FlippedRAG v7 + arxiv RPR v3)集中在 3-8 月爆发
- 8 种 retrieval-time 攻击(按 retrieval pipeline:query → embedding → retriever → reranker → top-K):reranking 操纵 / Model-centric retriever editing / Token-level precise attack / Imperceptible perturbation / Opinion manipulation / Hybrid RAG pivot / Reranker backdoor / Embedding backdoor
- 5 个 2026 真实事故 / 论文:CAREATTACK model-centric retriever editing(无需 corpus 注入)、TPARAG ACL 2026 EACL token-level 白盒+黑盒、GEO attack 真实 3 阶段 RAG reranker lift +16.5%、FlippedRAG v7 黑盒舆论操纵、Hybrid RAG RPR=0.95 跨租户泄露
- 7 天防御落地计划(每个 ≤ 30 分钟可启动):retriever 签名验证 / model integrity check / sparse+dense 双路对比 / imperceptible 检测 / opinion 异常检测 / Hybrid RAG tenant 隔离 / reranker 训练数据 provenance / embedding 模型 supply chain 验证
- 用 Piick 工具集 调试 retrieval pipeline 的 token / URL / regex / 编码 payload —— 所有工具 100% 本地不上传
为什么 RAG retrieval 链路是新攻击面
要理解为什么 8 种 retrieval-time 攻击都成立,先回到 RAG retrieval pipeline:
Query → Embedding model → Vector retrieval (top-N) → Reranker (top-K) → LLM generation
传统假设:corpus 干净 → retrieval 干净 → 输出干净。batch-33 (RAG corpus 投毒) 攻 corpus;本篇攻 retrieval 链路本身,即使 corpus 干净,以下攻击都能成立:
- retriever 模型被 edit(CAREATTACK)→ 输出被改,corpus 不变
- reranker 模型被 backdoor → 恶意 doc 排名上升,corpus 不变
- embedding model 被 backdoor → 含 trigger 的 query 全部被导向恶意 doc,corpus 不变
- hybrid RAG 图扩展跨租户泄露 → 良性 query 触发跨租户,corpus 不变
- imperceptible perturbation → 微小扰动让 doc 从 top-K 外到 top-K 内,corpus 看起来”没动”
retrieval-time 攻击的核心:corpus 扫描 / provenance 验证全部失效,必须在 retrieval 行为级 / 模型级检测。
8 种 Retrieval-Time 攻击(按 retrieval pipeline:query → embedding → retriever → reranker → top-K)
攻击 1:Retriever reranking 操纵(GEO survival +16.5%)
症状:rerank 阶段反而放大 attack success;攻击者设计 adversarial edit 让恶意 doc 在 rerank 后排名上升;reranker lift +16.5% 平均。
为什么:Reranker 是 deployed RAG 流水线标准组件,通常用 LLM-based listwise ranker。攻击者设计 adversarial edit 时针对 rerank 阶段优化(不是 retrieval 阶段)。arxiv 2605.28017 v2 实证:retrieval 阶段过滤 ~20% attack documents,但 rerank 阶段 lift attack success +16.5% — rerank 反而成了攻击放大器。
最小复现(GEO survival 模式):
Step 1: 攻击者写一篇 malicious doc,query trigger phrase + adversarial answer Step 2: doc 嵌入 corpus Step 3: 用户 query 进入 → retriever top-20 命中恶意 doc(排名 18 / 20,勉强进入) Step 4: reranker(LLM-based)重新排序 → 恶意 doc 排名上升到 top-3 Step 5: LLM 生成时看到 top-3 含恶意 doc → 输出 adversarial answer Step 6: retrieval 阶段看到攻击 doc 被过滤 20%,rerank 阶段却放大了攻击
修复:
- Sparse / dense retrieval 双路对比(对应 Day 3)。sparse retrieval (BM25) + dense retrieval 双路并行;两路结果差异 > 阈值 → 报警;攻击者只能攻其中一路
- reranker 输入端加 LLM-as-judge 二次审核
- reranker 输出必须走 provenance 标签:每个 doc 带 source signature,rerank 后保留 signature
攻击 2:Model-centric retriever editing(CAREATTACK)
症状:不碰 corpus,直接 edit retriever 模型本身;attack-preserving anchor repair 避免冲突目标同时修改;比 corpus 注入更难检测(corpus 扫描无效)。
为什么:RAG 系统的 retriever 几乎都是开源模型(Contriever / DPR / BGE / ColBERT 等),GitHub 上 4,463 个 RAG 项目大量复用同一模型。攻击者编辑复用的 retriever 模型权重 → 后续所有用户部署的 retriever 都被污染。arxiv 2606.18310 实证:无需 corpus 注入,直接 fine-tune retriever 权重即可系统性提高恶意 doc 排名。
最小复现(CAREATTACK 模式):
Step 1: 攻击者 attack 复用的开源 retriever(例如 BGE-large) Step 2: conflict-aware retriever editing — 修改 retriever 参数让某 target query 命中某 target doc Step 3: attack-preserving anchor repair — 同时修改多个 target 时避免互相冲突 Step 4: 把修改后的 retriever 推到 HuggingFace / GitHub(同 original 名 typosquatting) Step 5: 4,463 个 RAG 项目在 Docker build 时自动拉到修改版 Step 6: 所有 RAG 系统被定向污染,corpus 完全不变
修复:
- Model-centric retriever integrity check(对应 Day 2)。retriever 模型版本号 + weight hash 签名(借鉴 batch-32 HMAC 思路);retriever 启动时 verify 权重完整性;weight 漂移 → 报警
- 关键 retriever 不接受 typosquatting 模型名;只从官方 mirror 拉
- retriever 输出端加 LLM-as-judge 二次审核,验证 retrieval 内容与 query 真实相关
攻击 3:Token-level precise attack(TPARAG)
症状:白盒 attacker LLM 生成 + token-level greedy search 优化恶意 passage;精确控制恶意内容在 passage 中的位置。
为什么:TPARAG (ACL 2026 EACL, 2026-03-24) 把攻击精度推到 token level — 攻击者用白盒 attacker LLM 生成初始 malicious passage,然后用 greedy search 在 token 级别优化,精确控制哪些 token 触发 embedding 落入 target region。白盒+黑盒双覆盖。
最小复现(TPARAG 模式):
Step 1: 攻击者用白盒 LLM 生成 initial malicious passage(query trigger + adversarial answer) Step 2: token-level greedy search — 每次替换一个 token,看 retrieval hit rate 变化 Step 3: 迭代优化,直到 token-level 攻击效果最强 Step 4: 优化后的 passage 嵌入 corpus Step 5: 后续 query 命中,retrieval 极精确
修复:
- Imperceptible perturbation 检测(对应 Day 4)。retrieval 输入加入 adversarial detection model;微小扰动触发 → reject;LLM-as-judge 二次审核 top-K content
- 关键 corpus passage 走 embedding distribution 检测(每篇 passage 的 embedding 落点应在 corpus 整体分布内,异常落点 → 报警)
- corpus 来源白名单(沿用 batch-33 Day 1)
攻击 4:Imperceptible adversarial perturbation(ReGENT)
症状:微小扰动让目标 doc 从 top-K 外被拉到 top-K 内;人眼看不出差异,retriever 排名大变。
为什么:ReGENT (ACL 2025) 提出 “retrieve-to-generate” attack framework;surrogate retrieval model + relevance-generation-naturalness rewards 引导扰动;目标是让原本不在 top-K 的目标 doc 被拉进 top-K。人眼完全看不出 doc 被改(微小 token 替换),但 retriever 排名大变。
最小复现(ReGENT 模式):
Step 1: 攻击者拿到目标 doc(原本排名在 top-K 外,例如 top-30 / 20) Step 2: 用 surrogate retriever + RL 训练微小扰动(可能只是 1-2 个 token 替换) Step 3: 扰动后 doc 排名跳到 top-3 Step 4: LLM 生成看到 top-3 → 输出受影响 Step 5: 用户看到正常 doc 文本(原文)、正常 LLM 输出(基于 rerank 后的 top-3)
修复:
- Imperceptible perturbation 检测(对应 Day 4)。embedding 鲁棒性检测:对 corpus doc 做小扰动 → 观察 retrieval 排名稳定性;排名大幅波动 → 报警
- 关键 corpus 走”扰动 audit”:定期对小样本 doc 做 controlled perturbation,验证 retriever 输出分布稳定
- retriever 输入签名:query + corpus 内容 hash 链 + retriever 输出 hash,事后审计
攻击 5:Black-box opinion manipulation(FlippedRAG)
症状:针对争议话题的舆论操纵;通过 surrogate model 训练 transferable trigger;无需 retriever 内部访问。
为什么:FlippedRAG (arxiv 2501.02968 v7, 2026-08) 实证 — 攻击者不需要 retriever 内部访问(黑盒),只通过 surrogate model 训练 transferable trigger,然后注入到目标 doc;trigger 在不同 retriever 间 transferable。针对争议话题(政治 / 商业 / 健康)的舆论操纵。
最小复现(FlippedRAG 模式):
Step 1: 攻击者用 surrogate retriever 训练 transferable trigger(特定 phrase 嵌入 target opinion 区域) Step 2: 攻击者把 trigger 注入多篇 existing doc Step 3: 用户 query 涉争议话题 → retriever 命中带 trigger 的 doc Step 4: LLM 输出被 trigger 影响 → 舆论偏向 attacker 立场 Step 5: retriever 黑盒,无法直接检测 trigger 模式
修复:
- Opinion manipulation 异常检测(对应 Day 5)。retrieval 结果按 query topic 分类;同 topic 高排名结果集中度异常 → 报警
- 用户反馈与 ranking 偏差大 → 复审(retrieval 结果 vs LLM 输出 vs 用户期望)
- 关键争议话题(query whitelist)走 multi-source retrieval:必须 3+ source 才信任
攻击 6:Hybrid RAG retrieval pivot(RPR=0.95)
症状:vector + graph hybrid retrieval;通过图扩展绕过 metadata prefilter;RPR=0.95(334/350 benign query 触发跨租户)。
为什么:Hybrid RAG 用 vector + knowledge graph 联邦检索。Vector DB 的 metadata prefilter 本来能防跨租户(vector-only RPR=0);但 graph extension 阶段把多个 tenant 的 entity 串到同一 sub-graph,绕过 prefilter。arxiv 2602.08668 v3 实证:1,000 docs / 2,785 graph nodes / 15,514 edges 的 multi-tenant corpus,334 / 350 benign queries 触发跨租户泄露(95.4%)。
最小复现(RPR 模式):
Step 1: multi-tenant corpus + knowledge graph(各 tenant doc + entity) Step 2: attacker 在 tenant A,query “project alpha security” Step 3: retriever 命中 tenant A chunks → graph extension 拉到 tenant B 的相关 entity Step 4: subgraph 包含 tenant B entities → LLM 看到 tenant B 数据 Step 5: 整个 query 是 attacker 的 benign query,无攻击痕迹
修复:
- Hybrid RAG tenant isolation + chunk 边界(对应 Day 6)。Hybrid RAG (vector + graph) 双层 tenant isolation;chunk 与 graph entity 强制同 tenant;跨 tenant graph edge 拒绝
- graph traversal 加 tenant prefix 强制检查
- 关键 multi-tenant 数据走 dual-source verification:同 entity 必须在 2 个 tenant 内出现才警告
攻击 7:Reranker model backdoor
症状:LLM reranker 训练数据投毒;在 reranker 模型内部植入 trigger;后续恶意 doc 排名被系统性提升。
为什么:LLM reranker(Qwen3 / GPT-4 / Claude 等用做 listwise ranker)如果走 fine-tuning,训练数据可以被投毒。Backdoor 触发:特定 trigger phrase 让 reranker 把恶意 doc 排名系统性提升。即使 retriever 排名 18,reranker 提至 top-3。
最小复现:
Step 1: 攻击者获得 reranker 训练数据访问(内部威胁 / 数据集污染) Step 2: 在训练数据中植入 trigger phrase + 恶意 doc pattern Step 3: reranker 训练后,trigger phrase 系统性提权 malicious doc Step 4: 后续所有 retriever 输出经过 reranker 时,恶意 doc 上升 Step 5: corpus 干净 + retriever 干净 → 仍被 reranker backdoor 污染
修复:
- Reranker training data provenance(对应 Day 7)。reranker 模型走 supply chain provenance 验证(类似 batch-33 corpus);pinned version + signature + SBOM
- 关键 reranker 不接受第三方 fine-tune 版本;只从官方 base model 出发
- reranker 输出端 LLM-as-judge 二次审核:验证 rerank 后 top-K 与 rerank 前 top-N 显著偏离 → 报警
攻击 8:Multi-vector embedding backdoor
症状:embedding model 训练数据投毒;特定 trigger phrase 被映射到 target 区域;后续所有含 trigger 的 query 都被导向恶意 doc。
为什么:embedding model (Contriever / BGE / OpenAI text-embedding-3 等)如果走 fine-tuning,训练数据可以被投毒。Backdoor 触发:含特定 trigger 的 query embedding 落入 target 区域 → 命中恶意 doc。
最小复现:
Step 1: 攻击者获得 embedding model 训练数据访问 Step 2: 在训练数据中植入 trigger phrase + target doc 关联 Step 3: embedding model 训练后,trigger phrase embedding 落进 target 区域 Step 4: 后续任何 query 含 trigger phrase → retrieval 命中 target doc(恶意) Step 5: 即使 corpus / retriever / reranker 全干净 → embedding backdoor 仍能污染
修复:
- Embedding model supply chain 验证(对应 Day 7)。embedding model 走 supply chain provenance;pinned version + signature + SBOM
- 关键 embedding model 不接受第三方 fine-tune;只从官方 base model 出发
- embedding 输出端加 outlier detection:query embedding 落点应在 corpus 整体分布内,异常落点 → 报警
5 个 2026 年真实事故 / 论文
案例 1:CAREATTACK model-centric retriever editing(arxiv 2606.18310, 2026-06-16)
论文摘要:model-centric retriever editing — 无需 corpus 注入,直接 edit retriever 模型本身;conflict-aware retriever editing + attack-preserving anchor repair 避免冲突目标同时修改;GitHub 上 4,463 个 RAG 项目受影响(retriever 复用)。
核心结论:retriever 攻击门槛低于 corpus 攻击(无需 knowledge 数据、不需要 content 编辑),retriever 模型供应链成为新攻击面。直接对应 Foot-Gun 2。
案例 2:TPARAG(ACL 2026 EACL, 2026-03-24)
论文摘要:Token-level Precise Attack on RAG;白盒 attacker LLM 生成恶意 passage + token-level greedy search 优化;白盒+黑盒双覆盖;14 页,ACL 2026 EACL findings 收录。
核心结论:把 RAG 攻击精度推到 token-level,优化路径不依赖 corpus 扫描。直接对应 Foot-Gun 3。
案例 3:GEO attack 真实 3 阶段 RAG 生存率(arxiv 2605.28017 v2, 2026-08)
论文摘要:retriever → reranker → generator 完整链路;reranker lift attack success +16.5%;retrieval 阶段过滤 20% attack documents,但 rerank 阶段放大攻击。
核心结论:reranker 不只是 ranking 优化,也是 attack amplification point;deployment 必须审计 rerank 前后差距。直接对应 Foot-Gun 1。
案例 4:FlippedRAG(arxiv 2501.02968 v7, 2026-08)
论文摘要:black-box opinion manipulation;针对争议话题;surrogate model 训练 transferable trigger;无需 retriever 内部访问;持续更新到 v7 仍有效。
核心结论:黑盒 RAG 也可以被攻击 — transfer-based attack 不需要 retriever 内部;舆论操纵尤其危险。直接对应 Foot-Gun 5。
案例 5:Retrieval Pivot Attacks Hybrid RAG(arxiv 2602.08668 v3, 2026-03)
论文摘要:vector + graph hybrid RAG;RPR=0.95 跨租户泄露;334 / 350 benign queries 触发;1,000 docs / 2,785 graph nodes / 15,514 edges 的 multi-tenant corpus;graph extension 绕过 metadata prefilter。
核心结论:Hybrid RAG 的图扩展是 metadata prefilter 的 bypass;multi-tenant 必须 graph-level tenant isolation。直接对应 Foot-Gun 6。
7 天防御落地计划
Day 1 — Retriever 签名验证 + query provenance(15 分钟可启动)
- 每次 retriever 调用记录 query hash + embedding hash + top-K result hash
- retrieval 结果异常漂移 → 报警
- query whitelist:可疑 query → 限流(参考 batch-32 query provenance)
- 借鉴 batch-32 HMAC 思路给每个 retriever 输出版本号签名
Day 2 — Model-centric retriever integrity check(30 分钟)
- retriever 模型版本号 + weight hash 签名(借鉴 batch-32 HMAC)
- retriever 启动时 verify 权重完整性;weight 漂移 → 报警
- 关键 retriever 不接受 typosquatting 模型名;只从官方 mirror 拉
- retriever 输出端加 LLM-as-judge 二次审核
Day 3 — Sparse / dense retrieval 双路对比(1 小时)
- sparse retrieval (BM25) + dense retrieval 双路并行
- 两路结果差异 > 阈值 → 报警
- 攻击者只能攻其中一路,双路差异会被检出
- rerank 前 + rerank 后都跑双路对比
Day 4 — Imperceptible perturbation 检测(2 小时)
- retrieval 输入加入 adversarial detection model
- 微小扰动触发 → reject
- LLM-as-judge 二次审核 top-K content
- embedding 鲁棒性检测:对 corpus doc 做小扰动 → 观察 retrieval 排名稳定性
Day 5 — Opinion manipulation 异常检测(2 小时)
- retrieval 结果按 query topic 分类
- 同 topic 高排名结果集中度异常 → 报警
- 用户反馈与 ranking 偏差大 → 复审
- 关键争议话题(query whitelist)走 multi-source retrieval:必须 3+ source 才信任
Day 6 — Hybrid RAG tenant isolation + chunk 边界(2 小时)
- Hybrid RAG (vector + graph) 双层 tenant isolation
- chunk 与 graph entity 强制同 tenant;跨 tenant graph edge 拒绝
- graph traversal 加 tenant prefix 强制检查
- 关键 multi-tenant 数据走 dual-source verification
Day 7 — Reranker / embedding model supply chain 验证(3 小时)
- reranker / embedding model 走 supply chain provenance(类似 batch-33 corpus)
- pinned version + signature + SBOM
- 关键模型不接受第三方 fine-tune;只从官方 base model 出发
- reranker / embedding 输出端 outlier detection:落点异常 → 报警
- retriever + reranker + embedding 三层 integrity check 联合
写在最后
RAG retrieval-time 攻击是 piick.cc LLM 安全系列的”第七维度专篇”。与 batch-33 (corpus 投毒) 完美互补 —— corpus 干净不等于 RAG 安全,retrieval 链路本身(retriever / reranker / embedding)是新攻击面。corpus 扫描 / provenance 验证全部失效,必须在 retrieval 行为级 / 模型级检测。
如果你的 RAG 系统已经接进 retrieval,先读 Day 1 — Retriever 签名验证 + query provenance 这一节,30 分钟给 retriever 加签名 + query provenance 审计,能挡掉一部分 attack drift。然后照 7 天计划往后做就行。
RAG retrieval 时代的安全不是单一防御能解决的 — retriever integrity + reranker integrity + embedding integrity + sparse+dense 双路 + perturbation 检测 + tenant isolation + supply chain provenance 七层独立兜底。本篇 8 个 foot-gun + 5 个真实事故 + 7 天计划是当下能做的最稳兜底;真正的协议层标准(retriever attestation / RAG component signing)可能要等下一代 RAG 协议落地。
LLM 安全系列下一阶段将进入 [MCP 联邦跨服务器攻击] / [Agentic browser DOM] / [Agent 输出经 MCP 联邦外发] / [Agent 视觉操纵] 等纵深专题。如果你有特别想看的方向,告诉我。
相关阅读
- RAG 知识库投毒实战 — 本文上一篇,LLM 安全第六维度,攻 corpus 知识层
- LLM Agent Memory 投毒实战 — LLM 安全第五维度,跟本文 Foot-Gun 2(CAREATTACK model-centric editing)同源(都是攻击 model layer)
- LLM 输出侧数据泄露实战 — LLM 安全四部曲收官篇,跟本文 Foot-Gun 4(imperceptible perturbation)同源
- MCP Tool-Surface Poisoning 实战 — LLM 安全四部曲第三篇,跟本文 Foot-Gun 2(retriever supply chain)同源
- LLM Tool-Call Escalation 实战 — 调用侧 8 种越权,跟本文 Foot-Gun 7(reranker backdoor)同源
- LLM Prompt Injection 防御实战 — 输入侧 8 种注入,跟本文 Foot-Gun 5(opinion manipulation)同源
- API Key 泄露防御实战 — Day 7 retriever signature 思路跟 API key 防御同源
调试 RAG retrieval pipeline 的 token / URL / regex / 编码?用 Piick 工具集:
- /tools/jwt-decoder/ — 本地读 RAG retrieval capability token,确认 scope 没被放大(对应 Day 1 retriever signature)
- /tools/url-encoder-decoder/ — 本地看 retrieval corpus 来源 URL 是否被双重编码绕过,排查 Foot-Gun 4(imperceptible perturbation)
- /tools/regex-tester/ — 本地测 retrieval whitelist 正则,排查 Foot-Gun 1(reranking 操纵)
- /tools/text-encoder/ — Base64 / hex 检测 retrieval payload 里的编码 attack,呼应 Foot-Gun 3(token-level)
所有工具 100% 本地运行,文件不上传任何服务器,不污染你的 audit log。