一、执行摘要

Unicode 标准极大增强了互联网的国际化能力,使得全球用户可以使用本地语言文字访问互联网服务。然而,这份包容性也被滥用于钓鱼攻击与社会工程——攻击者利用视觉上难以区分的 Unicode 字符(即"同形字")来伪造合法的域名与邮箱地址。

例如,希腊字母 ο(omicron,U+03BF)与拉丁字母 o(U+006F)在绝大多数屏幕字体下几乎无法区分;西里尔字母 а(U+0430)与拉丁字母 a(U+0061)同样如此。攻击者可注册含这些视觉混淆字符的域名(如将 paypal.com 中的字母替换为同形字符),并使用该域名发送看似来自官方的钓鱼邮件。

本文档由 M3AAWG(Messaging, Malware and Mobile Anti-Abuse Working Group)于 2016 年 2 月发布,为邮件运营商、客户端开发者和域名注册商提供 Unicode 滥用防御的最佳实践建议。核心推荐策略包括:对入站及出站邮件中的邮箱地址与域名实施 Unicode 限制性检查(Restriction Level Detection),以及对邮件内嵌 URL/链接进行主动检测。

二、背景

2.1 国际化域名与国际化邮箱地址

国际化域名(Internationalized Domain Name, IDN)允许在域名中使用 Unicode 字符(非 ASCII),通过 Punycode 编码(RFC 3492)在 DNS 层面传输。国际化邮箱地址(Email Address Internationalization, EAI, RFC 5335 及后续标准)则允许邮箱本地部分也使用 Unicode 字符。

这两项技术的普及带来了新的安全挑战:同形字符(Homoglyph)可被用于构造视觉上几乎与合法地址完全一致的钓鱼地址。

2.2 Unicode TR39 — Unified Security Model for Identifiers

Unicode 技术标准 #39(UTS #39)定义了 Unicode 标识符统一安全模型,其中包括一组"限制级别"(Restriction Levels),用于评估一个 Unicode 字符串的混用风险:

UTR #36(Unicode Security Considerations)和 UTS #39 共同构成了本文所依赖的安全理论基础。

2.3 三种检查实体

在邮件系统的上下文中,Unicode 滥用防御需要检查三类实体:

  1. 邮箱本地部分(Local Part)—— @ 前面的部分
  2. 邮箱域名(Domain)—— @ 后面的部分
  3. URL 中的域名—— 邮件正文内嵌链接的域名

每一类实体均需独立的检查策略,因为其允许的字符集和上下文约束各不相同。

三、邮件最佳实践

3.1 收信检查

邮件接收方(MTA / MDA / 邮件安全网关)应在处理入站邮件时,对以下邮件头字段中的邮箱地址执行 Unicode 滥用检查:

当在上述字段中检测到可疑的 Unicode 字符使用模式时,接收方可选择:拒收邮件、标记为垃圾/钓鱼、或触发额外验证。

3.2 发信检查

邮件发送方同样应在出站邮件上执行 Unicode 检查,特别是对以下字段:

发信端应当检测发送者自身域名中是否存在疑似的 Unicode 滥用,以避免合法域名被仿冒。

3.3 检查项与建议决策对照表

M3AAWG 定义了下述 5 类检查项及其对应的建议处理决策:

检查条件 描述 建议决策
1. 禁用码点扫描
(Disallowed Codepoint Scan)
检查字符串中是否包含 UTS #39 定义的"禁用码点"(例如控制字符、私用区字符、非字符等)。 若检测到禁用码点,直接拒收/拒绝(reject)。这些字符不应出现在合法邮件地址或域名中。
2. Highly Restrictive 级别检测
(Highly Restrictive Check)
将整个字符串的 Unicode 限制级别要求设定为 Highly Restrictive,即仅允许单一脚本内的字符。对于邮箱(含域名),这是推荐的严格级别。 若字符串未通过 Highly Restrictive 检测,根据业务策略标记为可疑(flag)或拒收(reject)。对来自可信域的邮件可适当放宽。
3. 混合数字检测
(Mixed Number Detection)
检测字符串中是否混合使用了不同脚本的数字/数字形状。例如拉丁数字 123 与其他计数系统数字的混合。 若发现混合数字,标记为可疑(flag)。这种情况极为罕见,几乎总意味着人为构造的欺骗。
4. 多重非间距组合标记检测
(Multiple Non-Spacing Marks)
检测字符串中是否存在多个连续的非间距组合标记(combining diacritical marks),这可能被用于构造视觉上与合法字符串相似的伪装。 若发现多重非间距组合标记,标记为可疑(flag)。合法的邮箱地址极少同时使用两个以上的组合标记。
5. 混合脚本检测
(Mixed Script Detection)
检测是否在不同位置混合使用了不同脚本的字符(例如域名的拉丁字母标签中出现西里尔字符),使用 UTS #39 的脚本混合检测机制。 根据混合的脚本组合判定风险等级。常见的"高信任"脚本组合(如拉丁 + 中文)可接受;"低信任"组合(如拉丁 + 西里尔/希腊)应标记或拒收

3.4 域名 Punycode 与显示策略

对于 IDN 域名,邮件客户端应当在 UI 层面采取以下策略:

四、邮件外使用最佳实践

4.1 URL 与链接中的域名

邮件正文中的 URL(超链接)是 Unicode 钓鱼攻击的重要载体。攻击者可能:

建议实践:

4.2 文档名与标签名

除邮件域外,Unicode 同形滥用还出现在:

建议对上述所有字段实施与邮箱地址一致的 Unicode 安全检查。

五、结论

同形字符欺诈(Homoglyph Spoofing)是 Unicode 普及化过程中不可忽视的安全威胁。M3AAWG 建议行业参与者——包括邮件服务提供商、域名注册商、浏览器厂商和邮件客户端开发者——协同采取以下措施:

通过全行业的协同努力,我们可以在享受国际化互联网便利的同时,有效遏制基于 Unicode 同形字符的社会工程攻击。

六、参考文献

  1. Unicode Technical Standard #39: Unicode Security Mechanisms (UTS #39). https://www.unicode.org/reports/tr39/
  2. Unicode Technical Report #36: Unicode Security Considerations (UTR #36). https://www.unicode.org/reports/tr36/
  3. RFC 5322: Internet Message Format. https://tools.ietf.org/html/rfc5322
  4. RFC 5321: Simple Mail Transfer Protocol. https://tools.ietf.org/html/rfc5321
  5. RFC 3492: Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA). https://tools.ietf.org/html/rfc3492
  6. RFC 5891: Internationalized Domain Names in Applications (IDNA): Protocol. https://tools.ietf.org/html/rfc5891
  7. RFC 5335: Internationalized Email Headers. https://tools.ietf.org/html/rfc5335
  8. M3AAWG Best Practices for Unicode Abuse Prevention, February 2016. Messaging, Malware and Mobile Anti-Abuse Working Group (M3AAWG).

七、国内场景补充

7.1 中文环境中的 Unicode 风险

中文互联网用户面临以下几类特有的 Unicode 混淆风险:

7.2 国内邮件厂商的实践

腾讯企业邮、阿里企业邮等国内主流邮件服务商在 IDN/Unicode 安全方面已实施一系列措施:

7.3 对国内邮件系统运营者的建议

结合 M3AAWG 框架与国内实际环境,建议国内邮件系统运营者: