一种人类无法看见的 Unicode 区块——ASCII smuggling——正从人工智能攻击扩展到绕过垃圾邮件过滤器等各种场景。这项技术大约在两年前受到关注,用于隐藏针对大语言模型(LLM)的提示词注入攻击。攻击者不使用普通文本,而是用特殊 Unicode 标签对指令进行编码;U+E0041 代表“A”字符,U+E0061 则代表“a”字符。这个由 128 个标签组成的区块可以被计算机读取,但对人类来说几乎完全不可见。
Microsoft 在今年年初发现,使用上述方法的垃圾邮件数量大幅增加。在2月初的一天,Microsoft Defender for Office 检测到的 ASCII smuggling 特征从每天约 21,000 个增加到超过 1.3百万个;4天内达到 2.5百万个。这一增长持续了数月,并在5月中旬急剧下降。
垃圾邮件发送者会用不可见字符拆分过滤器所搜索的“credit”和“term”等词语或金额。例如,“funding”一词可能会被过滤器识别为“fun”和“ding”,而收件人看到的仍是正常的词语。零宽度空格和不换行空格也已被用于类似目的数十年。
一些过滤器无法识别这些隐藏标签,而且它们可能误导基于机器学习和自然语言处理的分类器,这或许是隐藏标签受到青睐的原因。除非将文本转换为图像并进行 OCR,否则攻击可能会逃过检测。Microsoft 已发布建议,帮助开发者让过滤器更好地识别 ASCII smuggling。
为何重要
这种方法扩大了电子邮件安全中人类所看到的内容与软件所评估的内容之间的差异;因此,它不仅关系到收件箱中的用户,也关系到开发过滤和分类系统的团队。由不可见字符分隔的词语,暴露了传统关键词扫描以及基于机器学习和自然语言处理的检测机制的局限。由于同一技术也被用于针对人工智能系统的提示词注入攻击,问题已超越垃圾邮件检测,转而成为如何可靠解读文本的问题。尚待解决的问题是:在不将文本转换为图像并进行 OCR 的情况下,如何始终如一地检测出这些标记,以及 Microsoft 面向开发者的建议在不同过滤器中的适用程度究竟有多大。