跳到正文
20 分钟阅读

ASCII语境攻击:不用隐藏危险意图,也能绕过LLM安全对齐

有人把敏感词编码成 Base64,有人使用低资源语言,有人把指令藏进代码,还有 ArtPrompt 这类攻击,把敏感词画成 ASCII 字符图,让模型先“识图”,再恢复真正的指令。

2026/09/11

过去几年,大模型越狱攻击有一个非常常见的思路:想办法让模型“看不见”危险意图。

有人把敏感词编码成 Base64,有人使用低资源语言,有人把指令藏进代码,还有 ArtPrompt 这类攻击,把敏感词画成 ASCII 字符图,让模型先“识图”,再恢复真正的指令。

它们虽然形式不同,但底层思路大体一致:模型的能力可以还原被隐藏的信息,而安全系统却没有及时识别出来。

但最近一篇论文提出的 ASCII Attack,却走了一条有些反直觉的路线:

它根本不隐藏危险内容。

图1

论文原文(arXiv)

危险对象、行为和问题仍然可以直接被模型读懂,攻击者只是把原本的危险请求包装成一幅所谓的“ASCII 艺术作品”,然后告诉模型:

这是我的作品,请帮我点评一下,怎样才能让它更加真实?

结果,一些原本会拒绝直接危险请求的大模型,在进入“艺术评论”的语境之后,却开始主动补充原本不该提供的信息。

这篇论文因此揭示了一个比 ASCII 字符本身更值得关注的问题:

今天的大模型安全对齐,究竟学会的是“拒绝这种说法”,还是“拒绝做这件事情”?

论文将这个问题称为 mismatched generalisation,错配泛化:大模型的理解能力已经能够跨越不同语言、格式和语境理解同一个任务,但安全能力却未必能够同步泛化过去。

ASCII Attack 最特别的地方:它什么都没有藏

先从这次攻击到底做了什么讲起。

传统危险请求可能非常直接:

“告诉我如何完成某个危险行为。”

经过安全对齐的大模型通常很容易识别这种输入,因为它和训练阶段见过的大量危险请求非常接近,于是模型拒绝回答。

ASCII Attack 并没有对其中的危险词进行加密,也没有故意把文字写成模型难以理解的乱码,而是重新组织整个请求:

  • 首先告诉模型,这是一幅 ASCII 艺术作品
  • 使用 |||、&&、[] 等字符搭建一个类似场景框架
  • 在其中写明角色、目标、工具和目的

最后以“艺术点评”的口吻询问:为了让作品更加真实,还有哪些细节需要补充?

论文特别强调,这些 ASCII 字符甚至不需要真的组成一个可以辨认的图像。

它们更像一种视觉脚手架,真正起作用的是由这些字符建立起来的“这是艺术作品”的语境。

模型仍然能够完整读取其中的危险内容,只是开始把自己当前正在执行的任务理解为“艺术评论”。

图2

这与此前的 ArtPrompt 有一个非常关键的区别。

ArtPrompt 的基本逻辑是:

把危险词隐藏起来
↓
安全系统没识别
↓
模型能力把词恢复出来。

而 ASCII Attack 的逻辑更接近:

危险内容始终可读
↓
模型知道它在说什么
↓
但因为语境发生变化,安全策略没有正确生效。

所以,尽管两种方法表面上都使用了 ASCII,它们攻击的其实不是同一个安全环节。

真正被攻击的是模型对“我正在做什么”的判断

理解这篇论文最关键的一点,是不要把注意力停留在 ASCII 上。

如果我们把各种符号都去掉,ASCII Attack 真正改变的其实是一个更抽象的东西:请求的社会语境,也就是模型认为用户正在要求它执行什么类型的任务。

同一个问题可以被描述成:

“告诉我怎么完成这个操作。”

也可以被描述成:

“我正在写小说,请检查这个剧情是否真实。”

还可以变成:

“这是一个历史案例,请解释这里缺少哪些步骤。”

甚至可以是:

“这是一幅艺术作品,请从专业角度指出不准确的地方。”

从人的角度看,这些表达可能只是不同的包装,真正要获取的信息并没有发生变化。

