事件还原
德国安全研究员Sabri Haddouche发现了多个被他统称为Mailsploit的漏洞。攻击者能利用这些漏洞伪装身份,而且在某些情况下能在用户计算机中执行恶意代码。虽然Mailsploit远程代码执行的能力让人担心,但实际上真正的问题是邮件欺诈攻击。这种攻击能规避所有现代反欺诈保护机制如DMARC (DKIM/SPF) 或多种垃圾邮件过滤器。
如此,攻击者就能伪装邮件身份来发送邮件,而这种虚假身份难以检测;从而导致钓鱼攻击和携带恶意软件的邮件更难被发现。
Mailsploit的运行机制
Mailsploit漏洞源于邮件服务器如何解释通过RFC-1342编码的邮件地址。RFC-1342是于1992年采用的用于描述邮件头部非ASCII字符的编码标准。按照规则,一封邮件头部包含的所有内容都必须是ASCII字符。邮件标准的作者采用RFC-1342将非ASCII字符自动转换为标准的ASCII字符,并且当带有非ASCII主体或邮件地址通过服务器时避免产生错误。
Haddouche发现大量邮件客户端会采用RFC-1342编码字符串,并解码为非ASCII字符,但随后不会进行清洁检查是否存在恶意代码。另外,如果RFC-1342解码的邮件字符串包含一个空字节或两个及以上的邮件地址,那么邮件客户端只读取空字节之前的邮件地址,或者是遇到的第一个有效邮件。这意味着攻击者创建的用户名实际上是通过RFC-1342编码字符串的有效邮件地址。
在邮件客户端中,它被解码为:
解析这些字符串的易受攻击邮件客户端仅读取第一个邮件地址 (potus@whitehouse.gov) 而忽略真实的邮件域 (@mailsploit.com)。原因如上所述,是因为存在空字节或者因为potus@whitehouse.gov是客户端遇到的第一个有效邮件地址,因此会忽略其余的字符串。
33个邮件客户端和服务已受影响
Haddouche在今年早些时候发现了Mailsploit漏洞,并表示测试了多个客户端和web服务来检查它们是否易受攻击。他在一份Google Docs文档中列出了相关结果。
尽管私下跟所有易受攻击的邮件客户端和服务取得联系,但他表示在这33家易受攻击的客户端中,只有8家发布了补丁来更正这个邮件地址解析bug;12家供应商并未回复何时以及是否会推出修复方案,而12家供应商甚至并没有承认发出的bug报告。Mozilla和Opera表示就目前情况来看他们不会修复这个bug,理由是他们认为它是一个服务器端的问题。
DMARC无法检测邮件欺骗问题
更糟糕的是,经由Mailsploit方法编码的邮件地址看起来跟运行反欺骗协议如DMARC的现代邮件服务器并无二致。Haddouche解释称,“DMARC并没有遭受直接攻击,而是利用客户端展示邮件发送人的名称被绕过了。服务器仍然会正确验证原始域名而非欺骗性域名的DKIM签名。这就导致在目前情况下欺骗性邮件实际上是无法阻止的。”
Mailsploit也可在某些机器上运行代码
另外,这些Mailsploit缺陷还能让攻击者将多个邮件地址隐藏到邮件的 “From:” 字段,这样攻击者还能打包真实的恶意代码。一些在清洁解码字符串方面做得极其差劲的网络邮件客户端会执行这个payload,并在用户电脑上运行恶意代码如XSS和其它代码注入攻击。好在并非所有易受Mailsploit缺陷攻击的客户端都易遭受代码注入攻击,也就是说在某些情况下它们部署了基本的邮件地址过滤措施。