隐形 Unicode 标签:垃圾邮件发送者开始用 ASCII smuggling 绕过过滤器
微软称,原本用于向 AI 智能体隐藏恶意指令的 ASCII smuggling 已被垃圾邮件采用,单日检测量从约 2.1 万条飙升至 250 万条。
一种原本用于在人眼不可见的情况下向 AI 智能体(Agent)投喂恶意指令的手法,如今被垃圾邮件发送者接手。微软在周四发布的分析中表示,名为 ASCII smuggling 的技术正被用来绕过邮件平台标记群发垃圾信息的过滤器。
该手法两年前因让提示注入(prompt injection)攻击更隐蔽而受到关注。恶意指令不写成普通文本,而是用 Unicode 中一段特殊的标签字符表示:码位 U+E0041 对应“A”,U+E0061 对应“a”。这组 128 个标签几乎完整复刻了 ASCII 的一部分,唯一的关键差别在于,这些字符计算机可读,但按设计对人几乎完全不可见。于是大语言模型(LLM)能读到指令,而阅读邮件的人什么都看不到。
单日 2.1 万到 250 万
微软今年年初观察到使用该技术的垃圾邮件大幅增加。从 2 月初的某一天起,Microsoft Defender for Office 检测到的 ASCII smuggling 特征数量从每天约 2.1 万条升至 130 万条以上,四天内进一步跳到 250 万条。这一态势持续数月,到 5 月中旬急速回落。
微软解释称,标签字符对人不可见但存在于文本处理层面,“这一特性既便于把指令偷运进模型,也便于在检测器评估之前混淆关键词。意图相反,但机制相似,用户不会起疑。”
让分词器失效
垃圾邮件发送者针对的是搜索金额以及群发邮件中常见的“credit”“term”等词的过滤器。例如在 funding 一词中间插入不可见字符,过滤器可能读到 fun 和 ding,而收件人看到的仍是 funding。
伪装触发词并非新招:零宽空格和不换行空格几十年来一直被用于同样目的,可以破坏字面匹配,改变正则过滤器追踪的字节序列。部分垃圾邮件过滤器此前尚未针对这些 Unicode 标签编程,而更主要的目标是日益主导垃圾邮件与钓鱼分类的机器学习(ML)和自然语言处理(NLP)模型。除非过滤系统对邮件截图并做 OCR 提取,否则可能漏掉此类攻击。分类器通常先把文本切成词元或子词片段,插入不可见的 U+E0020 后,分词器可能不再识别原有单元,而是切出 fun、一个意外的标签字符和 ding,或产生罕见、未知的子词;若先执行规范化,该字符会被直接移除,还原成 funding。
微软的文章同时给出了开发者应对这一技术的过滤器编写建议,详情见 Ars Technica 的报道。