Facebook WhatsApp TLS令牌泄漏漏洞复现(CVE-2021-24027)

发布时间 2021-04-30

背景


WhatsApp是美国Facebook的即时通讯应用,在海外拥有庞大的用户基数。4月14日,安全研究员Chariton Karamitas披露Android WhatsApp存在令牌泄露漏洞,结合其他漏洞可导致远程代码执行。该漏洞影响WhatsApp v2.21.4.18和WhatsApp Business v2.21.4.18之前的版本,建议用户及时更新到2.21.4.18或更高版本,以规避该漏洞存在的攻击风险。


漏洞分析


1、令牌泄露漏洞(CVE-2021-24027)


该漏洞存在的原因,是由于WhatsApp将TLS会话登陆后的序列化令牌文件放在了sdcard目录下,该目录并未设置访问权限。


WhatsApp采用TLS1.3/TLS1.2来进行客户端到服务器的通信,在TLS握手的过程中,通信双方进行相互认证和密钥协商,服务器身份验证使用非对称加密方式,对于较小尺寸的嵌入式设备,这是一个计算量非常大的过程。为了减少功耗,节省CPU周期,提出了会话恢复过程,当重新建立握手时,复用之前的会话信息。


下图中为设置会话缓存文件夹的反编译代码截图及实际文件路径截图,WhatsApp将登陆会话缓存TLS1.2和TLS1.3分别放在文件夹SSLSessionCache和watls-sessions中。这些目录在不受保护的外部存储下。攻击者可以通过物理接触手机获得这些文件,造成令牌泄漏。

1.png

2.png

3.png


2、目录穿越漏洞


WhatsApp有Emoji和照片滤镜热更新功能,我们可以利用中间人来篡改Emoji或照片滤镜热更新时的zip包。zip文件解压反编译代码截图如下:


4.png

5.png


WhatsApp进行Emoji或照片滤镜热更新时,没有过滤”.//”,可导致目录穿越。如果受害者被中间人劫持,并且攻击者篡改了热更新zip包,其中包含由”.//”目录构成的so文件,使其覆盖WhatsApp动态链接库so文件,将导致任意代码执行。


漏洞利用


前面提到需要通过物理接触获取令牌,局限性较大。如果攻击者配合网络钓鱼,发送一个伪装的html文件给受害者,当受害者使用Chrome(存在漏洞CVE-2020-6516)打开此html时,执行html中的js代码,遍历sdcard文件夹查找TLS缓存文件,并把文件发送到攻击者指定的服务器上。大致过程如下:


(1)在发送一条消息时,包含消息的类型、消息的预览图片、消息的标题和消息的实际内容文件四部分。类路径X/041的A0l字段指示发送消息的类型,类路径X/0Qe的A03字段指示消息的预览图片的byte数组,类路径X/0Nd的A04字段指示发送消息的标题,类路径X/0M6的A05(Ljava/util/List;Landroid/net/Uri;Ljava/lang/String;LX/041;LX/02l;Z)方法为最终发送消息实际内容文件的函数。相关截图如下:


6.png

7.png

8.png9.png


(2)攻击者采用frida的RPC远程调用功能创建一个函数,并在hook函数中修改第一步中待发送的消息,将消息的预览图片更换成具有吸引力的图片,并调用X/0M6的A05(Ljava/util/List;Landroid/net/Uri;Ljava/lang/String;LX/041;LX/02l;Z)方法将消息发送给受害者(第一个参数为由受害者的WhatsApp地址构成的List,WhatApp地址格式为mobile_number@s.whatsapp.net),如果受害者点击图片,调用Chrome打开恶意html文件,TLS缓存令牌可能被发送到攻击者服务器。


(3)html文件关键部分截图如下。在成功获取到TLS缓存文件后,我们即可进行中间人攻击。


10.png

11.png


(4)利用Emoji或照片滤镜热更新功能,通过中间人来篡改Emoji或照片滤镜热更新响应zip包,从而导致远程任意代码执行(演示视频为了方便,直接使用Charles来模拟热更新覆盖WhatsApp动态链接库so文件,来达到RCE的过程)。


漏洞复现


1、令牌泄露漏洞复现



 2、RCE漏洞复现


参考链接:

[1]https://www.census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/

[2] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-24027

[3] https://github.com/CENSUS/whatsapp-mitd-mitm

[4] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-6516

[5]https://bugs.chromium.org/p/chromium/issues/detail?id=1092449

[6] https://youtu.be/sdVqTEXHxxY

[7] https://youtu.be/KO_K0F4W36I


启明星辰积极防御实验室(ADLab)


ADLab成立于1999年,是中国安全行业最早成立的攻防技术研究实验室之一,微软MAPP计划核心成员,“黑雀攻击”概念首推者。截止目前,ADLab已通过CVE累计发布安全漏洞近1100个,通过 CNVD/CNNVD累计发布安全漏洞1000余个,持续保持国际网络安全领域一流水准。实验室研究方向涵盖操作系统与应用系统安全研究、智能终端安全研究、物联网智能设备安全研究、Web安全研究、工控系统安全研究、云安全研究。研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。


adlab.jpg