HeadlinesBriefing HeadlinesBriefing.com

Android 宽字符漏洞影响 Emoji 与 CJK 文本

Hacker News •
×

在 2026 年 9 月发布的 Android 17 版本中,当拒绝集包含两个或以上均小于 U+0100 的字符时,wcscspn() 和 wcspbrk() 会将每个大于或等于 0x100 的 wchar_t 都视为匹配。一旦文本中包含 Emoji、CJK、西里尔字母、希腊字母或拉丁扩展字符,这一问题就会破坏对换行符等 ASCII 分隔符的宽字符串扫描。

该漏洞源于一个 256 字节查找表的实现方式:遇到任何超过 U+00FF 的字符时扫描即告停止,并错误地将其报告为匹配。2026 年 9 月构建版本的设备均受影响,包括 Pixel 7 和 Pixel 8a,而运行 Android 16 的 Nothing Phone 2 不受影响。该回归问题出现在 2026 年 6 月的公共源代码与 9 月构建版本之间。

此问题已影响到实际应用,例如 Visual Pinball:VBScript 注释中的 Emoji 会导致词法分析器误判行尾;文件路径处理中,大于或等于 U+0100 的字符则被当作通配符模式。测试用例 EXPECT_EQ(3u, wcscspn(L"a\u0100b\n", L"x\n")) 可以暴露该缺陷。2026 年 6 月的 Android 公共源代码从 external/llvm-libc 中构建出正确的 wcscspn/wcspbrk,证实回归发生在 9 月的 libc.so 更新中。

来源: Hacker News · 由HeadlinesBriefing整理摘要