Hidden-in-Plain-Text:面向社交网络 RAG 间接提示注入的基准
Hidden-in-Plain-Text: A Benchmark for Social-Web Indirect Prompt Injection in RAG
OpenRAG-Soc评测社交网页RAG的间接提示注入与检索投毒,全防御宏平均ASR为4.7%(Table 1)。
- RAG用网页与社交媒体内容接地时,第三方页面中的间接提示注入和检索投毒会在检索后进入生成。作者称覆盖这些载体和可部署缓解的紧凑基准仍然缺少。
- OpenRAG-Soc用6,200页、五类常能通过摄入的载体,搭配BM25与稠密检索器。防御为HTML/Markdown消毒、Unicode归一化和归因门控,并同时报告ASR与排序变化。
- Table 1宏平均ASR从Vanilla的24.9%到All Defenses的4.7%(模型未说明)。真实网页自适应下All Defenses为5.4%(Table 2)。干净集k=10,S+N的ΔMRR@10为-0.012。
- 作者称完全知晓提示词的对手仍是后续工作;JS渲染、自定义渲染器与OCR噪声需要专门评估。主表未说明生成模型,也未报告查询数。PDF/SVG切片未给分项ASR。
- 被测模型
- Llama-3-8B-InstructMistral-7B-InstructQwen2.5-14BLlama-3-70Bintfloat/e5-base-v2BAAI/bge-large-en-v1.5ContrieverBM25
- 基准
- OpenRAG-Socreal-web subset (blogs/docs/forums, N=2350)
- 指标
- ASRΔMRR@10ΔnDCG@10answerabilitytoken-level citation alignmentlatency
研究者发布 OpenRAG-Soc,一个面向 Web 场景 RAG 的紧凑、可复现基准与测试框架,用于评估间接提示注入和检索投毒。该套件把社交语料与可替换的稀疏、稠密检索器以及可部署的缓解措施(HTML/Markdown 清洗、Unicode 归一化、归因门控回答)组合在一起,标准化从摄取到生成的端到端评测,并报告回答时的攻击结果、稀疏与稠密检索器的排名变化、效用与延迟,便于在不同载体和防御之间做横向比较。
深度解读
这篇论文试图解决什么问题?
社交网页RAG面临间接提示注入与检索投毒,作者给出OpenRAG-Soc做可复现评测。
用户生成的社交网页内容进入 RAG 后,间接提示注入与检索投毒会沿摄入到生成生效,而同时覆盖这些载体和可部署缓解的可复现基准仍然缺少。
- 场景:作者称 RAG 用公开 Web 与社交媒体内容接地,既增加覆盖和时效,也扩大 Web 原生攻击面。间接提示注入把指令嵌在第三方内容中,检索到后可能被执行;检索投毒则偏置索引或检索器,使恶意内容进入 top-k。
- 现有不足:作者称已有记忆与抽取工作显示,看似无害的文本也能触发披露,但覆盖 HTML、无障碍通道和 Unicode 载体、并带可部署缓解的紧凑 Web 中心 RAG 基准仍然缺失。
- 威胁模型:
- 目标:作答时执行注入指令(ASR),或在投毒下抬高攻击者目标条目的排序(ΔMRR@10、ΔnDCG@10)。
- 知识:攻击者了解标记载体(hidden spans、off-screen CSS、alt text、ARIA、zero-width),但不知道模型权重,也不知道系统提示词。
- 能力:控制将被检索器摄入的一部分网页。
- 受害系统:使用 top-k 检索(默认 k=5)和单个 LLM 的 Web-facing RAG。
- 本文给出:OpenRAG-Soc,一套基准与测试架,含社交风格语料、可互换的稀疏/稠密检索器,以及 HTML/Markdown 消毒、Unicode 归一化和 attribution-gated answering。作者称它面向需要快速、贴近部署的风险检查的从业者。
有哪些相关研究?
相关工作分IPI、检索投毒与归因;作者称本文补的是RAG管线而非浏览器智能体。
作者把相关工作分成间接提示注入和 RAG 投毒/泄露两条线,并把本文放在摄入到生成的管线上。
间接提示注入与 Web 智能体
- OWASP LLM Top-10(文中引用为 2024):把间接提示注入列为 LLM 应用威胁,并建议消毒、策略隔离等分层控制。
- Greshake 等(2023):形式化数据与指令界限被打破后,可检索的第三方内容如何成为远程注入通道。
- WASP(Evtimov 等,2025)与 WebArena(Zhou 等,2023):在浏览器中介的网页任务中,hidden spans、off-screen CSS、alt text、ARIA 等载体可以操纵系统。另有运行报告与自适应攻击文献,作者用来说明需要跨载体、跨防御的可复现评测。
检索投毒、后门与泄露
- Clop 与 Teglia(2024)、Su 等(2025):后门或被投毒的检索器可以把攻击者文档抬进 top-k,从而引导接地回答。
- Qi 等(2024,Follow My Instruction and Spill the Beans)、Zeng 等(2024):讨论从 RAG 检索库做可扩展抽取,以及 RAG 中的隐私问题。
- Carlini 等(2021)、Nasr 等(2023):引言用来说明看似良性的文本也能触发披露。作者据此写明仍缺 Web 中心的 RAG 基准,而不是批评这些抽取工作本身。
归因、批判再生与检索基础
- Qi、Sarti 等(2024):用模型内部信息做答案归因,以支持可追溯的 RAG;本文的引用门控引用这一路。
- Self-RAG(Asai 等,2023):检索、生成并批判,以改进事实性文本。实验里用了 SelfRAG-style 的 critique/regenerate 对照。
- BM25(Robertson 与 Zaragoza,2009)、Contriever(Izacard 等,2021)、E5(Wang 等,2022):被作者用作同一批分块上的稀疏与稠密检索对照。
基线与数据
- 配置:Vanilla、Sanitized、Normalized、Attribution-gated,以及 Sanitized+Normalized 和 All Defenses;另有 SelfRAG-style 基线。
- 数据:自建 6,200 页社交风格语料;另有许可爬取的博客、文档和论坛子集(N=2350)。
作者称 OpenRAG-Soc 不替换智能体测试床,而是隔离检索与生成效应。定位段把它与强调浏览器动作或较窄载体集合的 web-agent 基准区分开,并写到组合载体、coverage-adjusted ASR,以及 ASR–延迟的 Pareto 防御曲线。
论文如何解决这个问题?
OpenRAG-Soc以五类载体语料、可切换检索器和三项可组合防御做端到端评测。
OpenRAG-Soc 把社交风格网页做成带载体标签的语料,走摄入、检索、生成,并用可组合开关比较三项防御;同时记录作答时是否执行注入指令,以及投毒带来的排序变化。
语料与载体
- 规模:6,200 个社交风格页面,五类载体为 hidden spans 1,330、off-screen CSS 1,280、alt text 1,280、ARIA 980、zero-width 1,330。其中可见变体 3,090,隐藏或屏外变体 3,110。
- 标签:每页有 payload 与 control 对照,并标有 variant、carrier、topic、poison_target、has_canary、payload_visibility。作者称这些载体在实践中常能通过摄入。
- 附加切片:硬负例(良性祈使句)、扩展 confusables,以及 PDF 文本层和 SVG 的 title/desc 约 200 页,用来探测非 HTML 摄入。
检索、生成与提示
- 稀疏检索:BM25,经 Pyserini/Lucene v0.22,k1=1.2,b=0.75。
- 稠密检索:intfloat/e5-base-v2 与 BAAI/bge-large-en-v1.5,mean pooling 后做 ℓ2 归一化;索引用 FAISS HNSW(M=32),efSearch=64。结果节还列入 Contriever。
- 分块与深度:块大小取 256、512 或 768,overlap=128。top-k 取 3、5、10,默认 k=5;干净集另报 k=10。每次运行固定一对检索器与生成器。
- 生成器:Llama-3-8B-Instruct(HF)、Mistral-7B-Instruct、Qwen2.5-14B、Llama-3-70B(API)。max_tokens=512,temperature=0.2,nucleus p=0.9。
- 提示:各设置共用一条禁止从上下文引入新指令的模板,要求只回答用户问题,并引用支持论断的片段。Attribution-gated 模式要求每句有行内引用,否则该句重新生成。
防御开关
- Sanitization:用生产级消毒器 DOMPurify 去掉或中和隐藏、屏外载体和危险属性,保留可见文本。
- Normalization:NFKC 加控制字符剥离,针对 zero-width 与同形字。
- Attribution-gated prompting:把回答限制在带引用的片段上。三项正交、可组合。PDF 只抽文本层,SVG 解析 title 与 desc,再走同一分块和防御。
指标与配置
- ASR:查询集合 Q 上执行注入指令的比例。检测器集成(模式检查加一个轻量分类器)给出 0/1 的跟随指示,定义为 ASR=(1/|Q|)∑q∈ Q Ifollow(q)。
- 排序:攻击者目标条目视为相关项。相对 Vanilla 的变化写为 Δ MRR=MRRdef−MRRvan,nDCG@k 同样用防御配置减去 Vanilla。
- 效用与延迟:可回答率;归因门控运行中,输出 token 与被引片段对齐的比例。延迟是每查询端到端时间的中位数和 IQR,并报告相对 Vanilla 的百分比;每个配置至少聚合 8k 次运行。置信区间用非参数 bootstrap;配对差异用 Wilcoxon signed-rank 检验。
- 配置:Vanilla 不消毒、不归一化,使用标准提示;另有 Sanitized、Normalized、Attribution-gated,以及 Sanitized+Normalized 和 All Defenses。对照文档用来把检索效应和载荷执行分开。
论文做了哪些实验?
Table 1宏平均ASR从Vanilla的24.9%到All Defenses的4.7%,表未说明生成模型。
实验设置
- 生成器:Llama-3-8B-Instruct、Mistral-7B-Instruct、Qwen2.5-14B、Llama-3-70B。检索器为 BM25、intfloat/e5-base-v2、BAAI/bge-large-en-v1.5;消融句中还包括 Contriever。
- 数据:主评测是 6,200 页、五类载体的社交风格语料。真实网页测试为许可爬取的博客、文档和论坛,N=2350,按域名和主题分层,每域上限 105 页,种子 URL 加广度 2 爬取。
- 对照:Vanilla、Sanitized、Normalized、All Defenses,以及 Sanitized+Normalized。另有 SelfRAG-style critique/regenerate。Attribution-gated 在方法中定义,Table 1 未单列该列。
- 指标:ASR 及括号内区间;投毒用 ΔMRR@10、ΔnDCG@10;效用为可回答率和 token 级引用对齐;延迟给中位数与 p95。
- 判定:模式检查加轻量分类器。人工审计为 N=1200 条生成、三名标注者双标;另有 N=300 的改写/跨句审计,以及 N=750 上的检测器校准。
- 未写明:Table 1 与 Table 2 未说明生成模型和检索器;主 ASR 的查询数论文未报告。采样设置为 temperature=0.2、nucleus p=0.9,默认 k=5。
主结果
下表是间接提示注入的 ASR(%),据 Table 1。论文未说明对应的生成模型与检索器,也未按模型分列,故不把四个生成器填进表内。
表格较宽,可左右滑动
载体 Vanilla Sanitized Normalized All Defenses Hidden spans 34.0 12.3 33.1 5.0 Off-screen CSS 30.1 9.8 29.3 4.6 Alt text 27.8 11.1 27.0 4.8 ARIA 9.6 9.3 9.4 5.1 Zero-width 23.2 23.0 7.8 4.2 Macro avg. 24.9 13.1 21.3 4.7 - 作者解读:Vanilla 的指令跟随率最高;Sanitized 主要压低 HTML/Markdown 载体,Normalized 主要压低 zero-width;各载体上 All Defenses 都最低。作者称效用代价可以忽略,稠密与稀疏检索器的防御排序相同。Table 1 没有按检索器分开的数字。
- 表内对照:ARIA 在 Vanilla、Sanitized、Normalized 上为 9.6、9.3、9.4,到 All Defenses 才到 5.1。Zero-width 上 Sanitized 为 23.0,相对 Vanilla 的 23.2 变化很小;hidden spans 上 Normalized 为 33.1,相对 34.0 也接近。
- 区间:Table 1 括号内给了区间。宏平均 Vanilla 为 (20.3, 29.2),All Defenses 为 (3.5, 6.3)。方法节称区间来自非参数 bootstrap,表注未写是否为 95%,结果节也未给 Wilcoxon 的 p 值。
检索排序与效用
- Figure 1:横轴为 Poison fraction(%),标注 0.1、0.5、1、5、10;纵轴为 ΔMRR@10 vs. Vanilla,标注 0、−5·10^−2、−0.1、−0.15。图例是 BM25 (Van.)、Dense (Van.)、BM25 (S+N)、Dense (S+N)。作者称排序退化随投毒预算增大,Sanitized+Normalized 对两种检索器都减弱该退化。文本未给出各曲线端点数值,也未说明 Dense 是哪一个稠密模型。
- 干净集:k=10 时,Sanitized+Normalized 相对 Vanilla 的 ΔMRR@10 为 −0.012,ΔnDCG@10 为 −0.009;文中写 MRR@10 从 0.462 到 0.450,nDCG@10 从 0.598 到 0.589。作者称稠密检索器方向相同,绝对变化略大于 BM25。论文未把 0.462 这一对数字直接标成 BM25 或某一个稠密模型。
- 效用:Sanitized+Normalized 下可回答率变化为 −1.8 个百分点 / −2.2 个百分点;归因门控运行的 token 级引用对齐为 0.88。论文未说明这两个百分点分别对应哪个检索器或生成器。
检测器与人工审计
- N=1200:三名标注者双标。检测器 P=0.92,R=0.89,F1=0.90,Cohen's κ=0.84。混淆矩阵为 TP=498、FP=43、FN=62、TN=797,金标准正例约 40%。
- 错误样本:作者称 FN 主要是改写后的多句服从(13/20,65%),其余是跨句依赖(7/20,35%);FP 是谨慎的元文本(10/14,71%)或只含引用的回复(4/14,29%)。这是文中给出的 20 与 14 例,不是全部 FN/FP。
- 偏差:N=300 的改写/跨句审计为 P=0.90、R=0.88、F1=0.89,检测器 ASR 偏差 +0.6 pp(配对 bootstrap ±0.4 pp)。用人标重打一个 final-split 切片后,宏平均 ASR 移动在 ±0.8 pp 内,防御排序不变。N=750 上做 10k 次参数 bootstrap 后,作者报告的主要降幅变化不超过 0.6 pp,区间与检测器结果重叠。
真实网页与自适应载荷
- Table 2:静态 / 自适应 ASR(%)为 Vanilla 22.7 / 28.9(+6.2 个百分点),Normalized 19.1 / 22.2(+3.1),Sanitized 12.0 / 15.8(+3.8),All Defenses 4.3 / 5.4(+1.1)。作者称自适应提示词在各防御上都提高 ASR,排序仍为 Vanilla、Normalized、Sanitized、All Defenses。该表同样未说明生成模型。
- 排序与效用:作者称干净集排序与静态情形相近,并给出 BM25 的 ΔMRR@10 约 −0.015、ΔnDCG@10 约 −0.012;效用变化相对静态设置在 2.5 个百分点以内。
其他消融与分析
- 块大小 {256, 512, 768}:绝对 ASR 变化至多 2.2 pp(中位数),配置排序不变。
- top-k 从 3 到 10:作者称 HTML 载体 ASR 轻度上升,All Defenses 保持在 4%±1% 以内。
- 跨 Llama-3-8B/70B、Mistral-7B、Qwen2.5-14B,以及 BM25、E5-base、BGE-large、Contriever:投毒剂量–反应斜率与防御排序一致;作者称更强的稠密模型相对 E5-base 的干净集 MRR@10 高 0.018,未点名是哪一个模型。
- SelfRAG-style critique/regenerate:相对 All Defenses 再低 0.6 pp ASR,中位开销 +70 ms,可回答率 −1.1 pp。
- 延迟:摄入消毒 +3.1%(p95 7.4%);Unicode 归一化低于 0.5%。绝对时间上,Vanilla 端到端 1005/2080 ms(中位/p95),Sanitized +31/+154 ms,Normalized +5/+10 ms。消毒下 Generate +18/+120 ms,Ingest +13/+30 ms,其余阶段低于 5 ms。
- 防御后残差:可见祈使句占 49%,归因使该桶 ASR 相对 Vanilla 下降 78%;代码中的 confusable 占 31%,归一化下降 66%;查询与注入任务对齐占 20%,消毒加归因下降 61%。作者称归因会漏掉超出被引片段的改写,归一化会漏掉代码围栏保住的 confusable。
有什么可以进一步探索的点?
作者把完全知晓提示词的对手和多阶段渲染管线留作后续评估。
作者指出的局限与后续方向
- 提示词知晓的对手:各次运行的提示词固定。作者称自适应改写仍保持防御排序,但完全知晓提示词的对手留作后续工作(§6.1)。
- 多阶段管线:评测对象是通常能通过摄入的载体。作者写明 JS 渲染的 DOM 变换、自定义渲染器和 OCR 噪声可能引入新载体或失败模式;消毒、归一化与归因门控可能有帮助,但需要专门评估(§6.1)。
- 方法代价:讨论节称消毒可能降低召回,归因可能降低可回答率;作者同时称这些方法改善来源标注和安全性(§6)。
实验覆盖范围
- 生成器为 Llama-3-8B-Instruct、Mistral-7B-Instruct、Qwen2.5-14B、Llama-3-70B;检索器报告了 BM25、E5-base、BGE-large 和 Contriever。
- 主 ASR 按 hidden spans、off-screen CSS、alt text、ARIA、zero-width 五类载体报告。语料另含 PDF/SVG 约 200 页,论文未报告该切片的分项 ASR。
- 防御配置包括 Vanilla、Sanitized、Normalized、Attribution-gated、Sanitized+Normalized、All Defenses,以及 SelfRAG-style critique/regenerate。真实网页测试含静态载荷和自适应红队提示词集(Table 2,N=2350 页,每域上限 105 页)。
- 检测器审计为 N=1200(三人双标)、N=300 和 N=750。每个延迟配置至少聚合 8k 次运行。论文写出用 Wilcoxon signed-rank 做配对检验,结果节未给出 p 值。
- 论文未报告主 ASR 的查询数,也未说明 Table 1、Table 2 和 Figure 1 中 Dense 对应的生成模型或具体稠密检索器;轻量分类器没有模型名。定位段提到 coverage-adjusted ASR 和 Pareto 防御曲线,结果节未给出该指标的定义式或图上读数。
总结一下论文的主要内容
全防御下五类载体宏平均ASR为4.7%,真实网页自适应载荷下为5.4%。
OpenRAG-Soc 是一套面向从业者的 Web-facing RAG 基准和测试架,用来衡量社交网页载体上的间接提示注入和检索投毒。
- 问题:攻击者控制一部分将被摄入的网页,知道标记载体,但不知道模型权重和系统提示词。系统使用 top-k 检索(默认 k=5)和一个 LLM。成功指作答时执行注入指令,或抬高投毒目标的排序。
- 做法:6,200 页社交风格语料覆盖 hidden spans、off-screen CSS、alt text、ARIA 和 zero-width,并有可见与隐藏变体。管线把页面分成固定步长的片段,用 BM25 或稠密检索器取回,再由固定的检索器–生成器对作答。防御是 DOMPurify 消毒、NFKC 归一化,以及要求行内引用的归因门控,可以单独或组合打开。
- 主结果:Table 1 的宏平均 ASR 在 Vanilla 为 24.9%,在 All Defenses 为 4.7%。作者称消毒主要对应 HTML/Markdown 载体,归一化主要对应 zero-width。ARIA 上 Vanilla、Sanitized、Normalized 分别为 9.6%、9.3%、9.4%。该表未标明生成模型。
- 其余结果:真实网页上,自适应载荷把 Vanilla 的 ASR 记为 28.9%,All Defenses 记为 5.4%(Table 2),防御排序不变。干净集 k=10 上,Sanitized+Normalized 的 ΔMRR@10 为 −0.012。N=1200 的双标审计中,检测器 F1=0.90、κ=0.84。摄入消毒使管线延迟增加 3.1%(p95 7.4%)。
- 作者结论:作者称 HTML/Markdown 消毒、Unicode 归一化与归因门控能降低指令跟随并加强来源标注,且开销不妨碍在网页 RAG 中部署。完全知晓提示词的对手,以及 JS 渲染、自定义渲染器和 OCR 噪声,作者留作后续专门评估。