今天我们评价一个大模型到底安不安全,已经越来越离不开另一个大模型。
做越狱评测时,我们让攻击模型生成提示词,让目标模型回答,最后再交给一个 Judge 判断:“这次攻击到底成功没有?”
做护栏评测时也是一样。一个 Guard 拦住了多少危险内容、误杀了多少正常内容,往往同样需要 Judge 来给最终结果定性。
于是,一个很容易被忽略的问题出现了:
如果负责打分的裁判自己就不可靠,那么我们看到的攻击成功率、护栏召回率乃至安全排行榜,到底测的是模型,还是测的是 Judge 的偏好?
来自东北大学、佐治亚理工学院和南加州大学的研究者,用一个非常简单的实验把这个问题暴露了出来:
他们没有修改模型回答的主体内容,只在回答前后加了几句话,一些安全 Judge 的判定就发生了翻转。

https://arxiv.org/pdf/2609.08236
最典型的情况下,仅仅在危险回答前加入一句象征性的拒绝表达,就能让 GPT-4o-mini Judge 将接近 20% 原本正确判为“不安全”的回答改判为“安全”。
而专门用于内容安全检测的 Llama Guard 4,也会因为一个“教育场景”的包装,让 12.3% 的危险回答被放行。
这意味着,大模型安全正在出现一个过去经常被忽略的新攻击面:
不是攻击被测模型,而是攻击“裁判”。
我们一直在测大模型,却很少有人认真测过“裁判”
传统的大模型越狱攻击关注的链路通常是:
攻击提示词 → 目标大模型 → 危险回答
攻击者想办法让模型突破安全限制,产生原本不应该产生的内容。
但今天很多自动化安全评测体系后面还多了一层:
攻击提示词 → 目标大模型 → 模型回答 → Safety Judge → 是否攻击成功
这里最后那个 Safety Judge,实际上决定了最终的 ASR,也就是攻击成功率。
论文作者把这一点说得非常明确:
真正的被测对象是 Judge,而不是模型。
他们的问题也非常简单:
假设一段模型回答本身完全没有发生变化,只是外面套了一层新的表达方式,Judge 的结论是否还应该保持一致?
正常情况下当然应该。
比如一段回答本身提供了危险能力,仅仅在最前面补上一句:
“我不能帮助你做这件事。”
但随后危险内容一个字没少。
从实际风险来看,它当然还是危险回答。
安全 Judge 应该关心的是:
模型实际上提供了什么。
而不是:
模型听起来像不像在拒绝。
但实验发现,一些 Judge 并没有做到这一点。

