微软构建了提示注入检测器,却意外捕获了一场钓鱼攻击。

微软构建了提示注入检测器,却意外捕获了一场钓鱼攻击。

💡 原文英文,约800词,阅读约需3分钟。
📝

内容提要

微软披露一种利用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标签字符有合法用途,例如英格兰、苏格兰和威尔士的旗帜表情符号依赖不可见的标签字符序列来渲染。微软的初始检测签名曾误报这些旗帜,后来才添加了例外。

🏷️

标签

➡️

继续阅读