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

输出过滤胜过模型自防御:两万次自适应攻击,只有一个幸存者

于2026年4月26日发布、5月12日修订的一篇Swept AI与密歇根大学论文,以自适应攻击者对抗九种提示注入防御。所有依赖模型自身的防御最终都被攻破。仅有运行在应用层的输出过滤经受住了考验——在15 000次攻击中实现零泄漏。

2026-05-22 // 6 min affects: gpt-4, claude-3, gemini, open-source-llms, system-prompt-secrets

这是什么?

2026年4月26日,Priyal Deep与Swept AI、密歇根大学的合作者在arXiv发布了《Evaluation of Prompt Injection Defenses in Large Language Models》(2604.23887),并于2026年5月12日完成第二版修订。论文方法直接而严苛:一个会自我演化的自适应攻击者,在数百轮迭代中对抗九种防御配置,总计超过20 000次攻击。结论毫不含糊:任何依赖模型自身把守的防御,最终都会被攻破。唯一守住底线的配置是输出过滤——以独立应用代码、硬编码规则审查模型响应,在到达用户之前进行拦截。针对该配置进行的15 000次攻击中,泄漏次数为

这不是又一篇越狱论文,而是对各团队一直反复追问的问题给出系统性答案:我们已经部署的防御中,究竟哪一种能真正经受住一个会自我适应的攻击者?

工作原理

威胁模型假设存在一个怀有恶意的用户,一个在系统提示中保存机密信息(API密钥、内部指令、客户数据)的LLM应用,以及一个可以自由组合各种标准缓解措施的防御方。攻击者并非一段载荷固定的脚本,而是由LLM驱动的循环——观察响应、改进策略、再次尝试。论文针对每种防御运行数百轮该循环,并报告累计泄漏率。

测试涵盖九种防御配置,可归为两大类:

# 概念性分类 — 仅作说明,不是可执行的攻击。
# A. 模型侧防御(要求模型拒绝)
#    1. 含 "不要透露机密" 的朴素系统提示
#    2. Spotlighting / 在不可信输入周围添加分隔符
#    3. 指令层级化的提示
#    4. 自反思: "你上一条输出是否包含机密?"
#    5. 改写 / sandwich 防御
#    6. 提示级分类器(由模型判断输入是否恶意)
#    7. 模型侧组合栈(将以上多种叠加)
#
# B. 应用侧防御(运行在模型之外的代码)
#    8. 通过独立分类器进行输入过滤
#    9. 输出过滤:对响应执行硬编码的正则/字符串检查,
#       在交付给用户之前进行 —— 15 000次攻击中零泄漏

核心是不对称性。A类防御要求被攻击的系统自己判断攻击是否成功。在足够多的轮次之后,自适应攻击者总能找到一种连防御方自己的模型也接受的措辞。B类防御则把模型视为不可信组件,在模型之外独立验证其输出。论文中的输出过滤器并不依赖花哨的AI——它是一段确定性的应用代码,知道机密的形态,并拒绝任何包含该机密的响应。

为什么重要

这是十八个月内第三篇指向同一方向的独立论文。OpenAI 2024年的《The Instruction Hierarchy》承认,模型独自无法在对抗压力下维持指令层级;Weng等人于2026年5月5日发表的《ARGUS》把决策迁移到了模型之外的来源图;Deep等人的工作将这一负面结果一般化:任何以 ”……由模型决定” 结尾的防御,终将败于自适应攻击者。其建设性推论是:安全边界应当置于不在LLM内部运行的代码中。

对于今天交付LLM应用的团队而言,这重新定义了路线图中 “提示注入缓解” 的含义。Spotlighting、sandwich、指令层级提示、自反思在干净流量下对用户体验有价值,但它们并非安全边界。真正的边界,是模型返回之后、响应触达工具调用、数据库写入或用户屏幕之前所运行的代码。

防御建议

直接来源于论文及前述同期工作:

  1. 绝不把不能公开发布的机密放进系统提示。 一旦泄漏,会造成什么破坏?如果答案是 “很多”,就把它彻底移出提示,放到模型可以以受限权限调用的工具背后。
  2. 实现确定性的输出过滤。 正则、字符串匹配、JSON结构校验、已知敏感令牌的拒绝列表。在应用代码中、交付之前运行。任何命中都应视为硬拒绝,而非警告。
  3. 同时叠加输入过滤与输出过滤。 输入过滤缩小攻击面;输出过滤兜住漏过去的部分。论文中表现最好的配置,正是在两端都有过滤。
  4. 审计任何 “自我检查” 类防御。 如果缓解措施是让同一个模型问自己 “刚才安全吗?“,请假设自适应攻击者可以击败它。把它留给UX,而不是安全。
  5. 将执行敏感操作的代理限制在可信人员范围内,直到您的输出侧防御得到独立验证。作者明确将此视为过渡性立场。

现状

项目引用日期备注
论文(v1)arXiv:2604.23887v12026-04-2614页、9图,cs.CR / cs.AI
论文(v2 — 当前)arXiv:2604.23887v22026-05-12最新修订
测试的防御论文 §32026-04-269种配置,涵盖模型侧与应用侧
攻击预算论文 §420 000+ 次自适应攻击,数百轮
最佳防御输出过滤15 000次攻击中0泄漏
相关:ARGUSarXiv:2605.033782026-05-05同一方向:在模型之外进行防御

更深层的启示:提示注入不是 “下一个更好的模型” 能解决的模型问题,而是一个系统问题。和所有安全领域的系统问题一样,答案是在您所控制的代码中验证不可信的输出。

Sources