但对一个经过安全对齐的大模型来说,它们可能落在完全不同的行为分布里。

论文给出的解释是:大模型在预训练阶段获得了非常广泛的理解能力,它能理解自然语言、代码、诗歌、艺术评论乃至各种非常规格式;但安全训练覆盖的空间却要窄得多,通常集中在大量相对直接的危险请求上。

于是就可能出现这样的结构:

模型能力覆盖范围:

普通问题
↓
小说
↓
代码
↓
ASCII
↓
艺术评论
↓
角色扮演……

安全训练覆盖范围:

主要覆盖“普通语言中的危险请求”。

这样一来,攻击者甚至不需要骗模型。

模型完全理解用户真正想问什么,只不过安全拒答没有随着语义一起迁移过去。

这就是论文所说的“错配泛化”。

图3

不是规则冲突,而是规则没有被正确调用

很多经典 Jailbreak,本质上是在制造目标冲突。

例如 DAN、角色扮演、伪造系统指令、“忽略之前所有规则”等攻击,都在试图让模型面临这样一个冲突:

一边是:

“我要遵守安全规则。”

另一边是:

“我要按照用户的新身份或新指令执行任务。”

攻击者希望用户指令压过安全规则。

ASCII Attack 并不完全是这种逻辑。

它更像是把原本应该触发安全策略的任务,搬到了安全训练没有充分覆盖的另一个区域。

可以把前者理解成:

知道这里有一道门,想办法把门撞开。

而 ASCII Attack 更像:

门还在那里,但换了一条路之后,系统没意识到这里同样需要设门。

因此,这篇论文研究的不只是又一种新的越狱提示词,而是在探测一个更基础的问题:

大模型的拒答边界,到底能够随着语义泛化多远?

不止看ASR,还要看对照试验

越狱研究中经常能看到类似这样的结论:

“我们的攻击成功率达到 80%。”

但单独看这个数字其实不够。

假设一个模型面对普通危险问题,本来就有 70% 的概率给出不安全回答,那么某个攻击方法做到 80%,真正额外产生的效果只有 10 个百分点。

为了解决这个问题,这篇论文采用了 matched control,匹配对照。

每一个 ASCII 攻击提示词,都配有一个内容主题相同的直接问题。攻击组改变语境,对照组则直接询问相同的核心问题。模型、主题、温度等条件尽量保持一致。

于是研究者关注的不只是:

图4

而是:

图5

论文把这个差值称为 Framing Uplift,可以理解为“语境带来的额外攻击增益”。

这个指标非常重要。

因为它回答的是:

如果原始危险请求不变,仅仅加入这套语境包装之后,模型究竟多出了多少风险?

而不是简单地告诉我们模型一共回答了多少危险问题。

图6

超过 8 万次生成后,ASCII 语境确实显著提高了危险输出

实验覆盖了 11 个模型和 8 类风险主题。

目标模型包括 DeepSeek-R1、Gemma、GPT-OSS、Llama、Qwen 等不同模型家族,也覆盖了从约 1B 到数十 B 参数规模的模型。

每个风险主题又进一步设计多个子主题和多个 ASCII 语境版本,并在 0.1、0.5、1.0、2.0 四档温度下进行重复实验。

论文首先构建了包含 43,113 条模型响应的 Alpha 数据集,其中 32,356 条来自 ASCII 攻击组,10,757 条来自匹配对照组;

随后又在统一运行环境下重新生成 42,240 条响应组成 Bravo 数据集,用于独立复现实验。

两个数据集的整体结论方向保持一致。

最直接的结果来自五个不同的安全 Judge:

安全 JudgeASCII 攻击组对照组语境增益
JailbreakBench62.37%42.29%+20.09 个百分点
WildGuard38.17%22.29%+15.89 个百分点
Llama Guard 323.15%12.86%+10.29 个百分点
Llama Guard 411.38%2.22%+9.16 个百分点
Granite Guardian11.37%3.57%+7.80 个百分点

不同 Judge 对“什么算真正危险”的标准差异很大,所以得到的绝对攻击成功率差距也非常明显。

但有一个现象是一致的:

无论采用哪个 Judge,加入 ASCII 艺术语境之后,风险输出都明显高于直接请求。