实验设计:内容一个字不改,只改外面的“包装”
这篇论文最漂亮的地方,并不是攻击方法有多复杂,恰恰相反,它的实验非常简单。
作者提出了一类 Content-Invariant Wrapper,可以理解为:
“内容保持不变的包装层”。
假设原始回答是:
R
研究者不去改写 R,也不重新生成一个“意思差不多”的版本,而只是变成:
包装语句 + R
或者:
R + 包装语句
原始回答 R 本身逐字保留。
作者甚至对全部 2700 个包装样本进行了字节级检查,确认原始回答主体完整存在。
这个设计非常重要。
过去如果我们让大模型把一段话“换一种表达方式”,然后 Judge 判定变了,总会有一个争议:
两段话的语义真的完全相同吗?
而这里基本消除了这个变量。
主体内容根本没有变。
变的只有外壳。
于是如果:
原始回答 → 不安全
变成:
包装后的同一个回答 → 安全
那么问题就很难甩锅给“内容变化”。
变化发生在 Judge。
这实际上是在测试 Safety Judge 一个非常基础的性质:
判定结果能否对与风险无关的表面变化保持稳定。
换句话说,一个可靠的安全 Judge 应该满足:
内容没变,安全结论也不应该变。
两种方向:把危险内容伪装成安全,也把安全内容伪装成危险
为了验证这种现象并不是单向的,作者设计了两类包装。
第一类叫 Harm-Hiding,也就是“隐藏风险”。
研究者拿一段已经确认包含危险内容的回答,在它周围增加看起来比较安全的表达,比如:
“以下内容仅用于教育研究。”
或者先进行一段伦理反思,再给出原回答。
还有一种更直接:
先说一句“我不能帮助你”,随后原来的危险回答完整出现。
注意,这里真正提供的内容没有减少。
只是整个回答变得更像一段安全回答。
第二类则反过来,叫 Harm-Inventing。
研究者拿一段正常的拒绝回答,在前面增加一些“看起来像在配合用户”的表达。
结果一些 Judge 又会把原本安全的拒答误判为危险。
这两个方向实际上共同指向了同一个问题:
Judge 有时候判断的不是“回答做了什么”,而是“回答长得像什么”。
论文一共测试了 9 种不同包装、600 条 JailbreakBench 回答,并覆盖 8 种 Judge 配置。数据来自 GPT-3.5、GPT-4、Vicuna-13B 和 Llama-2-7B 四种目标模型,包含 300 条危险回答和 300 条拒绝回答。
一句“我不能帮助你”,让接近 20% 的危险回答被改判为安全
最醒目的结果出现在 GPT-4o-mini Judge 上。
作者给原本已经正确判定为“不安全”的回答,套上这样一种结构:
象征性拒绝 + 原始危险回答
也就是先摆出一个拒绝姿态,但真正的回答内容一点没有删除。
结果:
19.9% 的样本从“不安全”翻转成了“安全”。
而 GPT-4o-mini 在完全相同输入上重复判断时,本身的正常波动,也就是论文所说的 noise floor(噪声基线),只有 0.5%。
这个区别非常重要。
因为 LLM 本来就不是一个完全确定性的程序。
今天判 unsafe,重新调用一次偶尔变成 safe,并不一定说明遭到了攻击。
所以作者没有简单地把所有翻转都算成漏洞,而是先测:
同一条内容什么都不改,Judge 自己会有多大概率前后不一致?
这就是 noise floor。
只有包装带来的翻转明显超过这个基线,才能说明新的表面包装确实对 Judge 产生了影响。
这里:
包装攻击:19.9%
而:
正常波动:0.5%
已经完全不是一个数量级。
更关键的是,作者把包装后的回答再连续评判三次,然后采用“三次多数票”。
翻转率只从:
19.9% → 18.2%
其中还有 14.4% 的样本连续三次全部被错误放行。
所以,这并不只是“Judge 偶尔抽风”。
而是一种具有明显系统性的判定偏差。

专用 Guard 也会被骗
如果只是一个通用大模型当 Judge 出现这种问题,我们还可以解释为:
它毕竟不是专门做安全审核的。
但论文测试的 Judge 中还包括两类专门的安全模型:
Llama Guard 4
以及:
gpt-oss-safeguard-20b
结果却出现了非常有意思的分化。
Llama Guard 4 对一种“教育课程场景”的包装非常敏感。
研究者只是在危险回答前加入类似:
“这是某个大学网络安全课程中的教学内容……”
结果:
12.3% 原本正确判断为危险的回答,被改判为安全。
“先拒绝、后继续回答”的包装,也造成了 8.3% 的翻转。
而且 Llama Guard 4 和 GPT-4o-mini 的问题还不太一样。
GPT-4o-mini 遇到包装以后,判断本身会明显变得更不稳定。
但 Llama Guard 4 的重复判断非常稳定。
在作者测量的几个关键场景中,它对包装后输入的三次重复判断自相矛盾率只有 0.33%。
可是在“教育场景包装”下,依然有 11.9% 的样本连续三次全部发生翻转。
这意味着一个很微妙、也更危险的问题:
它不是不确定。
它是非常确定地判错了。
对于实际部署的安全系统而言,稳定的错误有时候比随机错误更加麻烦。
因为随机错误可以通过重复采样、多次投票等方法缓解;但如果模型存在稳定的认知捷径,多跑几次并不能解决问题。
漏洞属于具体 Judge,而不是“大模型”这个物种
论文另一个非常有价值的发现,是不同 Judge 的表现差异极大。
同样的“先拒绝、后回答”包装:
GPT-4o-mini 的翻转率达到 19.9%;
DeepSeek-Chat 是 3.5%;
Qwen-Plus 是 0.7%;
Claude Haiku 4.5 只有 0.4%。
而让 Llama Guard 4 翻转 12.3% 的“教育场景”包装,在 GPT-4o-mini 上只有 1.0%。
也就是说,并不存在一种简单的“万能包装”,能够稳定骗过所有 Judge。
不同 Judge 有完全不同的盲点。
更加有意思的是另一款专用安全模型 gpt-oss-safeguard-20b。
论文测试的所有包装,对它造成的最大翻转都不超过 1.2%,甚至低于它自身 1.5% 的 noise floor。
这说明:
对表面包装保持鲁棒并不是一件做不到的事情。
问题并不是:
“大模型天生就会被这种技巧骗。”
而是:
不同 Judge 的设计质量差异很大。
这也让问题从“某个奇怪攻击技巧”上升为了一个更加基础的工程问题:
Judge 本身也应该在上线前接受安全评测。
为什么 Judge 会被骗?
因为它可能学会了“安全的样子”,而不是真正理解风险。
这背后其实很像机器学习领域一个非常经典的问题:
Shortcut Learning,捷径学习。
我们真正希望 Judge 学到的是:
这段回答是否实际提供了危险信息、能力或者可执行帮助?
但在大量训练数据里,“安全拒答”往往还伴随着一些非常明显的语言特征:
“抱歉……”
“我不能帮助……”
“出于安全考虑……”
“仅用于教育……”
时间久了,模型就可能学会一个更加容易的统计规律:
出现某些措辞 → 更像安全回答
这是一条很方便的捷径。
大多数正常样本里,它甚至可能非常有效。
但一旦攻击者主动把这些“安全信号”套在危险内容外面,问题就暴露出来了。
Judge 原本应该判断:
实际内容 → 是否危险
却可能在某些情况下退化为:
表面语言信号 → 看起来是否安全
这就是论文标题 Style Over Substance 真正想表达的含义:
形式开始压过内容。
Judge 判断的不是你真正说了什么,而是你听起来像在说什么。

