两军交锋,一方如果每次进攻都被严密挡回去,看起来防守固若金汤。但从另一个角度看,每一次成功防守,其实也在向对手传递信息:这一招不行,换一招;这个方向不对,再试另一个方向。
如果对手还能根据每一次失败不断调整策略,那么防得越认真,有时反而越像是在陪对手“练招”。
今天的大模型自动化越狱攻击,就正在面临类似的问题。
PAIR、TAP、X-Teaming 等自动化攻击方法已经不再依赖人工反复修改 Prompt,而是由模型自动生成攻击提示、观察目标模型回答、判断是否成功,再根据失败原因继续调整。
一次拒答并不能结束攻击,反而可能成为下一轮攻击的重要反馈。
哥伦比亚大学等机构提出的 PROACT 换了一种思路:既然攻击者需要根据反馈不断优化,那么防御者为什么一定要老老实实告诉它“你失败了”?
或许可以“诈败”,让攻击者以为自己已经赢了。

https://www.cs.columbia.edu/~junfeng/papers/proact-emnlp26.pdf
越安全的拒答,为什么可能越会“教”攻击者?
传统越狱防御的逻辑很直观:
攻击请求进入模型,安全机制识别风险,模型拒绝回答。
从单轮交互来看,这显然是一次成功的防御。
但自动化越狱攻击并不是只尝试一次。
一个典型攻击系统往往包含三个环节:攻击模型负责生成 Prompt,目标模型负责回答,评价模型负责判断这次攻击是否成功。如果失败,攻击模型就根据上一轮结果继续修改 Prompt,再发起下一轮尝试。
因此完整过程更像:
生成攻击 → 获取回答 → 判断失败原因 → 修改攻击 → 再次尝试。
这时候,“拒答”本身就不再只是防御结果,而成为了一种反馈信号。
攻击者每收到一次拒答,都获得了一条非常明确的信息:
当前策略无效。
论文中的一个实验非常直观。一个安全过滤器在攻击开始时已经能够拦截大约 88% 的请求,第一轮攻击成功率只有约 12%。但攻击系统不断根据这些失败反馈调整策略之后,后续攻击成功率持续上升,到第五轮时甚至能够达到接近 100%。
换句话说,一个很准确的安全系统,在持续对抗过程中可能无意中扮演了另一种角色:
攻击者的“陪练”。
每一次拒绝都像在告诉对方:
这一招错了。
再换一个。
还不行。
继续。
直到攻击者找到那条真正能够绕过去的路径。
这也是 PROACT 想解决的第一个问题:当攻击具备自动优化能力之后,防御系统不能只考虑“这一次有没有挡住”,还要考虑自己的反馈会如何改变下一次攻击。

既然“失败”会帮助攻击者,那就给它一次“假胜利”
PROACT 的思路并不复杂。
假设某一次攻击已经成功触发模型的安全机制,传统系统会直接返回:
“抱歉,我无法帮助你完成这个请求。”
攻击系统中的评价模型看到这句话,很容易判断:
攻击失败。
于是攻击继续。
PROACT 则在这里插入了一层新的机制。
当系统确认模型准备拒答时,它不再直接把拒答返回给攻击者,而是另外生成一段特殊回答。
这段回答表面上非常像一次成功的越狱:格式完整、语气肯定、似乎包含大量细节,甚至可能使用编码、符号、虚构术语等方式包装。
但是其中并没有真正有价值的危险信息。
对于攻击系统来说,它看到的却可能是:
“目标模型终于回答了。”
于是评价器给出:
攻击成功。
攻击者因此停止搜索。
这就像两军交锋时,一方故意让出一个“战果”。
对手以为防线已经被突破,于是停止继续寻找真正的缺口;但实际上,他得到的只是一个提前准备好的假目标。
PROACT 并不是单纯把攻击挡在门外,而是主动影响攻击者对战局的判断。
这也是“诈败”这个比喻最贴近它的地方。
传统安全机制追求的是:
让攻击者一直失败。
PROACT 追求的则是:
让攻击者错误地相信自己已经成功。

