MailSploit:30多种邮件客户端存在电邮身份伪造漏洞

近日,德国安全研究员 Sabri Haddouche发现30多种邮件客户端中存在漏洞,可以让任意用户伪造身份发送欺诈邮件并绕过反欺诈保护机制(如 DMARC 等)和多种垃圾邮件过滤器,Sabri把这些邮件客户端漏洞集统称为MailSploit,目前它主要影响 Apple Mail(macOS, iOS, and watchOS)、Mozilla Thunderbird、 部分 Microsoft 客户端、Yahoo Mail、ProtonMail 等,MailSploit漏洞集目前主要包括邮件身份伪造漏洞、邮件跨站漏洞(XSS)和代码注入漏洞。

电邮身份伪造背景

90年代和2000年初期,电邮身份(Email identity)很容易被伪造,只需把邮件发送的“From”头区域修改为父母、重要人士或执法机构等其它名称内容,甚至还有专门制作伪造邮件的网站。但是,随着反欺诈保护和邮件过滤机制的应用,这些恶意技巧就失效了。如今,邮件服务端的各种反欺诈保护和邮件过滤手段都能检测到“From”区域的伪造内容,由于其高效的沟通能力,电邮服务和我们形影不离,但这种手段也并不安全,大量恶意软件、钓鱼链接和勒索病毒利用电邮进行传播扩散。

那么,现在,是否存在一种手段像1999年那样,能轻松绕过DMARC伪造发件人呢?有的!

MailSploit工作机制

Mailsploit就是一种新型的电邮身份伪造手段,攻击者可以使用它伪造任意用户身份进行邮件发送,我用邮件地址potus@whitehouse.gov做个示例(其它邮件地址也可以),整个伪造流程是这样的:在一封电邮中,包括”From”区域在内所有的头信息都必须是ASCII字符,主要问题在于用以区分MTA处理机制的非ASCII字符编码表示协议RFC-1342上。

RFC-1342:把电邮主题或地址部分的非ASCII字符编码转换为ASCII字符,以避免邮件服务端发生传输错误。

但很多邮件客户端和Web登录接口在采用RFC-1342对非ASCII字符编码后,都不会对用来伪造电邮身份的编码字符进行有效检查,就像这样:

=?utf-8?b?[BASE-64]?= =?utf-8?Q?[QUOTED-PRINTABLE]?=

以上Base64和QUOTED-PRINTABLE(可打印字符引用编码)两种表示方式都可行,但使用新行或空字节等控制字符组合,可以让我们隐藏或删除原始电邮的域名后缀部分,从而允许我们将其替换。因为:

iOS系统存在空字节注入影响 macOS存在“email(name)”注入

也就是说,如果RFC-1342解析的邮件字符中包含空字节或两个或更多电邮地址,邮件客户端最终只会显示空字节或有效电邮地址之前的伪造地址。上述两种方式结合可在iOS和macOS系统中有效执行伪造,攻击者可以像这样把伪造的电邮地址有效经过RFC-1342编码:

编码后变为:

该From信息被邮件客户端解析后就变为这个:

邮件客户端经过解析后只会显示第一个电邮地址potus@whitehouse.gov,而忽略了真实的电邮域名@mailsploit.com。

30多种电邮客户端受影响

据安全研究员Sabri声称,目前有超过30多种的电邮客户端受到影响(具体列表),在其联系了各家受影响厂商后,只有8家及时修复了该邮件解析漏洞,12家确认了漏洞但并未明确给出具体的修复日期,另有12家还未确认该漏洞。Mozilla和Opera明确表示,这是客户服务端问题,他们不会修复这种漏洞。

另外,攻击者利用Mailsploit漏洞集,还能隐藏恶意代码,或是在webmail客户端执行XSS或代码注入等攻击(详见Demo),好在不是所有邮件客户端都受Mailsploit漏洞集影响,目前来说影响还不算特别严重。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-12-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java进阶架构师

dubbo源码解析-详解directory

由于明天还要加班(心疼自己一秒),之前答应过小伙伴每周更新一篇dubbo的源码解析的,鉴于上次讲到了集群容错的总体架构,这次主要讲讲第一个关键词director...

10250
来自专栏FreeBuf

趋势OfficeScan系列产品漏洞分析

作者 Shadowkeeper OfficeScan是趋势科技开发的一套专为网路环境的桌上型电脑和行动用户端所提供的即时、全面的防毒解决方案。安全公司Silen...

26680
来自专栏IT派

10 个技巧,让你更专业地使用 console 进行 JS 调试

首先,我必须承认这一点,我将利用这个平台从我的开发环境中清理出骨架(轮廓)。有时候,我所做的“魔法”(有些人称之为“编码”),并不像我的同事在为他们展示这些宏伟...

12100
来自专栏Python中文社区

新浪微博爬虫最新分享

專 欄 ❈ 九茶,Python工程师,目前居于广州。Github知名开源爬虫QQSpider和SinaSpider作 者,经常会在CSDN上分享一些爬虫、数据...

26580
来自专栏知识分享

曾经的UCOSii

我只是来分享自己的UCOS学习资料的,,顺便叨叨 ,自己是看着任哲的书一点一点学的,,, 自己大四的时候学的UCOSii,,但是好像学了之后,就只有一次真正使用...

48330
来自专栏张善友的专栏

beagle MONO 应用的desktop search

      beagle是linux的desktop search软件,跟winows下的google desktop search类似的东西,它可以搜索各种各...

20770
来自专栏Python中文社区

使用Python自动生成报表以邮件发送

数据分析师肯定每天都被各种各样的数据数据报表搞得焦头烂额,老板的,运营的、产品的等等。而且大部分报表都是重复性的工作,这篇文章就是帮助大家如何用Python来实...

55950
来自专栏Android相关

处理器结构--PipeLine&SuperScalar

最初开始,指令一条一条顺序执行,后来当工艺进步了,CPU中的元件越来越多,而在原来的顺序执行的过程中,只有一条指令的某一个阶段在执行,如取指,取数据等等,其他元...

16250
来自专栏拂晓风起

Flash打开新窗口 被浏览器拦截问题 navigateToURL被拦截 真正试验结果

16950
来自专栏web前端教室

浏览器缓存是嘛?

浏览器的缓存这个东西,我是又爱又恨。爱的是它可以存一些东西在客户端节省资源、提高效率;恨的是你在缓存有时会造成用户那边的信息不更新,你这些修改了,那边收不到。尤...

22160

扫码关注云+社区

领取腾讯云代金券