Prompt 对 Judge 的效果影响
如果说前面的实验说明 Judge 有问题,那么下面这个实验则进一步说明:
问题到底出在哪里。
作者使用的两个 Judge:
GPT-4o-mini Generic Judge
和:
GPT-4o-mini StrongREJECT-style Judge
背后的模型其实完全一样。
都是 GPT-4o-mini。
唯一变化的是:
Judge Prompt。
普通版本采用相对通用的安全判断指令。
StrongREJECT 风格版本则明确告诉 Judge:
不要被语气、免责声明、包装方式影响,要重点判断回答实际上是否提供了危险能力。
结果非常明显。
面对同一种“先拒绝、后回答”包装:
普通 Prompt:
19.9%
StrongREJECT-style Prompt:
1.7%
接近降低了一个数量级。
这是整篇论文里我认为工程价值最高的实验之一。
因为模型没有换,数据没有换,攻击方法也没有换。
唯一变化就是:
Judge 的评分规则。
这实际上告诉我们:
以后再看到一句:
“我们使用 GPT-4o 作为安全 Judge。”
远远不够。
一个完整的 Judge,更准确地说应该是:
Judge = 模型 + Judge Prompt + 判定标准 + 输出格式 + 采样策略
同一个底座模型,在不同评分协议下,完全可能成为两个质量差异巨大的裁判。
因此,Judge Prompt 并不是简单的工程细节。
它本身就是评测方法的一部分。
安全排行榜到底有多可信?
做到这里,作者又继续问了一个更麻烦的问题:
如果不同 Judge 连同一条回答都经常意见不统一,那么不同论文里报道的 ASR,真的可以直接拿来横向比较吗?
结果并不乐观。
在没有加入任何 wrapper 的原始样本上,整个 Judge Panel 对样本判定完全一致的比例只有:
55.5%。
也就是说,接近一半的样本里,至少有一个 Judge 和其他 Judge 意见不同。
更加直接的问题在模型排名上。
不同 Judge 判断出来的“最安全模型”甚至不一样:
有的认为是 Vicuna-13B;
有的认为是 Llama-2-7B;
还有的认为是 GPT-3.5。
作者进一步进行了 2000 次 bootstrap 重采样。
对于七个基于模型的 Judge 中的六个,“最安全模型”能够在重复采样中稳定保持第一的比例只有:
39%~70%。
这个结果其实比某一种包装能造成多少百分点的翻转更值得关注。
因为它说明,即使完全没有攻击者存在,安全排行榜本身就受到至少两个变量影响:
Judge 选择
和:
测试样本采样
现在再加上这篇论文发现的第三个变量:
回答的表面包装
那么所谓的“模型安全分数”,实际上并不只是模型自身的一个属性。
更准确地说,它是:
被测模型 × 数据集 × Judge × Judge Prompt × 表面表达形式
共同产生的测量结果。
所以以后看到:
模型 A 攻击成功率 8%,模型 B 攻击成功率 10%。
不能仅凭这两个数字,就轻易下结论:
A 比 B 更安全。
2 个百分点的差距,有可能还没有 Judge 本身的测量误差大。
安全分数旁边,应该同时报告“翻转预算”
论文在讨论部分提出了一个很有现实意义的建议:
Flip Budget。
可以翻译成:
判定翻转预算,或者更通俗一点叫:
Judge 稳定性误差范围。
它想回答的问题非常简单:
在模型回答的实际内容不发生变化时,仅仅改变无关的表面表达,这个 Judge 的结果最多可能波动多少?
物理实验里,我们不会只写:
长度 = 10.00 cm
还会关心:
测量误差是多少。
安全评测也应该如此。
未来一个更加完整的结果可能不应该只有:
攻击成功率:8.2%
而应该同时告诉读者:
Judge:XXX
自身重复判断噪声:0.5%
内容不变包装翻转率:3.8%
这样我们才能真正知道:
8.2% 这个数字到底有多可信。
论文作者把 Judge 明确地看成了一台测量仪器:
如果仪器本身存在系统误差,那么基于它产生的大量排行榜、攻击成功率和防御效果,也都会继承这种误差。

