曾用于攻击 AI 的 ASCII Smuggling,现被垃圾邮件发送者广泛采用
一种曾被用于攻击 AI 代理的精妙技术手段,正被垃圾邮件发送者用来绕过电子邮件平台的过滤机制——这些平台原本旨在标记大规模活动中使用的恶意信息。
该技术被称为“ASCII smuggling”(ASCII 渗透)。两年前,它作为使一类名为提示注入的 AI 攻击更加隐蔽的手段而引发关注。嵌入在邮件或其他需由大模型处理的不受信任内容中的恶意指令并非以普通文本形式呈现,而是通过一组特殊的Unicode字符编码实现。例如,U+E0041 对应字母“A”,U+E0061 对应字母“a”。
不再仅限于隐藏提示注入
这一组 128 个字符几乎完美地模仿了美国信息交换标准代码的某个部分,但存在一个关键差异:它们所编码的字符对计算机可读,但设计上对人类几乎完全不可见。通过将恶意提示用这类字符表达,大模型可以识别其中的指令,但阅读邮件的人却看不到它们。有关 ASCII 渗透的更多内容请参见这里。
今年早些时候,微软开始发现大量使用该技术发送的垃圾邮件激增。自二月初某一天起,Microsoft Defender for Office 检测到的 ASCII 渗透特征数量从每天约 2.1 万条飙升至超过 130 万条;四天内,检测量进一步跃升至 250 万条。这场洪水般的攻击持续了数月,直到五月中旬才骤然回落。
“由于这些字符对人类不可见,却存在于文本处理层面,因此使它们能够被用于将指令 smuggle 进模型的同一特性,也使它们在检测器评估之前遮蔽关键词时同样有效,”微软在周四发布的博客中解释称,“虽然意图相反,但机制类似,且不会引起用户的警觉。”
ASCII smuggling 特征的每日命中数,爆发前后各一周的监测数据。
图源:
Microsoft
金融主题发件域名上 Unicode-tag 特征的每日命中数(对数刻度),统计周期为 2026 年 2 月 9 日至 6 月 18 日,每日测量。
图源:
Microsoft
垃圾邮件发送者在邮件中嵌入 Unicode 字符,试图绕过基于文本检索的过滤器——这类过滤器会查找他们群发邮件中常见的字眼,比如金额符号以及 "credit"、"term" 这类词。举例来说,只要在 "funding" 一词中间混入几个不可见字符,过滤器识别出来的就变成了 "fun" 和 "ding" 两个词,而收件人看到的依然是完整的 "funding"。
Credit:
Microsoft
利用特殊文本隐藏触发词的做法早已不新鲜。几十年来,垃圾邮件发送者一直使用零宽空格和不间断空格来实现类似效果。这些字符既能干扰基于字面字符串的搜索,又能改变正则表达式过滤器所匹配的字节序列。垃圾邮件发送者采用隐藏 Unicode 标签,部分原因是某些垃圾邮件过滤器尚未被编程以检测它们。更可能的原因是,为了对抗机器学习和自然语言处理 LLM 在垃圾邮件检测中所带来的优势。
微软解释道:
对攻击者而言,更大的收益并非阻止字面字符串匹配,而是绕过如今日益驱动现代垃圾邮件和钓鱼邮件分类的基于 ML 和 NLP 的模型。除非过滤系统对邮件进行截图并对图像执行 OCR 提取,否则可能无法发现此类攻击。标准邮件分类器未必能像人类那样对完整单词进行推理;为了提高效率,它们通常会先将文本分割为词元(tokens)或子词片段。例如,一个干净的诱导词如 funding 可能被表示为熟悉的词元或熟悉的子词元序列。然而,如果在中间插入不可见的 U+E0020,分词器可能不再识别相同的熟悉单元。它可能会将文本分割为 fun、一个意外的标签字符以及 ding;可能会输出罕见或未知的子词元;或者,如果先执行规范化,则直接移除 U+E0020 字符,从而还原为 funding。
周四发布的文章提供了开发指南,帮助开发者通过编程方式更好地应对垃圾邮件中的 ASCII 走私问题。