系统:运行中
← 返回所有攻击
DEFENSE LOW NEW

动态分隔符:强化多态提示拼装以抵御提示注入

2026 年 5 月 28 日的一篇 arXiv 论文通过为每次请求生成唯一的 SHA-256 分隔符,修复了多态提示拼装(PPA)的「波及范围」缺陷,将某一 payload 的攻击成功率从 0.88 降至 0.38。

2026-06-02 // 6 min affects: llama-3.3-70b-instruct-turbo, deepseek-v4-flash, llm-agents

这是什么?

2026 年 5 月 28 日,Nima Dorzhiev 与 Peng Liu 发表了 Strengthening Polymorphic Prompt Assembling: Dynamic Separator Generation Against Emerging Prompt Injection Attacks(arXiv:2605.30534)。这是一篇简短的防御性论文——仅五页——它修补的是一项既有提示注入防御中的弱点,而非公布一种新攻击。

所涉及的防御是多态提示拼装(Polymorphic Prompt Assembling,PPA),于 2025 年 6 月发表在 arXiv:2506.05739。PPA 的思路很简单:提示注入通常要求攻击者猜测并打破将可信系统指令与不可信用户输入分隔开的结构。若将该结构随机化,攻击者便无法可靠地预测边界所在。PPA 在拼装时从一个固定池中抽取分隔符对,运行开销几乎为零。2026 年 5 月的论文指出了这个固定池所遗漏之处,并加以弥补。

工作原理

新论文针对的缺陷是波及范围(blast radius)。在原始 PPA 中,分隔符是从一个静态池中抽取的。池是有限的,而分隔符可能泄露——一个能够回显或反射当前分隔符的注入 payload 会将其暴露。一旦某个分隔符被获知,它便可被复用于任何抽到同一对分隔符的后续请求。一次泄露即危及众多请求。

修复方法是彻底不再复用分隔符。防御不再从池中采样,而是为每次请求派生一个全新的分隔符,由一个带域分离的 SHA-256 摘要生成,密钥取自三项输入:

separator = H( domain_tag || timestamp || session_id || nonce )
                    │            │            │           │
        防止跨上下文的           每次请求的       每次调用
        摘要碰撞                熵绑定           不可预测

每个拼装后的提示都获得唯一的 (BEGIN, END) 金丝雀对。由于该对永不复用,泄露的分隔符只暴露其所属的单次请求——波及范围从「众多后续请求」收缩为「一次」。该构造从其输入出发是确定性的(因此框架在解析模型输出时仍能识别自己的分隔符),但对没有 nonce 的攻击者而言不可预测。

论文报告的数据,在 Llama-3.3-70B-Instruct-Turbo 上评估,并在 DeepSeek-V4-Flash 上进行跨模型验证:

  • 针对「M1」混淆 payload(leetspeak 加紧迫性措辞),动态模式将攻击成功率从 0.88 降至 0.38——作者通过不重叠的 95% Wilson 置信区间报告这是 2.3 倍且具有统计显著性的缓解。
  • 针对 format_breakout_salad payload,静态分隔符的泄露率(0.467)在动态模式下降至 0.000,从经验上证实了波及范围的论点。
  • 开销为每次请求约 2.7 微秒的提示拼装时间,无需模型微调,且该改动与现有的 PPA SDK 向后兼容。

请注意论文坦诚说明的上限:0.38 的成功率是显著改善,而非免疫。结构性随机化提高了注入的成本,但并未将其消除。

为何重要

提示注入仍位居 OWASP LLM 应用十大风险(LLM01)之首,而大多数生产环境的护栏分为两类:基于模型的重型分类器,会增加延迟却仍会漏掉新颖措辞;以及脆弱的字符串过滤器。PPA 属于第三类——一种低成本的结构性防御,它不依赖于识别攻击的内容,而仅在于使攻击者无从得知提示的布局。

动态分隔符这一结果之所以重要,是因为它表明此类防御存在一个清晰的工程旋钮。从静态池转向按请求派生,是一处小的代码改动,带来可度量、可复现的安全收益,成本却在微秒量级。对于已在用模板拼装提示的团队,这正是可在一个下午完成、而非一个季度才能上线的缓解措施——而且它与分类器、能力沙箱相互叠加,而非彼此取代。

防御措施

如果您构建 LLM 应用并希望应用这一经验:

  1. 将提示边界视为按请求保密的秘密。 无论您用何种方案分隔系统指令与不可信输入,都不要复用一组固定的分隔符。应按请求从不可预测的材料(一个 nonce,加上会话与时间戳)派生,使单次泄露无法被重放。
  2. 在派生中使用域分离。 在哈希输入中加入域标签,可防止为某一上下文生成的分隔符在另一上下文中仍然有效——这与密码学密钥派生采用的卫生习惯相同。
  3. 使分隔符远离模型可见的反射路径。 在工具输出和模型回复重新进入提示之前,剥离或中和其中对当前分隔符的任何回显,从源头缩小泄露面。
  4. 叠加,而非替代。 结构性随机化是力量倍增器,而非保证——0.38 的残余成功率依然真实。请将其与输入/输出过滤、最小权限的工具范围,以及「致命三要素」原则结合:不要让处理不可信输入的组件同时拥有私有数据访问权和外泄通道。
  5. 用置信区间度量。 论文采用 Wilson 区间而非原始百分比,是个好习惯。在对护栏做 A/B 测试时,请报告不确定性,以免把带噪声的 5 个百分点波动误认为真实效果。

状态

项目参考日期备注
多态提示拼装(PPA)arXiv:2506.057392025-06原始防御;静态分隔符池
动态分隔符生成arXiv:2605.305342026-05-28按请求生成 SHA-256 分隔符;修复波及范围
评估模型据论文2026-05Llama-3.3-70B-Instruct-Turbo;DeepSeek-V4-Flash(跨模型)
报告效果据论文2026-05M1 payload:0.88 → 0.38;泄露率 0.467 → 0.000
开销据论文2026-05约 2.7 微秒/请求;无需微调;SDK 向后兼容

要点不是「提示注入已被解决」,而是:一项已知的结构性防御存在「秘密复用」的缺陷,有人用按请求派生加以修复,且公开数据表明该修复成本低廉、可度量。这正是防御者应当从文献中汲取的那种渐进式加固。

Sources