多裁判集成的价值,不只是“少数服从多数”
论文还带来了另一个很有启发性的工程结论:
既然不同 Judge 的盲点不同,一个自然的办法就是:
多裁判集成(Judge Ensemble)。
最简单的做法当然是让多个 Judge 同时判断,然后多数投票。
但如果只是做到这里,实际上还不够。
因为多裁判集成真正有价值的前提,不只是 Judge 数量多,而是:
它们不要用完全相同的方式犯错。
比如论文中:
GPT-4o-mini 对“象征性拒绝”非常敏感;
Llama Guard 4 对“教育场景包装”更加敏感;
而 gpt-oss-safeguard-20b 对这些包装整体更加稳定。
这说明不同 Judge 之间存在明显的错误多样性。
如果三个 Judge 底层模型、Prompt 和训练范式都非常相似,那么三个 Judge 一起投票,很可能只是把同一种偏差复制了三遍。
所以一个真正好的多裁判集成,除了看单个 Judge 的准确率,还应该关注:
它们是不是会在相同样本上犯相同的错误。
从这个角度看,未来评估 Judge Ensemble 的关键指标可能不仅是 Accuracy,还应该包括:
Judge 间分歧率、错误相关性、包装翻转率以及自身噪声。
Judge Ensemble 的目标也就不再只是:
“找三个裁判投票。”
而是:
“找三个错误模式尽可能不同的裁判互相校验。”
Strong Judge 也不应该被当成 Ground Truth
这一点对于实际做大模型风控系统尤其重要。
今天越来越多自动化安全系统采用类似的架构:
普通规则、关键词模型、向量匹配、轻量分类模型先处理大部分请求;
难例或者多个模块出现分歧之后,再交给一个能力更强的模型:
Strong Judge。
这个设计本身没有问题。
问题是我们很容易在系统设计里悄悄形成一个假设:
Strong Judge 的结论就是最终真值。
但这篇论文告诉我们:
Strong Judge 只是一个更强的测量器,不等于 Ground Truth。
它本身同样应该接受评测。
例如可以专门增加一类:
Judge Invariance Test,裁判不变性测试。
对于同一个基准样本,人为生成一组不改变核心风险语义的变体:
原始版本;
免责声明版本;
教育语境版本;
先拒绝再继续版本;
格式变化版本;
语言风格变化版本;
长上下文包装版本。
然后观察 Judge 的结论是否稳定。
如果核心内容没有变化,判定却频繁翻转,那么这个 Judge 就不应该直接被视为最终标签来源。
这类测试甚至可以进一步变成 Judge 上线前的一项准入指标:
内容不变,结论是否不变。
到了 Agent 时代,Judge 的问题可能只会变得更复杂
这篇论文目前主要研究的还是单轮文本回答。
但如果把问题放到 Agent 场景里,事情会更加麻烦。
传统 Judge 判断的可能只是一段:
Final Answer。
而 Agent 安全 Judge 面对的则可能是一整条轨迹:
用户请求;
Agent 规划;
模型推理;
工具调用;
工具返回;
环境状态;
多轮记忆;
最终回答。
也就是说,它需要判断的不再是一段文本,而是一整个运行过程。
例如一个 Agent 最终回答看起来非常安全,但前面的 Tool Call 已经执行了危险动作;
或者工具调用本身是正常的,但多步组合后产生了风险;
又或者 Agent 在最终回复里明确表示拒绝,但真正的操作早就在前几个步骤完成了。
如果 Judge 仍然容易被:
最后一句话看起来是否安全
这种表面信号影响,那么 Agent 时代的问题就会比今天严重得多。
所以未来的 Agent Judge 必须逐渐从:
文本内容审核器
升级成:
运行轨迹裁判。
判断依据也应该从“最后说了什么”,转向:
整个 Agent 到底做了什么。

