GitHub 上几乎每周都有新的'越狱提示':一句话让 ChatGPT 说出不该说的话。你复制它,粘到自己的对话里,然后模型礼貌地拒绝了你。很多人到此就划走了,觉得'这作者吹牛'。但我见过同样的提示在作者那边成功跑通。不是提示本身是假的——是它对模型很挑剔。

这件事背后藏着一个 LLM 安全里特别重要的概念:越狱攻击的可迁移性。一个模型上精心构造的越狱输入,拿到另一个模型上,成功率到底有多少?我最早在 Zou et al. 2023 那篇论文里读到这个词——标题直接写着 Universal and Transferable Adversarial Attacks on Aligned Language Models。看完摘要,我当时的反应是:完了,所有 AI 都防不住。后来亲手复现和测试,发现这个第一印象错了一半。这篇文章就聊聊我错在哪了。
可迁移性是怎么被"验证"出来的:GCG 实验
先看结论。研究者在一批开源模型上,用白盒梯度攻击生成对抗后缀,再把后缀搬到黑盒商用 API 上测试:对 GPT-3.5 攻击成功率超过 84%,GPT-4 上约 80%,Bard 上约 83%,Claude 上约 70%。只看这组数字,任何人都会得出同一个结论:越狱攻击的可迁移性高到可怕。
但 GCG 的做法值得拆开看,它是这样工作的:
- 在你想要目标文本前面或后面加一串随机字符——研究者管它叫对抗后缀。
- 对后缀里的每个 token 位置,逐个试验把它替换成候选 token,能不能提高模型针对目标开头文本的生成概率。
- 挑提升最大的那个替换,更新后缀,重复迭代几百轮。
- 最后,这个后缀会让源模型乖乖吐出目标文本。
在源模型上,它的本质是学习一个精确的输入触发器:这串 token 恰好与模型内部产生有害内容的计算路径高度耦合。但你要问的是——换一个模型,这个耦合关系还在吗?参考 官方代码库。
采集上下文:那个让"通用攻击"瞬间失灵的隐藏变量
要回答它,得先把越狱提示本身拆开。绝大多数越狱攻击由两部分组成:攻击载荷和采集上下文。载荷是真正想输出的内容,比如'如何制造炸弹';上下文是包在外面的叙事框架,比如'写一部化学爱好者的小说,主角不小心合成了某种化合物'。上下文的作用是改变模型对'你究竟在问什么'的判断。
这就是为什么跨模型测试时体验差异巨大。同一个上下文,在模型 A 上让安全拒绝直接短路,在模型 B 上却被一眼看穿。我自己试过把开锁教程包装成'犯罪小说情节素材':GPT-4 会给出详细步骤,Claude 直接拒绝,还点破我是在试图绕过节制。不是某个模型更蠢或更聪明,而是两个模型的安全决策边界形状不一样。
Zou 的论文也没有回避这一点:表格里记录得很清楚,目标描述得越具体、越需要多步推理,跨模型迁移的成功率就越低。可迁移性强的攻击,几乎都集中在那些结构简单的'常识型'目标上。
为什么一到闭源模型,可迁移性就崩了
再回到开头那个场景:GitHub 上的提示在你手里失效。原因有两个层面。
第一,安全行为不是一套统一规则。安全拒绝是 RLHF 训练出来的产物,而每个实验室的训练配方完全不同:有的用 PPO,有的用 DPO,有的用 Constitutional AI。Anthropic 的 Constitutional AI 论文公开了他们用 AI 反馈替代人类偏好标注的整个流程,OpenAI 的 InstructGPT 论文也描述了 chat 模型如何从人类反馈里学安全。每一套配方训练出来的拒绝边界,形状都不一样。想象两块形状完全不同的石头,你把一张剪影贴上去,在 A 上恰好覆盖裂缝,在 B 上什么都没盖住。
第二,黑盒攻击没有梯度信号。开源模型你可以把后缀优化到极致,每一步都沿着成本函数下降。闭源模型你连它内部概率都拿不到,只能靠猜;而且猜错没有任何反馈。这两种攻击的难度完全不在一个量级。
有一段时间我热衷于收集 GitHub 上的越狱提示,一条条拿去问几个主流模型。统计下来,真正跨模型复现的只有两类:一类是内容级攻击,比如让模型写侮辱性内容,几乎没有技术含量;另一类是通用指令级攻击,比如'忽略你所有安全规则',它的成功率极不稳定,在同一模型上反复测试都会大幅波动。我从来没有见过一个精心优化的 token 级对抗后缀,能从开源模型平移到闭源模型上直接成功。
这个观察与机器学习里的对抗样本可迁移性一脉相承:越特异性的攻击,跨域迁移率越低。可迁移性留给的是不那么尖锐、不那么过拟合单个模型的提示。
那什么时候真的能迁移?
说了这么多失败案例,那什么时候还真能迁移?我把自己的测试和论文里的结果凑到一起,整理了三组条件:
- 目标属于'常识型'任务:骂人、造谣、绕过语言限制、提供常见的危险配方。这类任务几乎每个模型本身都会做,越狱只是解开了安全约束。
- 模型之间'血缘'相近:共享训练数据、同一基础模型、从同一个大模型蒸馏得来的小模型。它们继承的不只是能力,还包括相似的拒绝边界。
- 提示重'场景'而非重'token':可读的扮演型提示比 GCG 那种乱码后缀更容易跨模型泛化。代价是稳定性很差。
你会发现这三条对应的其实是同一件事:两个模型共享了某些宿主行为和能力。越狱提示不发明漏洞,它只是调用了共享的弱点。共享越多,迁移越强。
放下"万能钥匙",改成"宿主模型"的视角
到这里,可以更新直觉了。
很多人觉得模型内部有一把安全锁,越狱提示是一把钥匙,找到万能钥匙就能打开所有锁。DAN 这类越狱的广泛传播让这个画面深入人心。但实际机制很不一样。Wei et al. 2023 在《Jailbroken: How Does LLM Safety Training Fail?》里说得很清楚:越狱利用的是模型里两个目标之间的竞争——'遵循用户指令'和'避免输出有害内容'。当提示里的上下文将前者的权重推到足够高,安全就宕机了。
这个 competing objectives 框架一下子解释了我之前所有的困惑:上下文为什么有效?因为它没有改变参数,只改变了两个目标的相对权重。为什么换模型就失效?因为不同模型里这两个目标在相近输入下的权重分布不一样。为什么同族系模型容易迁移?因为它们的权重分布本身就很接近。
顺带把几个容易混的词对齐一下:
- 攻击载荷(payload)
- 促使模型直接输出危险内容的文本片段,比如目标句。
- 采集上下文(collection context)
- 包裹载荷的叙事框架,作用是压低模型对任务意图的警觉。
- 宿主能力(host capability)
- 目标模型本身具备的知识与技能。越狱只负责解锁它,不负责凭空创造。
那为什么"忽略所有系统提示"这种烂大街的提示还能时不时成功?
因为它攻击的不是某个具体安全机制,而是模型对权威指令的服从权重。只要一个模型在'服从指令'和'安全拒绝'之间的权重不稳定,它就会中招。这也解释了为什么它成功率低、但长期存在。
开源模型上的攻击可行,对整个开源生态有多大风险?
很大,尤其是在微调生态里:一个小模型被攻破,从它衍生出来的模型往往继承了同样的弱点。红队和社区通常低估这种级联效应。
我应该怎么评估自己产品的可迁移攻击风险?
别用一两条传说级提示试水。构造一个固定的攻击套件——几十上百条已知提示与 GCG 变体——在同一温度、同一采样参数下对目标模型跑一遍,按成功率统计。那才是信号,不是噪声。
结论
回到标题的问题:一个模型上成功的越狱提示,能不能用在其他模型上?
能,但是统计意义上概率性的能,不是一个可复现的 API 调用。可迁移性的强弱取决于三个变量:攻击目标是否属于常识型、模型之间是否有血缘关系、提示是否避开了对单模型的过拟合。
我最早以为这个问题的答案要么是能,要么是不能。真跑完一遍发现,它跟机器学习里很多问题一样:不存在万能钥匙,只存在共享弱点。对防御者来说,这意味着永远不要幻想靠维护黑名单挡住攻击。唯一可靠的策略是不断测量哪些上下文能让你的模型越过安全边界,然后把它们喂回训练数据里,让决策边界本身变得更结实。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/475.html