\n\n微软发现攻击者利用不可见Unicode标签字符绕过垃圾邮件过滤器,实施大规模网络钓鱼。这种被称为“ASCII走私”的技术通过干扰模型词法分析,不仅影响传统邮件安全,也对AI系统的文本处理和提示词注入防御构成了潜在威胁。
译自:Microsoft built a prompt injection detector. Then it caught a phishing campaign instead.
作者:Amanda Caswell
微软上周标记了一场网络钓鱼活动,该活动利用了机器读取文本方式中的一个漏洞。攻击者正在将不可见的Unicode标签字符插入邮件正文中;它们在屏幕上不会呈现,但会改变软件处理时的底层字符串。
该公司表示,攻击者已经在大规模使用这种技术来绕过垃圾邮件过滤器和基于机器学习的分类器,同样的方法也可能对经常从外部来源获取文本的AI系统造成问题。
标签字符分割关键词
安全研究人员记录了一种针对大语言模型(LLM)的几乎相同的技术,通常被称为“ASCII走私”(ASCII Smuggling),它使用了 U+E0000 到 U+E007F 范围内的Unicode标签字符——这些代码点存在于字符流中,但大多数界面不会显示。
这让你得到了同一文本的两个版本:人类阅读的内容和软件接收的内容。
例如:
Human view: funding
Under the hood: fun⟨U+E0020⟩ding
在 Microsoft Defender for Office 365 追踪的活动 中,攻击者并没有使用标签字符将隐藏指令塞入AI模型。他们将这些字符置于与金融钓鱼相关的敏感词中,例如“funding”、“loan”和“credit”,这样扫描这些词汇的过滤器就无法再找到精确匹配项。
一个用于检测“ASCII走私”的狩猎签名在活动开始的前一天触发了大约 21,000 条消息,而在第二天,它触发了超过 130 万条。随后,仅仅两天后,数量就超过了 230 万条。在此期间,收件人看到的只是看似正常的 商业贷款和信贷额度优惠。
仅仅两天后,数量就超过了 230 万条。
分词器对它们的解析方式不同
自然语言处理(NLP)系统在处理文本之前将其分解为词元(token),在一个单词中插入一个意外的Unicode字符可能会改变这些词元的形成方式。研究人员已经证明,编码技术可以将对抗性内容从AI系统中隐藏起来,尽管微软发现的这场活动利用该技巧的目的不同。
自然语言处理(NLP)系统在处理文本之前将其分解为词元(token),在一个单词中插入一个意外的Unicode字符可能会改变这些词元的形成方式。
具体发生的情况取决于分词器(tokenizer)。有些分词器可能会忽略标签字符,而另一些则会以不同的方式分割周围的文本,因此开发人员必须测试他们实际使用的模型,而不是假设它们都会以同样的方式表现。
通过标准Unicode归一化处理文本也不一定会移除这些标签。NFC 和 NFD 可以清理同一字符的不同表示形式,但它们并非设计用于剥离Unicode标签字符,这意味着这些标签仍然可能进入处理流程的下一步。
代理缺乏邮件的防御机制
除了包含的词汇之外,电子邮件提供商还有其他方法来识别可疑消息,但AI管道可能在信息量少得多的情况下工作。
当代理从外部提取文本并使用它来决定下一步操作时,这就会成为一个问题,因为埋在文本中的那些不可见字符可能会改变其在传输过程中的处理方式,同时也使得在查看原始文本的人更难发现隐藏的提示词注入。
在进入模型前进行归一化
对于没有理由接受 U+E0000 到 U+E007F 范围内字符的应用程序,最简单的方法是在文本到达模型之前将其删除,尽管当应用程序有正当理由保留它们时,这会变得更加棘手。
在这种情况下,开发人员可以将原始文本与删除了标签的版本进行比较,并寻找任何变化,同时测试应用程序实际使用的分词器,查看它如何处理相同的字符。无论清理了什么,都应该在整个管道的后续步骤中保持这种状态,而不是检查一个版本的文本,然后将未触动的原始版本发送给大语言模型。
分区标志的边缘情况
剥离每一个Unicode标签字符并不总是安全的,因为有些字符具有正当用途。英格兰、苏格兰和威尔士的分区标志表情符号依赖于不可见的标签字符序列来呈现,微软最初的狩猎签名范围过广,在团队排除明确的例外情况之前,它曾误报这些标志。
剥离每一个Unicode标签字符并不总是安全的,因为有些字符具有正当用途。全 工智能