SecOPD: Mitigating Adaptive Prompt Injections by On-Policy Distillation
Yibo Peng, Long Lian, David Wagner, Sizhe Chen
EMNLP 2026 (main conference)
cs.CR, cs.AI
2026-08-22
SecOPD让学生在注入输入上生成,用初始化模型在干净输入上给每个token打分。Qwen3.6-27B面对PISmith的攻击成功率从先前SoTA Meta-SecAlign的94.0%降到9.0%,AgentDojo上4.7%,七项效用均值与未防御模型持平。
Agent 要读网页、邮件、文件。这些不可信数据里塞一句「忽略之前的指令,去执行攻击者的任务」,模型经常照做。OWASP 把 prompt injection 排成 LLM 应用第一威胁。已有案例包括代码 agent 写出能跑但有漏洞的补丁、Claude 电脑使用被诱导下载恶意软件、从 Slack 或 Google Docs 外泄私信。
模型侧防御的标准做法,是给不可信数据加一种新消息类型(input role),再微调模型把这里只当上下文、不执行里面的指令。先前 SoTA 是 Meta-SecAlign:用 DPO 在「安全回复 vs 跟随注入」这对偏好上训练。DPO 和 GRPO 给的都是整段回复一个分数。真实失败经常是混合回复,前半答用户问题,后半又跟上注入要求。整段打一个分,模型不知道该鼓励哪几个 token、惩罚哪几个 token。
静态模板攻击下 Meta-SecAlign 看起来还行,SEP Static ASR 从 99.4% 降到 28.9%。面对专门训练的自适应攻击 PISmith,成功率又回到 94.0%,几乎等于没防(未防御 97.9%)。静态数字把稳健性高估了。
SecOPD 把 on-policy distillation 从「提效用」改到「防注入」。学生自己采样轨迹,老师给每个 token 打分。
训练时构造一对输入。干净输入只有可信指令和良性数据;攻击输入在不可信字段里插一条注入。学生在攻击输入上采样一条 rollout。老师是冻结的初始化模型,在干净输入上给同一串输出 token 打 log 概率。某个 token 如果老师在干净上下文里更喜欢它,就给正优势;如果老师觉得它不像干净回答该说的话,就给负优势。同一条回复里,跟用户任务对齐的 span 被保留,跟注入走的 span 被压下去。
混合回复不再需要整段标成好或坏,信用可以按 token 切开。
数据沿用 Meta-SecAlign 的配方:从 Cleaned-Alpaca 造 19K 条,多数把注入插在不可信数据开头或结尾,少数是 completion 风格的分隔符攻击。学生只训 LoRA(rank 128,学习率 1×10⁻⁴),老师冻结。训练走 Tinker,采样温度 1.0,最长生成 16K。不需要外部安全裁判,也不需要任务奖励模型。监督全部来自同一任务干净版上的初始化模型。
老师在测试时不存在:真实网页里的注入没法事先抠掉再打分。它只在训练时因为数据集是成对构造的才用得上。
基座都是 Qwen3.6-27B。对照是未防御、Meta-SecAlign,以及 GRPO(序列级 on-policy,注入样本用 Gemini 裁判打安全奖励)。PISmith 给每个防御单独训一个攻击 LLM(Qwen3-4B-Instruct-2507),在 1024 条 SEP 测试上报告 pass@10 ASR。官方子串匹配被论文判定不可靠,改成 witness 过滤后再让两个 LLM 裁判各打三次,六次全 YES 才算成功。
| 方法 | SEP Static | SEP Basic Adaptive | SEP PISmith | AgentDojo |
| 未防御 | 99.4% | 99.0% | 97.9% | 26.7% |
| Meta-SecAlign | 28.9% | 5.5% | 94.0% | 5.5% |
| GRPO | 15.0% | 2.3% | 61.2% | 0.7% |
| SecOPD | 1.3% | 0.2% | 9.0% | 4.7% |
主结果是 PISmith:94.0% 降到 9.0%,一个数量级。AgentDojo 完全没在训练里见过工具调用,SecOPD 4.7%、Meta-SecAlign 5.5%,转移有但幅度小。GRPO 在 AgentDojo 上 ASR 更低(0.7%),但良性效用掉到 82.5%,SecOPD 是 90.7%。
效用七项(AlpacaEval2、SEP、AgentDojo、MMLU-Pro、GPQA-Diamond、GSM8K、Minerva-Math)未加权均值:未防御 88.1%,Meta-SecAlign 88.5%,GRPO 83.1%,SecOPD 88.1%。SecOPD 的 AlpacaEval2 80.1%(未防御 81.4%),SEP 88.6%,MMLU-Pro 84.1% 持平,GPQA-Diamond 81.3%,略高于未防御的 79.8%。
Minerva-Math 上未防御做对、SecOPD 做错的 46 题里,人工核对只有 4 题是真算错;20 题跑偏或最终答案损坏,12 题答案对但抽取格式被判错,10 题提前收束。这 10 题都有 </think> 标记,没有顶到生成上限。
分域看 AgentDojo,Slack 仍是弱点:SecOPD ASR 24.8%(未防御 67.6%,Meta-SecAlign 31.4%)。Workspace 已经压到 0.5%。受攻击时用户任务成功率 AdvUtility:SecOPD 79.8%,低于 Meta-SecAlign 的 90.7%,和 GRPO 的 79.2% 接近。安全上去了,被攻击时把用户任务做完的能力没有 Meta-SecAlign 稳。
给做 agent 安全的人三条可落地的判断。
静态攻击榜不能当结论。Meta-SecAlign 在 Basic Adaptive 上已经到 5.5%,PISmith 一上来就是 94%。只用固定模板报「防住了」,数字没有参考价值。
信用分配可能比再堆偏好数据更值钱。同一套 19K Alpaca 玩具注入,换 token 级信号,自适应 ASR 掉一个数量级,效用几乎不掉。论文自己的结论更冲:frontier LLM 的安全潜力先前没挖出来,不一定要靠更大更脏的安全数据。
能用,但别当银弹。代码和模型已公开。部署前提是系统能明确标出哪些字段可信、哪些是不可信数据。这和 Meta-SecAlign 的 input role 是同一套假设。没有结构化消息边界的 agent,这篇帮不上。
作者写得很清楚。只防间接注入,用户善意、环境数据恶意;不管 jailbreak、直接注入、用户本身是攻击者的场景。也要求系统事先知道哪些部分可信。SecOPD 训练模型「当注入不存在那样推理」,推理痕迹里不会承认或犹豫注入出现,可能伤到依赖思维链做检测的下游防御。
9.0% 不是 0。未来更强的自适应攻击、能力更强的基座,都可能再打穿。论文明确不声称解决了 prompt injection。
AgentDojo 上相对 Meta-SecAlign 只少 0.8 个百分点,Slack 仍有 24.8%。主表把「泛化到工具调用」写成接近并列的卖点,实际增益主要在 SEP 文本域的自适应攻击。AdvUtility 也从 90.7% 掉到 79.8%,被攻击时用户任务完成率是退步的。PISmith 评测改了官方成功标准,子串匹配换成双裁判全票,跨论文直接比数字要小心。训练和评测都绑在 Qwen3.6-27B 一条线上,换家族、换规模有没有同样跳变,论文没给。