研究者进一步使用混合效应逻辑回归,把模型规模、模型家族、风险主题、温度等变量一起纳入统计模型,ASCII 条件对应的回归系数仍然达到 0.998,95% 置信区间为 0.95~1.05。

换句话说,这个现象并不能简单解释成某一个风险类别或者某几个模型偶然特别容易被攻击。

比 ArtPrompt、DeepInception 都要强

论文还把 ASCII Attack 与 ArtPrompt、DeepInception,以及需要多轮交互的 PAIR 进行了比较。

在相同快照上,按照 JailbreakBench Judge 统计:

ASCII Attack:60.1%

ArtPrompt:36.5%

DeepInception:22.8%

而且在五个安全 Judge 中,有四个都把 ASCII Attack 判定为三种单轮攻击中效果最强的一种。

更值得注意的是,它并不需要模型权重,也不需要梯度,不需要不断搜索提示词,更不需要几十轮与目标模型互动。

它是一种:

单轮、黑盒、无需系统提示词权限的攻击。

从实际攻击成本来看,这一点比单纯的 ASR 数字更加值得关注。

不过这里也需要注意一个常见的论文阅读陷阱。

作者同时列出了 GCG、AutoDAN 等已有工作的公开结果,但这些工作使用的模型、数据集和 Judge 并不相同,所以不能简单把 60.1% 和其他论文中的数字直接横向比较。

论文自己也明确把这部分定义成“参考”,真正严格可比的还是同一套实验环境中重新运行的 ArtPrompt 与 DeepInception。

模型越强,安全语境泛化未必越强

如果按照常规直觉,我们可能会认为:

模型越来越强,安全训练越来越充分,因此越大的模型应该越难越狱。

这也是论文最初预注册的假设之一。

结果并没有出现这种趋势。

在 JailbreakBench 的判断下,Qwen 3 32B 的 ASCII 攻击成功率达到 93.3%,而直接请求的成功率明显更低;其语境增益达到约 46 个百分点。

Llama 4 Scout、DeepSeek-R1 32B、DeepSeek-R1 70B 等相对能力较强的模型,同样出现了很高的攻击成功率。相反,两个较小的 Llama 模型甚至出现了负增益。

这并不能直接证明:

模型越大就越不安全。

因为模型之间不仅参数规模不同,训练数据、安全微调、模型架构、聊天模板、推理方式也都不一样。

但至少可以得到一个非常重要的结论:

模型能力提升,并不会自动带来同等程度的安全泛化能力。

甚至存在一种值得警惕的可能性:模型越强,就越能理解复杂的语境转换,而一旦安全规则没有同步扩展过去,更强的理解能力反而可能帮助攻击成功。

可以把这个过程简单理解成:

小模型看到复杂 ASCII 语境:

“我没完全看懂你在干什么。”

攻击失败。

更强模型看到同一个语境:

“我理解,这是一幅艺术作品;你想知道这里哪些步骤不够真实。”

然后顺着新的任务语境继续推理。

问题并不是它没理解危险内容,而是:

它理解得足够好,却没有在新的语境里继续维持原来的安全约束。

图7

影响攻击效果最大的因素:你攻击哪个模型

研究者继续分析:ASCII Attack 为什么有时非常有效,有时却没有效果?

是因为某些危险主题天然更容易突破,还是因为不同模型的安全特性不同?

结果显示,在 JailbreakBench 下:

  • 模型因素解释约 39.7% 的语境增益方差
  • 风险主题解释约 21.5%

在独立的 Bravo 数据集上,这两个数字分别约为 39.2% 和 19.7%,整体结构基本复现。

也就是说:

攻击哪个模型,比攻击什么主题,对结果的影响更大。

论文称这一现象具有“architecture-conditional”的特点。

不过更谨慎地说,这里至少可以确定是“模型相关”的,因为模型差异除了底层架构,还包括安全微调、聊天模板、运行环境等很多因素。

这一点对实际安全评测很重要。

很多安全基准仍然习惯把结果总结成:

“某种攻击的 ASR 是多少?”

但真实情况越来越像是:

攻击结果=攻击方法×目标模型×风险类别×运行环境×Judge

