
LLM 越狱详解:越狱改变了什么,以及为什么它并非消融(abliteration)
- Orca新Orca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 每百万 tokens · 12 tok/s
- deepseek新DeepSeek: DeepSeek V4.1 Flash 10172026-10-1745智能
- DeepSeek新DeepSeek: DeepSeek V4.1 Flash2026-10-1740智能
- Orca新Orca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 每百万 tokens · 139 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2952智能
- anthropicAnthropic: Claude Sonnet 5.52026-09-2856智能
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 每百万 tokens · 952 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2238智能
- OpenAIOpenAI: GPT-6 Sol2026-09-2248智能
- AnthropicAnthropic: Claude Opus 5.52026-09-2258智能
- xAIGrok 4.72026-09-2146智能
- OrcaOrca: OrcaCyber Zero 1.02026-09-17$3.00 / $7.50 每百万 tokens · 51 tok/s
- OrcaOrca: OrcaVerify Text 1.02026-09-16$2.00 / $0.00 每百万 tokens · 829 tok/s
- OpenAIOpenAI: GPT-6 Astra2026-09-0453智能77代码
- GoogleGoogle: Gemini 3.8 Flash2026-09-0241智能76代码
- AlibabaQwen: Qwen3.8 Max (0902)2026-09-0245智能76代码
- AnthropicAnthropic: Claude Fable 5.12026-09-0153智能82代码
- TencentTencent: Hy4 preview2026-08-28$0.83 / $2.50 每百万 tokens · 47 tok/s
- AlibabaQwen: Qwen3.8 Flash2026-08-26$0.15 / $0.47 每百万 tokens · 94 tok/s
- z-aiZ.ai: GLM 5.3 Flash2026-08-2642智能72代码
2023 年 7 月,三名研究人员通过 28 种不同的攻击手法,对 GPT-4 和 Claude 1.3 运行了 32 条有害提示词。最强的单一手法——把三个攻击族系层层叠加——在 GPT-4 上攻破了该测试集的 94%,在 Claude 1.3 上是 81%。而让整个测试集被彻底攻破的,并不是更强的攻击,而是一个选择:当攻击者被允许针对每条提示词从这 28 种手法中任意挑选最有效的一种时,两个模型上的 32 条提示词全部被攻破,论文将此报告为干脆的 1.00。令人不安的解读是:越狱并不是一种会随着模型变得更聪明、行为更规范而消失的缺陷。它是提示词的一种属性,而提示词属于发出它的那个人。拒绝停止之后发生了什么——工具调用、文件读取、输出落到了某个会据此采取行动的地方——正是AI 事件档案被建立起来所要记录的那一部分。
这种表述值得精确说明,因为“越狱”被用来指代几种不同的事情,而这些差异决定了任何缓解措施究竟能起什么作用。本文讨论越狱会修改什么、实测数字实际说明了什么、为什么“它是否可被越狱”不存在按模型逐一给出的答案,以及这项技术在何处不再属于模型安全问题,而变成一个系统安全问题。
越狱是对提示词的修改,而不是对模型的修改。
模型完全保持出厂状态。不会重新训练,不会触碰任何权重,也不会应用微调。攻击者修改了请求,使遵从成为局部正确的续写,而模型被训练出的安全行为输给了它同样被训练去遵循的竞争性指令。
这一句话就排除了一大类所谓的修复方案。你无法在权重层面修补它——权重本身没有任何问题。你无法把它逐一枚举,因为提示词空间是开放的。而且你无法只检查一次,因为今天失败的技术不会是明天要尝试的那一项。你能做的是,在固定的提示词集上、针对固定的模型版本测量一个比率,然后观察当这三者中任何一个发生变化时,这个比率如何变化。
32 个提示词实验实际测量了什么
这项研究是《越狱:LLM 安全训练为何失效?》,作者为 Alexander Wei、Nika Haghtalab 和 Jacob Steinhardt,于 2023 年 7 月以 2307.02483 发布到 arXiv。其测试集包含 32 条有害提示——一半取自已发表的 GPT-4 评估,一半改编自已发表的针对 Claude 的红队测试工作——其结果衡量标准很直接:当回复既有害又与原始请求切题时,该案例就被评为成功。任何拖延、转移话题或回答另一个问题的回复都不计入。
结果中有两个特性比任何单独一行都更有用。第一个是攻击在不同模型之间的迁移有多么不均衡。AIM 角色扮演对 GPT-4 得分为 0.75,对 Claude 1.3 为 0.00。少样本 JSON 为 0.53 和 0.00。与此同时,Base64 编码则是反向的不均衡——在 GPT-4 上为 0.34,在 Claude 1.3 上为 0.38——而干扰项分别落在 0.44 和 0.47。一项供应商显然已针对性训练过的技术,在该模型上表现为零分,且完全无法说明相邻模型的情况。
第二种情况是不同方法族组合在一起时会发生什么。前缀注入加上拒绝抑制再加上 Base64,对 GPT-4 得到 0.56,对 Claude 1.3 得到 0.66。加入风格注入后,分别提升到 0.69 和 0.84。再加入网站内容生成和格式约束后,分别提升到 0.94 和 0.81。叠加就是全部诀窍:每一层都是模型被训练去做的事情,而组合起来后,就不存在任何 token 位置会让拒绝成为更自然的续写。

