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

上下文预设:通过伪造对话历史越狱大语言模型

一类从不直接提出违规问题的越狱方法。它伪造对话的前几轮,让模型把危险的续写当作自然而然的下一步。

2026-07-20 // 6 min affects: gpt-5, gpt-4o-mini, gemini-3-flash, claude-opus-4-7, claude-sonnet-4-6, llama-3.1-70b, qwen3-8b, gpt-oss-120b

这是什么?

大多数越狱研究关注的是提示词——攻击者发送的那一条消息。上下文预设(contextual priming)攻击的是另一个面:模型以为自己正在延续的对话历史。攻击者不是提出一个危险问题再加以伪装,而是伪造对话的前几轮——包括归于助手自己的回复——使得真正的请求到来时,模型早已被引导进入配合的语气。

这一类攻击的代表性版本是 Miao 等人提出的 Response Attack(RA),论文最初于 2025 年 7 月发布(arXiv 2507.05248),随后被 AAAI 2026 接收。RA 将上下文预设形式化为一种攻击机制,报告的成功率持续高于九种主流基线方法。2026 年的后续工作 ContextualJailbreak(arXiv 2605.02647)将这一思路自动化,并在当前前沿模型上进行测量——这正是这一类攻击值得在今天重新审视、而非归入 2025 年旧闻的原因。

工作原理

该机制利用了 RA 作者明确指出的一种不对称性:安全对齐对有害查询的鲁棒性,往往强于对来自先前上下文的有害内容的鲁棒性。一个会断然拒绝”解释如何做 X”的模型,如果其上下文中已经有一段看似出自它自己、关于 X 的半成品回答,可能就会顺势继续。

Response Attack 刻意构造这样的上下文。一个辅助模型针对目标的改写版本生成一段轻度有害的回复——单独看不会触发过滤。这段中间回复被作为助手的一个较早轮次插入到对话记录中,随后再发送一句简短的触发语来引发升级。模型读到的,是一段自己似乎已经同意提供帮助的对话。

在单次请求中发送的伪造对话记录
------------------------------------
system:     [外表普通的设定]
user:       [目标的改写、软化版本]
assistant:  [轻度有害的部分回答 —— 预设诱饵,
             归于模型,实为攻击者撰写]
user:       [简短触发语:"继续" / "补全步骤"]
              → 模型从自己表面上的起点开始升级

ContextualJailbreak 把这一思路从固定模板变成搜索。它对整段模拟对话运行进化式循环,用语义算子(角色扮演、场景、扩展,以及作者新引入的两种)对预设过的对话进行变异,并用一个 0–5 分的分级危害评判器对每次尝试打分,使部分成功能够引导下一代,而不是被丢弃。整段被伪造的多轮对话仍然在单次 API 调用中发送。此处不复现任何攻击载荷——关键在于结构:攻击者控制了历史,而历史被视为可信。

为什么重要

数据表明这并非玩具。ContextualJailbreak 报告的成功率(获取有害内容)在多个开放权重模型上达到 100%——包括 qwen3-8b 和 llama-3.1-70b——在一个更大的开放模型上为 90%,远高于单轮和多轮基线。针对某个开放模型优化出的对抗性对话,可以原样迁移到托管的前沿系统:论文报告在”有害”阈值下,对 gpt-4o-mini 的成功率约为 90%,对 gpt-5 和 gemini-3-flash 约为 70%。

有两点经验超越了任何具体基准。其一,提示词层面的过滤是错误的层。 检查最后一条用户消息的分类器只看到平淡的”继续”;危害存在于围绕它的伪造历史中。其二,结果高度依赖对齐配方,且与版本绑定。同一研究发现,所测试的两个 Claude 模型——claude-opus-4-7 和 claude-sonnet-4-6——抵抗力明显更强,对大多数迁移攻击直接拒绝(成功率约在 15% 上下,而其他模型为 70%–90%)。这是某个特定强化对齐栈在某个特定版本上的性质,而非前沿模型的普遍性质——这正是应当测量、而非想当然的差异。

防御

由于攻击存在于对话结构之中,防御必须对整个轨迹进行推理,而不是只看最后一条消息。

  1. 不要把客户端提供的历史当成模型自己写的来信任。 在 API 部署中,助手轮次是攻击者可控的。若你的产品允许提交完整对话记录,应把先前的”assistant”轮次当作不可信输入,而非模型已确立的承诺。
  2. 从提示词层对齐转向上下文感知对齐。 RA 作者的核心建议是:安全性必须在不断演化的对话上下文中成立,而不仅仅在最终查询上成立。应在对抗性历史条件下评估拒绝行为,而非只用孤立提示词。
  3. 在生成时重新审查整个上下文。 对拼装好的完整对话——包括注入的预设诱饵——运行输出和安全检查,而不只是最后一轮。跟在有害部分回答之后的”继续”,应按它所延续的内容来评分。
  4. 用预设过的历史做红队测试。 把伪造前置轮次的场景(轻度诱饵后再升级)加入你的评测集。两篇论文都为此类防御性测试发布了代码或合成示例。
  5. 优先选用已被证明能抵抗上下文预设的对齐栈——然后在你自己的栈和版本上验证。 为某家厂商某个版本证明的鲁棒性并不可移植;每次更换模型或系统提示后都要重新测试。

状态

项目参考日期说明
Response Attack(奠基)Miao 等,arXiv 2507.052482025-07形式化上下文预设;胜过 9 种基线;已发布代码
Response Attack(发表)AAAI 2026 会议论文集2026同行评审接收
ContextualJailbreak(自动化)Rodríguez Béjar 等,arXiv 2605.026472026对预设对话进行进化式搜索;前沿迁移结果
开放权重影响ContextualJailbreak2026在多个开放模型上成功率(有害内容)高达 100%
前沿迁移ContextualJailbreak2026对 gpt-4o-mini / gpt-5 / gemini-3-flash 约 70%–90%;对所测 Claude 模型约 15%

值得长期记住的一点:模型的拒绝,强不过它最具妥协性的表面上下文。如果攻击者能够撰写历史,那么最后一条消息几乎无关紧要——因此防御必须落在历史被拼装之处,而不是问题被提出之处。

Sources