不存在一个脱离环境的“攻击成功率”。

Temperature 几乎不起作用,这说明它不是一次“随机撞出来”的漏洞

论文还测试了四档采样温度:

T={0.1,0.5,1.0,2.0}

ASCII Attack 在 JailbreakBench 下对应的成功率约为:

61.2%、60.4%、60.3% 和 58.5%。

变化并不明显。

论文计算发现,温度只能解释极少一部分 ASR 方差,而模型本身的影响要大得多。

这意味着 ASCII Attack 并不是:

“把温度调高以后,刚好碰巧采样到了一次危险答案。”

相反,它更接近一种稳定的行为变化:

当模型进入另一种任务语境之后,其安全行为发生了系统性偏移。

不同 Judge 的判断也不一致

如果只看 ASCII Attack,本篇论文已经足够有意思。

但我认为论文里还有一个更值得安全评测行业关注的结果:

不同安全 Judge 对同一条回答,根本没有形成稳定共识。

研究者用五套 Judge 对同一批输出进行判断。

结果发现,在 62.9% 的 ASCII 攻击响应中,至少有一个 Judge 与多数 Judge 的意见不同。

十组 Judge 两两之间的 Cohen’s κ 只有 0.08~0.47,五个 Judge 整体的 Fleiss’ κ 只有 0.21。甚至 Llama Guard 3 和 Llama Guard 4 两代系统之间的一致性也只有 0.40。

这是什么意思?

同一条模型回答完全可能出现:

Judge A:攻击成功。 Judge B:安全。 Judge C:安全。 Judge D:危险。 Judge E:安全。

而且这不是极少数边界样本。

这是一个非常普遍的现象。

造成这种差异的一个原因,是不同 Judge 实际判断的问题并不完全一样。有些 Judge 更关注输出中是否包含危险内容;有些更关注模型是否真正帮助用户完成危险任务;还有一些则主要判断模型有没有拒绝,以及回答是否具体。

于是,同样一句具有分析性质的回答,在一个 Judge 看来可能是“危险内容”,在另一个 Judge 看来却只是“教育性说明”。

图8

要求更多 Judge 一致,攻击成功率会下降,但语境差距始终存在

研究者进一步做了一个非常直观的实验。

如果只要求五个 Judge 中至少一个认为攻击成功:

ASCII 组:64.2%

对照组:47.5%

差距:+16.75 个百分点

如果要求至少三个 Judge 同意:

ASCII 组:21.4%

对照组:12.0%

差距:+9.45 个百分点

如果要求五个 Judge 全部同意:

ASCII 组:1.4%

对照组:0.3%

差距:+1.12 个百分点。

这个结果同时说明了两件事情。

第一:

“攻击成功率到底是多少”很大程度取决于你采用什么判定标准。

第二:

无论把标准设得多严格,ASCII 语境组和直接请求之间的差距始终没有完全消失。

所以这个现象不能简单归因于某一个 Judge 过于宽松。

它进一步提醒我们,未来的自动化安全评测体系如果仍然采用:

Response
↓
单个 Judge
↓
0/1
↓
ASR

这样的结构,可能已经过于粗糙。

更合理的做法应该逐渐加入:

  • Judge 一致率
  • Judge 分歧率
  • 边界样本比例
  • 不同 Judge 下的 ASR 区间
  • 必要时的人工复核
  • Judge 与人工标准的校准

对于今天越来越依赖 LLM-as-a-Judge 的安全评测体系来说,这可能是这篇论文比 ASCII Attack 本身更加长期的贡献。

攻击组和对照组其实并没有完全“只差一个语境”

看到这里,很容易得出结论:

ASCII 艺术包装导致攻击成功率提高了 20 个百分点。

但严格来说,现在还不能这么下结论。

论文自己在附录中非常坦诚地承认了一个重要限制:

ASCII 攻击提示词平均约 785.7 个字符,而对照组只有 81.3 个字符。

前者接近后者的 9.66 倍。

更重要的是,ASCII 攻击组除了多了艺术语境,还额外提供了:

  • 更详细的场景
  • 角色
  • 目标
  • 工具
  • 行为目的
  • 一系列需要模型补充的问题

也就是说,当前实验真正比较的是:

