一种曾被用于隐藏针对AI智能体恶意提示词的巧妙技术,如今被垃圾邮件发送者用来绕过电子邮件平台的过滤系统,以规避针对群发邮件的检测机制。
这项技术通常被称为ASCII走私术。两年前,它作为一种让"提示词注入"攻击更加隐蔽的手段而受到关注。嵌入在电子邮件或其他非可信内容中、准备由大语言模型处理的恶意指令,并非以普通文本形式书写,而是通过一组特殊范围的Unicode标签字符来呈现。例如,标签码位U+E0041对应字母"A",U+E0061对应字母"a"。
不再局限于隐藏提示词注入
这组128个标签字符几乎完美模拟了美国信息交换标准代码(ASCII)的一部分,但有一个关键区别:这些字符编码的内容能被计算机识别,但按照设计几乎完全不会被人类肉眼察觉。通过用这些标签字符表达恶意提示词,大语言模型能够检测到相关指令,但阅读邮件的人却完全看不到它们。
今年早些时候,微软发现使用该技术的垃圾邮件数量出现大幅激增。从2月初的某一天开始,微软Defender for Office检测到的ASCII走私特征数量从每天约2.1万条飙升至超过130万条。四天之内,特征检测数量攀升至250万条。这波激增持续了数月,随后在5月中旬急剧回落。
微软在周四解释称:"由于标签字符对人类不可见,但在文本处理层面确实存在,这一特性既能让攻击者将指令走私进模型,同样也能用来在检测器评估关键词之前对其进行混淆。虽然意图相反,但机制相似,且不会引起用户的警觉。"
垃圾邮件发送者正在嵌入Unicode字符,试图绕过那些搜索特定文本的过滤器,比如群发邮件中常见的金额数字,以及"credit"(信贷)、"term"(期限)等词汇。例如,通过在"funding"(资金)一词中间插入不可见字符,过滤器可能会将其识别为"fun"和"ding"两个独立单词,而收件人看到的仍然是完整的"funding"一词。
用特殊文本来伪装某些触发词的做法并不新鲜。垃圾邮件发送者数十年来一直使用零宽度空格和不间断空格来达到类似效果。这些字符既能阻止对字面字符串的精确匹配,也能改变正则表达式过滤器所搜寻的字节序列。垃圾邮件发送者很可能采用隐藏Unicode标签字符,是因为部分垃圾邮件过滤器尚未编程识别这类字符。而更重要的原因可能在于,这种手段旨在抵消机器学习(ML)和自然语言处理(NLP)驱动的大语言模型在垃圾邮件检测方面所带来的优势。
微软解释道:
"不过,对攻击者而言,更大的收获并非阻止字面字符串匹配,而是越来越多依赖机器学习和自然语言处理模型进行垃圾邮件与钓鱼邮件分类的系统。除非过滤系统对邮件进行截图并通过OCR提取视觉图像中的文字,否则可能会漏过这类攻击。标准的电子邮件分类器并不会像人类那样按完整单词进行推理;出于效率考虑,它们通常会先将文本拆分为Token或子词片段。一个干净的诱饵词,比如'funding',可能会被表示为一个熟悉的Token或一串熟悉的子Token序列。但如果在其中插入一个不可见的U+E0020字符,分词器可能就无法再识别出那个熟悉的单元。它可能将文本拆分为'fun'、一个意外的标签字符,以及'ding';也可能生成罕见或未知的子Token;又或者,如果先进行了归一化处理,它会直接移除U+E0020字符,还原出'funding'一词。"
周四发布的文章还就开发者如何改进过滤器编程、以更好地应对垃圾邮件中的ASCII走私术问题提供了指导建议。
Q&A
Q1:什么是ASCII走私术?
A:ASCII走私术是一种利用特殊Unicode标签字符隐藏文本的技术,这些字符能被计算机识别处理,但人类肉眼几乎无法察觉,最初被用于让针对AI智能体的提示词注入攻击更加隐蔽。
Q2:垃圾邮件发送者为什么要用ASCII走私术?
A:垃圾邮件发送者利用这种技术在敏感词汇中插入不可见字符,从而绕过基于机器学习和自然语言处理的垃圾邮件过滤系统,同时收件人看到的邮件文本依然完整正常,不会引起怀疑。
Q3:微软是如何发现这一垃圾邮件激增现象的?
A:微软通过Defender for Office安全产品监测到,今年2月初开始,ASCII走私特征的检测量从每天约2.1万条骤增至超过130万条,四天后更攀升至250万条,这一现象持续数月后于5月中旬明显回落。
