Hidden-in-Plain-Text: A benchmark for indirect prompt injection in social network 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。
- Evaluated models
- Llama-3-8B-InstructMistral-7B-InstructQwen2.5-14BLlama-3-70Bintfloat/e5-base-v2BAAI/bge-large-en-v1.5ContrieverBM25
- Benchmarks
- OpenRAG-Socreal-web subset (blogs/docs/forums, N=2350)
- Metrics
- ASRΔMRR@10ΔnDCG@10answerabilitytoken-level citation alignmentlatency
The researchers release OpenRAG-Soc, a compact, reproducible benchmark and testing framework for RAG in web scenarios, used to evaluate indirect prompt injection and retrieval poisoning. The suite combines social corpora with replaceable sparse and dense retrievers and deployable mitigation measures (HTML/Markdown cleaning, Unicode normalization, attribution-gated answering), standardizes end-to-end evaluation from ingestion to generation, and reports attack results at answer time, ranking changes for sparse and dense retrievers, utility, and latency, facilitating horizontal comparison across different carriers and defenses.
Paper analysis
What problem does this paper attempt to solve?
社交网页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。作者称它面向需要快速、贴近部署的风险检查的从业者。
What related research exists?
相关工作分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 防御曲线。
How does the paper address this problem?
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。对照文档用来把检索效应和载荷执行分开。
What experiments did the paper conduct?
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。论文未说明对应的生成模型与检索器,也未按模型分列,故不把四个生成器填进表内。
Swipe horizontally to read the table
载体 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。
What are some points that can be further explored?
作者把完全知晓提示词的对手和多阶段渲染管线留作后续评估。
作者指出的局限与后续方向
- 提示词知晓的对手:各次运行的提示词固定。作者称自适应改写仍保持防御排序,但完全知晓提示词的对手留作后续工作(§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 防御曲线,结果节未给出该指标的定义式或图上读数。
Summarize the main content of the paper
全防御下五类载体宏平均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 噪声,作者留作后续专门评估。