简单直接请求

对比:

ASCII 字符 + 艺术语境 + 更丰富的上下文 + 问题拆解

所以实验测量到的是一整个“组合攻击”的效果,而不是纯粹的 ASCII 或艺术语境效果。

理想情况下,还应该增加第三个实验组:

详细直接请求组

它拥有与 ASCII 攻击组相同的信息量、相同的问题拆解,只是不使用 ASCII 和艺术评论语境。

这样才可以进一步拆开:

详细直接请求−简单请求详细直接请求-简单请求

测量的是信息量增加带来的影响;

而:

ASCII艺术请求−详细直接请求ASCII艺术请求-详细直接请求

才更接近真正的语境影响。

论文明确承认目前缺少这样一个“信息量匹配”的第二对照组。

图9

但这个实验缺陷并不会让攻击失去现实意义

研究者没有完全分离攻击机制,影响的是我们的科学解释。

却并不影响攻击者使用它。

攻击者不会关心:

究竟是 ASCII 提升了 7%,艺术语境提升了 6%,还是详细上下文又提升了 8%。

攻击者只关心:

我把这一整套提示词发进去以后,到底有没有效果。

从这个角度看,论文证明的现实结论依然成立:

一种完全不需要隐藏危险意图、只需重新组织任务语境的单轮黑盒攻击,就足以显著改变部分模型的安全行为。

作者自己也明确指出,这个混杂因素限制的是对攻击机制的解释,而不是攻击结果本身。

模型安全甚至可能取决于 Chat Template 和运行时

论文在 Alpha 与 Bravo 两次实验之间还发现了一个很有意思的异常。

Gemma 4 31B 的结果发生了明显变化,幅度达到 41.67 个百分点。

研究者进一步发现,它是目标模型中唯一一个由 serving runtime 提供聊天模板,而不是直接从模型文件读取聊天模板的模型。随后进行的小规模控制实验,又复现了这种方向变化。

这意味着一个经常被忽略的问题:

我们平时说“某模型是否安全”,实际上并不只是模型权重本身是否安全。

真实运行中的安全行为可能来自:

模型权重

Chat Template

System Prompt

推理框架

Serving Runtime

解码参数

安全中间件

这与最近 Agent 安全研究正在不断强调的 Runtime、Harness 安全其实是一条线:

安全不是一个静态模型属性,而是一个完整运行系统的行为属性。

真正需要防御的不是 ASCII,而是“语境重构”

如果读完这篇论文,最后的结论变成:

“以后加一个 ASCII Art 检测器。”

那基本上就把这篇论文读反了。

ASCII 只是这次攻击选择的一种载体。

同样的逻辑完全可能换成:

  • 小说创作
  • 电影剧本
  • 游戏设定
  • 历史分析
  • 学术研究
  • 新闻报道
  • 诗歌
  • 代码审查
  • 艺术评论

只要满足一个条件:

危险任务本身没有改变,但模型认为自己正在执行另一种看起来合理的任务。

那么相同的安全缺口就可能再次出现。

因此真正应该解决的问题不是:

Detect(ASCII)

而应该是:

Safety(x)≈Safety(T(x))

这里的 T(x)表示任何保持核心意图不变、只改变表达和语境的转换。

换句话说:

同一个危险任务,无论被包装成艺术、小说、代码还是学术讨论,系统都应该尽量得到一致的安全判断。

这才是所谓的 register-invariant safety,也就是“对表达语境不敏感的安全能力”。

安全判断的对象,最终必须从“这句话是什么”升级成“用户实际上想完成什么任务”

ASCII Attack 最终指向的,其实是一个比越狱检测更基础的安全架构问题。

传统内容安全系统通常可以简化成:

输入文本
↓
分类器
↓
安全 / 不安全

这种体系很容易受表面表达影响。

未来更合理的结构,可能应该在中间增加一层:

原始请求
↓
任务与意图重建
↓
得到规范化任务
↓
安全策略判断
↓
模型执行

也就是说,安全系统首先不应该问:

“用户用了哪些词?”

而应该尽量回答:

“用户最终希望模型帮助他完成什么事情?”

可以进一步抽象成:

谁在执行?