真正被“骗”的是攻击者的裁判
为什么这种方法能够奏效?
关键在于今天很多自动化越狱系统都存在一个重要组件:
Judge,也就是负责判断攻击是否成功的评价器。
攻击模型通常不会真正理解自己有没有获得想要的信息。它依赖 Judge 阅读目标模型的输出,再回答一个问题:
这次越狱成功了吗?
于是自动化攻击实际上依赖两个不同的标准。
一个是真实世界中的安全标准:
这段回答到底有没有真正提供危险信息?
另一个是攻击系统内部 Judge 的判断:
这段回答看起来像不像一次成功的越狱?
理想情况下,两者应该完全一致。
但现实中很难做到。
一个评价模型通常只能根据文本本身进行判断。回答格式是否完整、内容是否足够详细、是否与请求主题相关,都可能成为它判断“成功”的依据。
这就留下了一个缝隙:
有没有可能生成一段回答,让 Judge 认为攻击成功,但实际又没有泄露真正有害的信息?
PROACT 正是在寻找这样的回答。
从这个角度看,这篇论文真正“越狱”的对象甚至不是目标大模型。
而是:
攻击者自己的 Judge。
如果说传统越狱是:
修改 Prompt,欺骗目标模型。
那么 PROACT 做的事情恰好反了过来:
修改 Response,欺骗攻击评价器。
这是一种非常有意思的镜像关系。
攻击方在寻找目标模型的判断漏洞,防守方则开始寻找攻击 Judge 的判断漏洞。