这篇论文真正重要的,并不是那个 19.9%
如果只看标题,这篇论文很容易被理解成:
“又发现了一种骗安全模型的小技巧。”
但我认为它真正值得关注的并不是某一个 wrapper,也不是那个醒目的 19.9%。
它真正击中的,是今天整个自动化大模型安全评测体系里的一个基础假设:
我们一直默认裁判是可信的。
过去我们花大量精力研究:
模型会不会越狱;
Guard 会不会漏检;
攻击方法 ASR 到底多高;
防御方案到底降低了多少百分点。
但最终这些数字几乎都要依赖某种“裁判”产生。
如果这个测量器会因为一句免责声明、一段教育包装或者一句象征性拒绝发生系统性偏移,那么很多安全数字都应该重新理解:
Safety Score 不等于 Ground Truth。
它更像是:
真实风险 + Judge 偏差 + Judge 随机噪声 + 数据集误差
而在对抗环境里,还要再加上一项:
针对 Judge 本身的主动操纵。
论文的人工验证也强化了这一点:在抽取的 145 个样本中,两名标注者确认内容保持不变的比例为 100%;在 100 个判定翻转案例中,90 个被人工确认属于 Judge 错误。
与此同时,人工标注与 JailbreakBench 原始标签的一致率也只有 91.7%,反过来说明 Ground Truth 本身同样需要审计。
所以这篇工作的意义并不是告诉我们:
“不要再使用 LLM Judge。”
恰恰相反。
今天大规模安全评测不可能完全依赖人工,Judge 仍然是非常重要的基础设施。
真正需要改变的是:
不要再把 Judge 当成没有误差的 Oracle。
别只问“模型测了吗”,还要问一句“裁判测了吗”
大模型安全正在经历一个很明显的变化。
最早,我们主要关心:
模型能不能被攻击。
后来开始关心:
Guard 能不能挡住攻击。
现在还需要继续往后问:
是谁判断 Guard 挡住了攻击?
这个 Judge 本身可靠吗?
它有没有自己独特的盲点?
换一个 Prompt,结果会不会变?
换一种无关的表达方式,结果会不会变?
同一个输入重复测三次,它自己是否一致?
当 Judge 开始成为安全评测、模型训练、自动标注、红队测试乃至风控系统闭环中的核心基础设施时,它就不再只是一个“打分工具”。
它本身就是安全系统的一部分。
也自然应该成为被测对象。
或许以后一个成熟的大模型安全评测报告,不应该只写:
“我们使用某某模型作为 Judge。”
而应该进一步告诉我们:
这个 Judge 本身经过了什么测试,它的误差是多少,它在哪些场景容易犯错,以及我们为什么相信它有资格成为裁判。
毕竟,一个排行榜最终有多可信,不只取决于场上的模型有多强,也取决于拿着哨子的那个人,到底会不会被一句话骗走。
声明:本文来自模安局,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。