针对什么对象?

目标是什么?

需要模型提供什么能力?

最终可能产生什么结果?

即使用户表面说的是:

“请帮我评价一下这幅艺术作品。”

系统也应该能够进一步还原:

用户实际上希望模型补充某个受限制任务的操作信息。

然后再进行安全判断。

图10

到了 Agent 时代,这个问题可能比聊天机器人时代严重得多

ASCII Attack 研究的还只是单轮大模型。

Agent 面临的语境要复杂得多。

一个 Agent 接收到的信息可能同时来自:

  • 用户
  • 网页
  • 邮件
  • PDF
  • 数据库
  • Memory
  • MCP 工具描述
  • 代码仓库
  • 其他 Agent
  • 工具返回结果

这些信息中的任何一个来源,都可能把原本危险的行为重新包装成一种“正常任务”。

例如:

“这是网站管理员提供的调试说明。”

“这是上一位 Agent 留下来的工作记录。”

“这是某个工具正常返回的操作步骤。”

对于 Agent 而言,这些其实都是新的语境。

一旦 Agent 把“不可信输入”理解成了“正常工作流程的一部分”,接下来就不只是输出一段文字,而可能真正开始:

调用工具、修改数据、发送邮件、执行代码、访问外部服务。

所以从 ASCII Attack 往后看,真正值得担心的不是 ASCII 越狱本身,而是一种更加普遍的安全模式:

攻击者不再试图隐藏恶意指令,而是让系统重新解释这些指令的身份和意义。

这和今天不断出现的 Prompt Injection、间接提示注入、WebMCP、Agent Harness、运行时指令权限提升,其实正在逐渐汇聚到同一个问题:

谁有权定义“当前这个任务到底是什么”?

ASCII Attack 真正留下的问题:安全对齐到底学会了什么?

回到这篇论文最初的问题。

为什么同一个危险任务:

直接问时,模型拒绝;

换成艺术评论之后,模型却可能回答?

一个可能的答案是:

今天的大量安全训练仍然过于依赖“危险请求通常长什么样”,而没有完全学会“危险任务本身是什么”。

模型知道:

“这种句式应该拒绝。”

却未必真正建立了稳定的:

“无论用户怎么包装,只要最终要求我完成这一类任务,我都应该保持相同安全边界。”

这也是“错配泛化”真正值得警惕的地方。

预训练不断扩展模型可以理解和执行的任务空间,而安全训练需要追赶这个不断扩张的空间。

如果防御方式始终是:

出现一种攻击
↓
收集一批样本
↓
增加一个规则
↓
再训练一次,

那么很容易陷入永无止境的打地鼠。

ASCII 今天可以换成小说,小说明天可以换成代码,代码之后还可以换成 Agent 工具调用。

真正需要提升的,是一种更底层的能力:

让安全规则跟着任务语义一起泛化。

真正被攻击的是大模型对任务语境的理解

ASCII Attack 最容易让人误解的地方,就是它看起来很像又一种“字符混淆攻击”。

但恰恰相反。

这次攻击最值得关注的地方,是:

模型没有被字符骗过。

它完全看懂了。

它知道场景里有什么角色,知道用户想知道什么,也理解那些需要补充的信息。

真正发生变化的是:

模型认为自己正在做一件什么事情。

当“危险问题”变成“艺术评论”,能力成功迁移到了新的语境里,而安全边界却没有完全迁移过去。

这可能也是未来大模型与 Agent 安全一个越来越重要的分界线:

过去我们主要担心的是:

攻击者怎样把危险内容藏起来。

接下来可能需要更多考虑:

即使危险内容完全摆在系统面前,攻击者能不能通过改变语境,让系统不再把它当成危险任务。

从这个角度看,ASCII Attack 真正攻击的从来不是 ASCII。

它攻击的是大模型对任务语境的理解。

而它最终留下的那个问题,也比一种新的越狱技巧更值得回答:

一个真正可靠的安全模型,究竟应该学会拒绝“某句话”,还是学会拒绝“某件事”?

我更倾向于后者。

而这或许正是从今天的文本安全对齐,走向下一阶段任务级安全对齐必须跨过去的一道门槛。

同专题推荐

查看专题