表格里的模型已经有三年的历史,不再是任何人正在部署的模型。数字不是重点,形态才是。表格中的每一种机制在之后的每个模型中依然存在,因为其中没有任何一个是 GPT-4 或 Claude 1.3 里的 bug——它们是指令遵循与安全训练相互作用的结果。

安全培训失败的两种方式
论文的解释异常清晰,而这正是值得记住的部分:失败模式共有两种,表中的每一次攻击都是其中之一的实例。
目标冲突指的是模型的能力与安全目标指向不同方向时出现的情况。指令遵循是一种能力。当请求被包装成“拒绝就会违反模型被强烈训练去遵守的指令”时,模型会倾向于以该指令为准来解决冲突。前缀注入是最简单的版本:告诉模型其回复必须以“Absolutely! Here's”开头,那么最初的几个词元就已经成为一种承诺,使拒绝变得自相矛盾。拒绝抑制则从另一侧攻击同一处接缝,通过添加格式规则来禁止写出拒绝所必需的那种句子。
泛化不匹配指的是:当安全训练覆盖的输入分布很窄,而模型的通用能力并不局限于此,就会出现这种问题。模型在预训练期间学会了 Base64,能够很好地遵循编码后的指令。而安全训练主要接触的是自然语言请求,从未教会它识别出编码后的请求仍然是一个请求。同样的失败也出现在去元音、ROT13、黑客语(leetspeak)、载荷拆分和干扰任务上:每一种都是能力可以泛化到、但安全行为却无法泛化到的格式。
一旦你有了这两个类别,这些攻击就不再像一堆杂七杂八的伎俩,而开始像两个共享同一根因的家族——这也是它们为何能组合得如此之好的原因。一个抑制拒答并将意图隐藏在编码中的提示词,是在同时利用这两种失效模式,而 0.94 就是这种情况的样子。
为什么对于“是否可被越狱”没有按模型分别给出的答案
在这个领域里,最常见的查询形态是一个模型名后面跟着“越狱”这个词。但这是错误的分析单元,原因就是上面的表格。成功至少同时取决于五件事:基座模型的能力、它接受过什么安全训练以及在哪个分布上接受训练、提示格式、采样设置,以及攻击者愿意投入多少次尝试。
最后那一点值得单独用一句话说明。按每个提示只尝试一次测得的成功率,与按“28 次中取最佳”测得的成功率,并不是同一种测量;而论文中的自适应结果——在两个模型上都是 1.00——属于后一种。任何引用越狱成功率却不说明指的是哪一种的人,等于没有引用任何可用的东西。现实中防御要问的问题不是“它能不能被攻破”,而是“需要多少次尝试,以及我的技术栈里是否有任何东西会注意到这些尝试”。
由此产生两个实际后果。一个今天能抵御你提示集攻击的模型,可能在版本升级、安全层变更或服务端配置变更后不再具备抵御能力——因此结果只对受测的那个构建版本有效,这也是为什么没有版本号和日期的测试结果算不上结果。而同一套提示集对两个模型进行测试,告诉你的只是你的技术栈对哪一个更容易被攻破,而不是哪一个更安全。
越狱不是什么:消融(abliteration)
这两者经常被混为一谈,因为最终都是模型产生了它被训练不该产生的输出。它们并不是同一种改动,而这一区别正是“你可以添加的控制”与“你无法添加的属性”之间的区别。
• 越狱——一种提示词层面的编辑。权重未变。拒绝方向仍然存在于模型中;只是请求被重新编排,使其他行为压过了它。还原提示词,该行为也随之还原。
• Abliteration—— 一种权重层面的编辑。系统会先识别出“拒绝方向”(通常是激活空间中的某个方向),再将其从模型的权重中投影剔除,从而使模型对这类请求完全不再产生拒绝。这是对模型产物的永久性改动,也正是为什么经过 abliteration 的检查点,与配上巧妙提示词的同一基础模型表现不同。该编辑的具体机制详见我们关于 abliteration。
运维层面的差异比术语本身更重要。越狱是一个运行时事件:它随请求一同到来,可以像任何其他请求一样被计数、限流、过滤和记录。而一个被“消融”(abliterated)的模型则是一个供应链事件:在你拿到它之前,那道控制就已经被移除了,再多的提示层监控也无法把它找回来。如果你的威胁模型是“有人会试图说服模型”,那你属于第一类;如果是“有人会给我送来一个已经去掉拒绝能力的模型”,那你属于第二类,而唯一真正有效的控制手段是来源追溯——也就是弄清楚这个端点实际服务的到底是哪个检查点。
越狱也不是提示注入
第三个容易被混为一谈的术语是提示注入,而区分的关键问题在于攻击者是谁。越狱来自用户,用户试图让模型输出其被训练为不予提供的内容。提示注入则来自内容——检索到的文档、网页、工具返回结果——其中携带了开发者从未写过的指令,而且无论用户是否怀有恶意,它都能奏效。同一个模型可能对其中一种免疫,却对另一种门户大开,因为它们的防御发生的位置不同:越狱发生在模型的输入和输出处,注入则发生在数据与指令之间的信任边界处。
究竟是什么降低了这一比率?
这里的一切都不是保证,任何相反的声称都只是推销话术。以下是一组能改变这些数字的控制措施,按投入产出比从高到低排列。
• 假设提示层会失效。任何依赖模型拒绝的控制,距离归零都只差一个自适应攻击者。要假设请求最终会通过来设计,并把控制放在危害会发生的地方。
• 限制成功越狱所能触达的范围。 被越狱的助手的影响范围取决于其工具、凭据和检索范围所允许的边界。对工具实施最小权限,并对检索按租户限定范围,比任何提示词过滤器都更可靠地降低成功越狱的价值。
• 评判输出,而不是提示词。输出侧分类器能捕获你从未见过的类别族,因为它们看的是实际产出的内容,而不是内容是如何被要求的。它们也是当输入格式新颖时唯一仍然有效的层级——而按照不匹配泛化的失效模式,这种情况在大多数时候都会出现。
• 将系统提示视为配置值,而不是安全边界。它只是与攻击处于同一上下文窗口中的文本。它会提高一次尝试的成本;但并不能阻止尝试。
• 让这些尝试变得可见。 防御者相对于自适应攻击者的唯一优势在于,攻击通常会重复发生。速率限制、重复检测和日志记录会将一次 28 次尝试的搜索变成一个你能看到的事件,而不是 28 个单独看起来都没问题的请求。
• 每次模型变更时都要重新测试。版本锁定加上固定的提示词集合,才能把“我们测过一次”变成一个可供对比的数字。没有版本锁定,对比就毫无意义。
如何测量你自己的目标
如果目标是一个可据以行动的数字,就固定论文所固定的三个变量:提示词集、模型版本和尝试次数。使用同时包含这两种失败模式的提示词集——让拒绝显得尴尬的指令,以及隐藏请求的编码——因为只包含其中一种的集合,会美化对另一种模式较弱的模型。保守评分:有害且切题,而不仅仅是语气不当。并将结果报告为相对于明确说明的尝试次数的比率,绝不要报告为“是”或“否”。
当有多个候选模型参与时,只有让同一组提示词分别运行在每个模型上,比较才成立,而这也正是底层管道比方法论更重要的唯一地方。在我们路由的多个模型上运行一次评估,就把按供应商逐一处理合同和客户端的工作从这项任务中去掉了;提供商目录价格以零加价透传,因此运行成本就是提供商收取的费用,不会多一分。评估衡量的是模型的行为,而不是我们的行为——路由改变的是由哪个模型来回答,并不会让其中任何一个模型更频繁地拒绝。
记录从何处继续
测得的成功率告诉你提示层有多难被攻破。它不会告诉你,当有人在生产环境中将其攻破时发生了什么,而第二个问题才决定这个成功率是否重要。产生粗鲁段落的越狱是内容审核问题。产生工具调用的越狱则是安全事件,而区别完全在于系统让输出触达了什么。

该档案是现场记录:智能体实际做了什么,每条记录都有来源,并附有是否有人受到伤害的判定。对照越狱测量来解读,它回答了测量本身无法回答的问题——提示所跨越的边界,是否是下游任何环节所依赖的边界。如果是,那么这次越狱就是一项安全发现,相应控制措施应归入工具权限。如果不是,那么这次越狱就是一项内容结果,诚实的做法是把它作为内容结果归档,而不是将其夸大为漏洞。
结尾的说明才是证据所支持的那一个。越狱不会靠更好的模型得到解决,因为失效模式是结构性的:指令遵循是一种能力,而安全训练是一种范围更窄的能力,二者之间的差距正是本文中每一种攻击所处的位置。可以解决的是后果——确保一个不再拒绝的模型仍然做不了太多事情。