PROACT 如何制造一个足够真实的“假战果”?
当然,随便生成一段乱码并不能骗过攻击系统。
如果一个越狱请求要求获得某类具体内容,而模型只返回一句毫无关联的话,Judge 很容易发现异常。
因此 PROACT 本身也需要一个生成和优化过程。
整个系统可以简化成三个模块。
首先是响应监测。
正常用户的请求仍然由目标模型正常回答,PROACT 不介入。只有当模型产生安全拒答,或者已有的输入过滤器、输出过滤器判断请求存在风险时,这套机制才会启动。
其次是 PROACT Defender。
它负责生成那段“看起来成功、实际上安全”的响应。
为了避免 Defender 自己真的生成危险内容,论文还采用了一个比较谨慎的设计:它不一定直接获得完整的恶意请求,而更多依据请求主题和有限信息生成诱饵回答。
最后还有一个替代评价器。
因为防守方并不知道攻击者真正使用的是哪一个 Judge,所以 PROACT 自己训练或者调用另一个模型,模拟攻击者的判断方式。
Defender 先生成一版回答,替代评价器检查:
“这看起来像一次成功的攻击吗?”
如果不像,就告诉 Defender 哪里还不够真实,再重新生成。
如此反复,直到得到一个:
在评价器看来足够像成功,同时又没有真实危害的响应。
也就是说,攻击者在进行自动化优化,防御方实际上也建立了一套反向优化机制。
红队在优化:
怎样的 Prompt 更容易骗过目标模型?
蓝队则开始优化:
怎样的 Response 更容易骗过攻击 Judge?
两边最终形成了两个互相嵌套的对抗闭环。
它不只是让攻击提前停下,还可能把攻击者带进“死胡同”
最容易想到的破解方法是:
既然 PROACT 靠的是让攻击系统误以为成功,那么攻击者干脆取消“成功后停止”这个规则,不就行了吗?
论文也专门进行了测试。
结果发现,即便攻击系统在 Judge 判断成功之后仍然继续尝试,PROACT 仍然能够产生明显效果。
原因在于,攻击算法并不仅仅利用 Judge 决定“停不停”,还会利用它决定:
下一轮应该往哪个方向走。
如果 Judge 认为当前 Prompt 已经非常接近成功,攻击模型往往不会重新探索完全不同的策略,而会围绕当前 Prompt 继续小幅修改。
于是,一个假的成功反馈会产生第二层影响:
它开始改变攻击者的搜索空间。
论文分析攻击 Prompt 的变化后发现,PROACT 介入之后,不同轮次生成的 Prompt 相似度明显增加,攻击策略越来越集中。
攻击者以为:
“我已经找到正确方向了,只需要再优化一点。”
但实际上,这个方向本身就是防守方人为制造出来的假方向。
这有点像在迷宫里设置了一个假出口。
即使探索者没有立刻停下来,他也可能会围着这个假出口反复搜索,而不再寻找真正的道路。
因此 PROACT 最有意思的地方,并不只是“让攻击提前结束”。
它实际上正在尝试:
污染攻击者的优化过程。
或者说,主动塑造攻击者看到的搜索空间。
这已经不再只是传统意义上的内容过滤。
从“拦每一次攻击”变成“骗成功一次就够了”
这种设计还带来了一个很重要的安全逻辑变化。
传统防御面对一个持续十轮的自动化攻击时,需要十轮全部防住。
只要其中任意一次漏过去,攻击就可能成功。
因此它要求防御系统在整个攻击轨迹中持续保持很高的召回率。
PROACT 的逻辑则不同。
如果系统能够在攻击早期的某一轮识别风险,并成功向攻击者投放一次可信的“假战果”,后面的攻击可能就直接消失了,或者被引向错误方向。
安全目标从:
每一轮都不能漏。
变成了:
尽早成功识别一次,并利用这次机会打断攻击闭环。
论文在 PAIR、TAP、DAGR、X-Teaming 等多种自动化攻击方法,以及多个开源和闭源模型上进行了测试。在部分实验中,PROACT 可以将攻击成功率降低超过 90 个百分点,大量组合最终攻击成功率被压到很低水平。
更有意思的是人工核验结果。
在一些实验中,攻击系统自己的 Judge 几乎认为自己已经百分之百成功,但研究人员真正检查这些输出时,里面实际包含危险信息的比例却非常低。
也就是说,攻击者看到的是:
“我已经攻破模型。”
而防御系统看到的是:
“你拿到的只是我们准备好的假答案。”
从这一点来看,“诈败”甚至并不完全准确。
因为真正发生的事情更像是:
主动制造一场假胜利。
安全的目标,正在从“内容”扩展到“对抗过程”
PROACT 最值得关注的地方,或许并不是它具体生成了什么样的诱饵回答。
更重要的是,它改变了一个长期存在的安全假设。
过去的大模型安全研究主要关注:
用户输入了什么?
模型输出了什么?
所以我们的防御对象主要也是 Prompt 和 Response。
但自动化攻击出现之后,真正的攻击对象已经逐渐变成一个完整闭环:
攻击生成 → 模型回答 → 攻击评价 → 策略优化 → 下一轮攻击。
这时候,只盯着其中某一次输入和输出已经不够了。
因为攻击系统真正依赖的是:
反馈。
模型拒绝、过滤器分数、Judge 判断、错误提示,甚至响应时间,都可能成为攻击算法继续搜索的信息。
从这个角度看,PROACT 给出了一个值得继续研究的方向:
既然攻击者正在利用反馈优化,那么防御者也可以主动管理反馈。
不仅可以隐藏反馈,还可以延迟反馈、模糊反馈,甚至制造具有误导性的反馈。
安全问题于是从:
“如何识别恶意请求?”
进一步变成:
“如何控制攻击者看到的学习信号?”
这已经更接近传统对抗博弈中的思想。
“诈败”的代价
PROACT 并不是一个可以单独解决所有越狱问题的终极方案。
首先,它需要安全系统至少能够识别出一次攻击。
如果一个模型面对恶意请求第一轮就直接给出了真正危险的回答,那么 PROACT 根本没有机会介入。因此它更适合作为现有护栏上的附加防线,而不是替代输入检测、模型对齐和输出审核。
其次,它依赖攻击者 Judge 存在判断缺陷。
如果未来攻击评价器不再只判断回答“像不像成功”,而是能够解码、核查事实、验证内容是否真实可执行,那么“假成功响应”的欺骗空间也会缩小。
论文中的自适应攻击实验已经体现出这种趋势:不同评价模型面对 PROACT 时差异明显,更强、更谨慎的 Judge 确实更难被欺骗。
最后,还有一个真实系统必须考虑的问题。
PROACT 需要生成一段:
看起来非常像危险回答,但实际上是假的内容。
这种响应如果直接进入日志、审核系统、Agent 上下文或者后续工具链,很容易带来新的问题。
因此如果真的部署,这类响应最好被严格标记为内部生成的安全诱饵,与真实模型输出隔离,否则很可能造成日志污染、误告警甚至下游系统误用。
所以,“诈败”并不意味着防守方真的放弃安全边界。
恰恰相反,它要求系统对真假信息的内部边界管理得更加严格。
高手过招,不一定非要挡住每一剑
过去的大模型越狱防御,更像是一场纯粹的攻防:
攻击者不断出招,防守者不断格挡。
但自动化攻击正在改变这种关系。
当攻击者可以观察每一次防御结果、自动调整策略并持续试错时,单纯的“挡”可能已经不够。
因为一个始终诚实地告诉攻击者:
“你失败了。”
的安全系统,也在不断帮助它排除错误答案。
PROACT 提出的另一种可能是:
不要告诉攻击者真实战果。
必要的时候,甚至可以故意给它一个“胜利”。
让它以为已经穿过防线,让它停止搜索,或者把下一轮优化引向错误方向。
高手过招,未必要挡住每一剑。
有时候,故意露出一个破绽,让对手以为自己已经得手,反而可能更早结束这场交锋。
对于越来越自动化的大模型攻击来说,未来的安全系统或许不仅需要学会判断:
谁在攻击我?
还要进一步学会:
我应该让攻击者看到什么?
声明:本文来自模安局,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。