内容提要
微软披露一种利用Unicode标签字符的钓鱼攻击,攻击者将隐形字符插入“funding”等金融词汇,绕过垃圾邮件过滤和AI分类器,单日检测量超230万。该技术类似“ASCII走私”,可改变文本处理结果,影响NLP和LLM系统。建议在文本进入模型前移除标签字符,但需注意保留合法用途(如旗帜表情符号),并测试实际使用的分词器。
延伸解读
攻击原理:人机看到的文本不一致
攻击者利用Unicode标签字符(U+E0000至U+E007F)插入金融词汇中,这些字符在屏幕上不可见,但会改变软件接收的底层字符串。例如,人看到“funding”,而机器收到的是“fun⟨U+E0020⟩ding”。这种“人机不一致”使得基于关键词匹配的垃圾邮件过滤器失效,同时也可能影响NLP和LLM系统对文本的处理。
规模与影响:单日检测量超230万
微软Defender for Office 365追踪到该攻击,检测量在两天内从约2.1万条消息激增至超过230万条,表明攻击者已大规模使用此技术。虽然此次攻击主要用于绕过金融钓鱼过滤,但类似技术(如ASCII走私)已被证明可隐藏对抗性内容,对依赖外部文本的AI系统构成潜在威胁。
防御建议:移除标签字符需谨慎
微软建议在文本进入模型前移除U+E0000至U+E007F范围的标签字符,但需注意并非所有标签字符都应删除,例如英格兰、苏格兰和威尔士的旗帜表情符号依赖这些字符渲染。开发者应测试实际使用的分词器,并确保清理后的文本在整个处理流程中保持一致,避免检查后仍将原始文本发送给LLM。
Q&A
微软最近披露的钓鱼攻击是如何利用Unicode标签字符的?
攻击者将不可见的Unicode标签字符插入到“funding”、“loan”、“credit”等金融词汇中,这些字符在屏幕上不显示,但会改变底层字符串,从而绕过垃圾邮件过滤器和基于机器学习的分类器。
这种攻击与“ASCII走私”有什么关系?
这种攻击与“ASCII走私”类似,后者是针对LLM的一种技术,利用Unicode标签字符(U+E0000到U+E007F)在字符流中存在但大多数界面不显示的特性,使得人看到的文本和软件处理的文本不同。
这次钓鱼攻击的规模有多大?
微软Defender for Office 365检测到,在攻击开始前一天约有21,000条消息触发警报,第二天超过130万条,两天后超过230万条。
Unicode标签字符如何影响NLP和LLM系统?
NLP系统将文本分词处理,插入意外的Unicode字符可能改变分词结果,具体取决于分词器。有些分词器可能忽略标签字符,有些则可能改变分词方式,从而影响AI系统的处理。
如何防御这种利用Unicode标签字符的攻击?
对于不需要接受U+E0000到U+E007F范围字符的应用,最简单的方法是在文本进入模型前移除这些字符。如果应用有合法用途,可以比较原始文本和移除标签后的版本,并测试实际使用的分词器。清理后的文本应保持干净,避免将原始文本发送给LLM。
为什么不能简单地剥离所有Unicode标签字符?
因为有些Unicode标签字符有合法用途,例如英格兰、苏格兰和威尔士的旗帜表情符号依赖不可见的标签字符序列来渲染。微软的初始检测签名曾误报这些旗帜,后来才添加了例外。