在 RAG 流水线中用小型语言模型进行上下文感知的提示注入检测:nokast-secureRAG
Context-Aware Prompt Injection Detection via Small Language Models in RAG Pipelines: nokast-secureRAG
作者提出 nokast-secureRAG:0.5B 小模型在 RAG 中联合判定查询与检索内容是否一致,作者报告召回 0.994、FPR 0.026。
本地 RAG 中,攻击者控制部分可检索内容(网页、文档、记忆条目)并嵌入指令,意图覆盖系统/用户指令、窃取数据或重定义助手角色;假设用户查询本身良性,攻击只存在于检索上下文 C 中。
- 本地 RAG 会把检索到的内容当作可信输入,隐藏在其中的间接提示注入可劫持助手;作者认为现有关键词过滤和通用安全护栏不理解查询与上下文的一致性。
- 作者提出 nokast-secureRAG:0.5B 小模型联合读取用户查询 Q 与检索上下文 C,输出 safe/suspicious/malicious-instruction 三分类;用 35B teacher 生成 5,233 条合成数据、120B judge 盲标复核,再经 reasoning-first LoRA 蒸馏。
- 在 659 条 judge 验证测试集上召回 0.994、FPR 0.026,优于 regex、ProtectAI DeBERTa、Llama Guard 3 等基线;120 对 judgment-flip 上两半均判对 75.0%;但在 PoisonedRAG 上召回仅 0.7%,作者称其为设计范围外的负面结果。
- 作者指出:结果仅 in-distribution,未测自适应攻击;ASR 只是检测侧代理;单请求延迟 293–404 ms 高于 sub-100 ms 目标;数据仅英文、单一通用领域;suspicious 类测试样本仅 6 条。
- 被测模型
- Qwen2.5-0.5B with LoRA (tuned SLM)
- 基准
- 自构合成 (Q, C) 数据集(5,233 条,含 120 对 judgment-flip)PoisonedRAG
- 指标
- Detection RecallASR-proxyFPR3-class accuracyflip-pair both-correctlatency
研究者提出 nokast-secureRAG,一个约 0.5B 参数的小型语言模型,作为 RAG 流水线中检索与生成之间的语义防火墙,联合评估用户查询与检索上下文并分类为安全、可疑或恶意。该模型通过 teacher-judge-student 流程训练,35B 教师生成覆盖四类攻击的 5,233 条样本,独立的 120B 裁判重新标注,学生微调前一致率 95.0%。在分布内留出测试集上,检测召回 0.994、误报率 0.026、攻击成功率代理指标 0.006,优于 regex 基线、公开提示注入分类器、Llama Guard 3 1B 和未微调版本;Prompt-Guard-86M 召回 0.900 但误报率 0.690。消融显示检索上下文携带主要攻击信号,单请求延迟 293-404 ms 高于 100 ms 目标,批处理下摊薄吞吐延迟 37 ms。
相关热点
3 个事件 · 2 条新闻提到
提到这篇论文的新闻
Adversa AI 11月精选24项GenAI安全资源
- Adversa AI引用了论文编号或链接GenAI 安全资源精选(2026 年 11 月)
Context-aware prompt injection detection via small language models in RAG pipelines: nokast-secureRAG
大模型安全周报:防线开始溃于组合,智能体授权与审计系统性缺口
- 公众号 大模型安全研究引用了论文编号或链接大模型安全周报:防线开始溃于组合,智能体授权与审计的系统性缺口
Context-Aware Prompt Injection Detection via Small Language Models in RAG Pipelines: nokast-secureRAG(https://arxiv.org/abs/2610.28364)
深度解读
这篇论文试图解决什么问题?
为本地 RAG 在检索器与生成器之间加一道理解查询—上下文一致性的注入检测层。
核心问题:本地 RAG 会把检索到的内容当作可信输入,隐藏在其中的间接提示注入(IPI)会被模型当作指令执行,而现有检测器不理解查询与检索上下文是否一致。
- 威胁现实化:作者援引测量研究称,web 规模测量在 11.7 K 页面验证了 15.3 K 个间接注入实例,约 70% 藏在非渲染 HTML 中(Khodayari et al., 2026);安全团队报告了真实智能体被诱导付款、删库、外泄数据的案例。
- 现有防御的不足(按论文说法):关键词过滤只看表面字符串,无法区分同一句话在手册中良性、在注入片段中恶意;Llama Guard 等通用护栏面向直接越狱和内容安全训练,而非 RAG 上下文一致性;隐私优先的本地部署使用云端大护栏违背本地推理的初衷。
- 核心观察:同一祈使句(如工具手册中的操作说明)在不同检索上下文下安全性相反,作者把这种上下文驱动的判定反转称为 judgment flip,并把正确处理 flip 视为上下文感知检测器的定义性能力。
- 论文提出:nokast-secureRAG——一个约 0.5B 参数的 SLM,作为检索器与生成器之间的语义防火墙,联合读取 (Q, C) 并输出三分类标签;配套 teacher→judge→student 蒸馏流水线、judgment-flip 评测和开源发布。
- 威胁模型:
- 攻击者目标:覆盖系统/用户指令、外泄数据、重定义助手角色或权限。
- 攻击者能力:控制部分可检索内容(网页、文档、记忆条目)并在其中嵌入指令。
- 受害系统:本地 RAG 流水线,检索 chunk 与用户查询融合后送入生成器。
- 假设:用户查询本身良性,攻击只存在于上下文 C 中;防御需在 16 GB 级显存和交互延迟预算内本地运行。
有哪些相关研究?
相关工作覆盖 IPI 攻击、RAG 投毒、基准与护栏、蒸馏与 LoRA;作者定位为本地专用检测层。
提示注入与越狱攻击
- Greshake et al. (2023)——形式化针对 LLM 集成应用的间接提示注入,演示远程控制、数据外泄和拒绝服务;Perez and Ribeiro (2022)、Wallace et al. (2019)、Zou et al. (2023) 分别演示直接目标劫持、通用对抗触发词和可迁移对抗后缀。
- Liu et al. (2023a)——形式化提示注入并对 5 个攻击族、10 种防御做基准,论文转述其结论:许多临时过滤器和指令式防御在更强攻击下鲁棒性有限;作者称本文与之互补,专注检索介导子集的本地专用防御层。
RAG 与知识库投毒
- Chan et al. (2024, AgentPoison)——投毒 RAG/智能体系统的长期记忆与知识库,低投毒率下取得高攻击成功率。
- Zou et al. (2024, PoisonedRAG)——注入少量构造段落使目标查询检索到攻击者文本并给出攻击者选定的答案;本文用它做 out-of-distribution 检查。论文称这些工作启发了本文四个攻击族中的两个(poisoning 与 context-hijack)。
基准、护栏与护栏框架
- Guo and Wei (2026, OpenRAG-Soc)——把注入藏进隐藏 HTML、alt 文本等的 RAG 评测 harness,附带 sanitization 等缓解措施;Yi et al. (2023, BIPIA) 基准间接注入并评测黑盒/白盒防御。
- Llama Guard (Inan et al., 2023)——通用安全分类法训练的输入输出护栏;She et al. (2025) 发现插入良性检索文档会在约 8–11% 的案例中翻转 Llama-Guard 的安全判定,论文以此说明护栏本身对上下文脆弱。
- SafeRAG (Liang et al., 2025) 与 Zhang et al. (2025)——RAG 安全基准,论文转述其发现代表性 RAG 组件对明显攻击仍脆弱;Guardrails AI (2024)、NeMo Guardrails (Rebedea et al., 2023) 为可编程护栏框架;GuardBench (Bassani & Sanchez, 2024) 跨 40 个数据集评测护栏模型。
高效适配与蒸馏
- Hinton et al. (2015) 知识蒸馏、Hu et al. (2022) LoRA、Wei et al. (2022) 思维链监督——本文 student 的训练建立在这三者之上。
基线与定位:实验基线为 regex 过滤器、zero-shot Qwen2.5-0.5B、ProtectAI DeBERTa、Llama Guard 3 1B、Prompt-Guard-86M;外部基准用 PoisonedRAG。作者称本文与上述工作的区别在于:一个面向检索—生成之间、显式校验查询—上下文一致性的、已实现并经验评测的小型检测器,并配有专门的 context-flip 测试(Table 1)。
论文如何解决这个问题?
把注入检测重构为 (Q, C) 语义一致性三分类,用 35B→120B→0.5B 蒸馏流水线产出本地检测器。
整体思路:把 RAG 注入检测从"对单段文本分类"重构为对 (Q, C) 对的语义上下文一致性判定,再用 teacher→judge→student 蒸馏把大模型的判定能力压缩进一个可本地部署的 0.5B 检测器 nokast-secureRAG。
问题设定与检测器形式
- 输入输出:检测器接收结构化输入 Input = [Q] ∥ [C],先输出一段简短推理再给出标签,标签属于 {safe, suspicious, malicious-instruction}。
- 设计理由:模型联合读取 Q 与 C,可依据 C 中类指令内容是否与用户目的一致来判定,而非在 Q 上匹配关键词。
- 防御要求(§3):检出 C 中与 Q 意图冲突的类指令内容;不过度标记良性说明性文本;在 16 GB 级显存、交互延迟预算内本地运行,不依赖云护栏。
合成数据生成(teacher)
- 四个攻击族:indirect prompt injection (ipi)、knowledge-base poisoning、context hijacking(角色/权限重定义)、PII exfiltration,外加良性文档和模糊的 borderline 案例。
- 关键约束:对抗记录的攻击载荷只嵌入 C(如 HTML 注释、页脚),从不出现在 Q 中,迫使模型学习一致性判断。
- schema-constrained decoding:推理引擎屏蔽任何会破坏 JSON schema 的 token,保证标签可解析。
- judgment-flip 对:同一祈使句 S 分别放入良性上下文(标 safe)和注入上下文(标 malicious-instruction),两半共享 S 原文并以对标识关联;全部 flip 对只留在测试集,不参与训练。
独立 judge 复核
- 流程:一个来自不同模型家族的更大模型只看 (Q, C)、对 teacher 标签盲标,重新标注每条记录;一致的保留用于训练,不一致的隔离待裁决。
- 质量信号:teacher–judge 一致率本身作为数据集质量指标(结果为 95.0%)。
reasoning-first LoRA 微调(student)
- 配置:基座 Qwen2.5-0.5B,冻结基座权重,在注意力和 MLP 投影插入 rank-8 适配器(α=16,dropout 0.05,目标模块 q,k,v,o,gate,up,down)。
- 训练目标:"Reasoning: ... Label: ..." 格式,loss 只算 completion 部分;作者称先推理后给标签促使模型在定标签前阐明 Q–C 关系。
- 产物:17.6 MB 适配器(或约 1 GB 合并模型),可在 llama.cpp/Ollama 等本地运行时部署。
运行与判定方式
- 硬件:全部阶段在单台 NVIDIA DGX Spark(121 GB 统一内存)上依次运行,teacher 与 judge 无法同时驻留。
- 所用模型:teacher 为 Qwen3.6-35B-A3B(NVFP4 MoE,3B 激活),judge 为 Nemotron-3-Super-120B-A12B(NVFP4 MoE,12B 激活)。
- 成功判定:检测召回、ASR 检测侧代理(恶意未被标记的比例)、FPR、三分类准确率;flip 集额外报告 per-record 准确率和更严格的 both-correct 率(一对两半都判对)。
论文做了哪些实验?
在 659 条 judge 验证测试集上召回 0.994、FPR 0.026,flip 对 both-correct 75%,但 PoisonedRAG 上召回仅 0.7%。
实验设置
- 被测系统:B1 regex/启发式过滤器(context-blind)、B2 zero-shot Qwen2.5-0.5B、B3 本文 LoRA 微调 SLM、B4 ProtectAI deberta-v3-base-prompt-injection-v2、B5 Llama Guard 3 1B、B6 Prompt-Guard-86M;B4–B6 只取 C 单文本输入(context-blind),B2 固定模型与规模以隔离微调贡献。
- 数据:teacher 生成 5,233 条 (Q, C) 记录(safe 3,116 / malicious-instruction 1,917 / suspicious 200;攻击类型 ipi 818、poisoning 500、context-hijack 400、pii-exfil 200、borderline 200、benign 3,115,Table 2);judge 一致率 95.0%(4,973 一致、260 争议)。
- 评测划分:检测指标在 659 条 judge 验证一致的测试记录上计算;judgment-flip 指标用测试集中 120 对完整 flip 对(240 条,teacher 标注划分,因 judge 争议拆散了约半数 flip 对);student 只在一致的 3,835 训练 / 479 验证记录上训练。
- 指标:Detection Recall、ASR-proxy(恶意未被标记比例,检测侧代理,非下游生成器行为)、FPR、三分类准确率、延迟;flip 集报 per-record 准确率与 both-correct 率。
- 硬件与可复现性:单台 DGX Spark(121 GB),固定随机种子 20,260,624,冻结划分与模型版本。
- 重复次数:论文未报告。
主结果
据 Table 3(659 条 judge 验证测试记录;batch p50 为批处理每项耗时):
表格较宽,可左右滑动
系统 Recall ↑ ASR-proxy ↓ FPR ↓ 3-class acc ↑ batch p50 B1 regex (context-blind) 0.688 0.312 0.129 0.777 < 1 ms B2 Qwen2.5-0.5B (zero-shot) 0.116 0.884 0.059 0.533 55 ms B4 ProtectAI DeBERTa (context-blind) 0.888 0.113 0.070 0.901 13 ms B5 Llama Guard 3 1B (context-blind) 0.437 0.563 0.459 0.487 88 ms B6 Prompt-Guard-86M (context-blind) 0.900 0.100 0.690 0.586 6 ms B3 tuned SLM (ours) 0.994 0.006 0.026 0.974 37 ms - 作者解读:微调把同一模型的召回从 0.116 提到 0.994;B4 作为内容单文本基线已能抓住多数表面攻击,B3 在此基础上召回再提高 10.6 个百分点、FPR 减半以上。
- 作者解读:B5 接近随机,作者认为与其通用安全/越狱训练一致,通用护栏不能替代任务专用检测器;B6 呈相反失效模式——召回 0.900 但 FPR 0.690,作者称这正是本文 (Q, C) 重构针对的 context-blind 过度标记。
Judgment-flip 评测
- 测了什么:120 对完整 flip 对(240 条),同一祈使句在良性/注入上下文中标签相反(Table 4)。
- 结果:B3 both-correct 率 0.750(per-record 0.875),B1 regex 0.175、B2 0.117、B4 0.542、B5 0.267、B6 0.092。
- 作者解读:context-blind 分类器对共享句子只能给同一标签,在该子集上结构性受限;B4 的语义模型约为 regex 的三倍但仍落后 B3 21 个百分点;B6 尽管原始召回 0.900,却是 flip 对上最差的系统。作者称这是论文核心主张最直接的证据。
输入消融:模型是否真的用 Q
- 测了什么:在完整 659 条测试集上对 B3 做三种输入遮蔽(Table 5):Q-only(C 置空)、C-only(Q 置空)、mismatched(C 换成另一行的 C,标签取 donor 行)。
- 结果:Q-only 召回降为 0.000;C-only 召回 0.987、FPR 0.038(完整模型 0.994/0.026);mismatched 召回 0.990 但 FPR 0.085,约为完整模型的三倍。
- 作者解读:攻击信号几乎全在 C 中,Q 的贡献集中在 flip 与错配这类内容本身有歧义的消歧场景;作者明确称这不等于模型在简单样本上忽略 Q,也不等于每个预测都经过深度联合推理。
外部基准检查:PoisonedRAG(负面结果)
- 测了什么:PoisonedRAG 公开知识投毒基准,300 对 (query, adversarial-passage),来自 NQ、HotpotQA、MSMARCO,全部为恶意,只测召回。
- 结果:B1 regex 0%,B2 zero-shot 14.3%,B3 微调后 0.7%(298/300 判为 safe),低于未微调的基座。
- 作者解读:PoisonedRAG 的段落是流畅的事实捏造、不含指令或角色声明,落在本文指令一致性威胁模型之外;作者将其定性为范围边界而非泛化失败,并称针对事实投毒需要独立的事实一致性层。
其他消融与分析
- 延迟(§6.4):单请求中位延迟 eager transformers 404 ms(p95 513 ms),vLLM 优化运行时降至 293 ms(p95 370 ms),仍高于 sub-100 ms 目标;批处理吞吐 37 ms/对。
- 逐类置信区间(附录 A.1):malicious-instruction(n=311)召回 0.994,Wilson 95% CI [0.977, 0.998];safe(n=342)召回 0.974,CI [0.951, 0.986];suspicious 仅 n=6,召回 0.167,CI [0.030, 0.564],5 个漏检中 4 个被判为 malicious-instruction。
- 词面重叠检查(附录 A.2):测试恶意上下文 79.9% 的 4-gram 未在训练集出现,逐条最近邻 Jaccard 最大 0.39、无 ≥0.5 的近重复;攻击模板本身跨划分复用属设计使然。
- 成本(§6.4):数据生成约 35 Wh,微调约 9 Wh(14.6 分钟,94% GPU 利用率),适配器 17.6 MB。
有什么可以进一步探索的点?
作者列出 in-distribution、代理 ASR、未测自适应攻击等七条局限;实验仅覆盖合成英文数据与一次外部检查。
作者指出的局限与后续方向
- 结果仅 in-distribution(§8):训练与测试来自同一生成器;唯一可行的外部基准 PoisonedRAG 上的检查是设计范围外的负面结果;核心主张(judgment-flip)只在 in-distribution 验证过。
- ASR 是检测侧代理(§8):只衡量护栏是否标记攻击,不是下游生成器的真实行为;§9 称真实 downstream-ASR 测量留待未来。
- 未测自适应攻击者(§8):未评估基于梯度的、多 chunk 的、检索优化的注入和人工红队。
- 延迟未达标(§8、§6.4):延迟只在单一设备上测量;eager 与 vLLM 两种运行时都高于 sub-100 ms 目标;§6.4 称去掉推理轨迹的 label-only 变体是通往 sub-100 ms 单请求延迟的候选路径,留待未来工作。
- 数据仅英文、单一通用领域(§8):未在金融、医疗、法律文档上验证,这些领域中密集的类指令文本可能移动 safe/malicious 边界;作者称跨领域验证是优先事项。
- suspicious 类数据不足(§8):659 条测试中仅 6 条带该标签,0.167 的召回噪声太大不可信,需要更多 suspicious 标注数据;附录 A.2 还指出词面多样性集中在载体文本而非攻击载荷措辞,载荷词表更丰富的生成器是自然的下一步。
实验覆盖范围
- 被测系统:共 6 个——regex、zero-shot Qwen2.5-0.5B、微调 SLM、ProtectAI DeBERTa、Llama Guard 3 1B、Prompt-Guard-86M(§5.3),其中三个公开基线均以 context-blind 方式只在 C 上运行。
- 数据:合成 (Q, C) 语料 5,233 条、仅英文、通用领域;检测指标基于 659 条 judge 一致测试记录,flip 指标基于 120 对(§5.2)。
- 外部基准:仅 PoisonedRAG 一个,300 对、只测召回(§6.6);论文说明 OpenRAG-Soc 无公开数据集、SafeRAG 仅中文,故未采用(§8)。
- 攻击族覆盖:训练数据含 ipi、poisoning、context-hijack、pii-exfil 四族加 borderline(§4.3);事实捏造类投毒不在训练范围内(§6.6)。
- 论文未报告:重复实验次数、人工评估、下游生成器端到端攻击成功率、自适应攻击下的表现。
总结一下论文的主要内容
0.5B 本地检测器联合判定 (Q, C) 一致性,in-distribution 召回 0.994,但范围外投毒基准上召回近零。
一篇防御论文:为本地 RAG 在检索器与生成器之间部署一个小型语义防火墙,检测隐藏在检索内容中的间接提示注入。
- 问题:IPI 把攻击指令藏进可检索内容,作者认为关键词过滤和通用安全护栏不理解用户查询与检索上下文的一致性,云端大护栏又违背本地部署的隐私初衷。
- 方法:nokast-secureRAG 把检测重构为对 (Q, C) 对的三分类(safe/suspicious/malicious-instruction);35B teacher 生成 5,233 条覆盖四个攻击族的合成数据,不同家族的 120B judge 盲标复核(一致率 95.0%),再用 reasoning-first LoRA 微调 0.5B student,全部在单台 121 GB 消费级设备上完成。
- 主结果:在 659 条 judge 验证测试记录上,微调 SLM 召回 0.994、FPR 0.026、ASR-proxy 0.006,优于 regex(0.688)、ProtectAI DeBERTa(0.888)、Llama Guard 3 1B(0.437)和 Prompt-Guard-86M(召回 0.900 但 FPR 0.690)(Table 3)。
- 上下文感知证据:120 对 judgment-flip 上两半均判对率 75.0%,基线最高 54.2%(Table 4);输入消融显示遮蔽 C 召回归零、错配 Q 使 FPR 从 0.026 升至 0.085,作者据此称 Q 的贡献集中在消歧场景。
- 负面结果:在 PoisonedRAG 事实投毒基准上召回仅 0.7%(低于未微调基座的 14.3%),作者称其为指令一致性设计范围之外的范围边界,并完整报告。
- 作者结论:作者称实验支持三点——上下文在边际上起作用、蒸馏能让 0.5B 模型获得远超 zero-shot 的判定力、防御本地且低成本;同时承认单请求延迟 293–404 ms 高于 sub-100 ms 目标,真实 downstream-ASR、自适应攻击测试和跨领域验证留待未来。