CVE-2019-3568: WhatsApp 0 day漏洞分析

ang010ela 漏洞 2019年5月16日发布
Favorite收藏

导语:checkepoint研究人员对CVE-2019-3568——WhatsApp源城区溢出0 day漏洞进行了分析。

概述

5月14日,《金融时报》(Financial Times)报道称攻击者正利用WhatsApp的一个漏洞向受害者手机注入以色列公司NSO Group开发的先进间谍软件。WhatsApp是最流行的消息应用之一,在全世界有15亿用户。该公司的研究人员是在本月初发现这个缓冲溢出漏洞的,编号为CVE-2019-3568的漏洞存在于应用程序的VOIP堆栈中,允许攻击者向目标手机号码发送特制的SRTCP包实现远程执行代码。在iPhone或Android设备上该漏洞可以通过WhatsApp呼叫功能进行利用。整个攻击过程中不需要用户交互,受害者并不需要接听电话,呼叫记录通常也不会显示在日志里。

WhatsApp公司称已经在上周五发布的更新中修改了该漏洞。加拿大多伦多大学公民实验室的研究人员称,在WhatsApp工程师忙于堵上漏洞时有攻击者利用该漏洞针对了一位英国人权律师。对于攻击者利用NSO Group的间谍软件,该公司表示正在进行调查。

该漏洞CVE编号为CVE-2019-3568,Check Point研究人员对该漏洞进行了技术分析。

技术细节

Facebook的安全建议描述该漏洞为SRTCP协议的缓冲区溢出漏洞,所以研究人员首先对更新后的WhatsApp与之前版本进行差异分析以找出修复的代码。最终研究人员发现了SRTCP模块中的两处代码补丁:

Size Check #1

修复的函数是主要的RTCP handler函数,添加的补丁就在刚开始的位置。添加的校验验证了长度参数的最大值为1480字节(0x5C8)。

研究人员在调试过程中还确认这是RTCP模块中的主要函数,在WhatsApp语通话应答之前还会调用。

Size Check #2

在下面两个函数的流之间研究人员发现新添加的处理检查过程中(蓝色标注),该长度变量被使用过两次:

1.验证package的长度域是否超过长度;

2.在内存夫之前,检查长度是否小于等于1480。

从中可以看出,第二个检查包括新添加的log字符串,这正式为了预防溢出而进行的检查。

总结

WhatsApp应用程序中实现了复杂的STRCP协议,而且是以原生代码C/C++的形式而不是Java代码的形式实现的。研究人员在分析CVE-2019-3568漏洞过程中发现修复补丁实际上是2个新添加的size检查,即在内存中分析和处理网络包之前先进行大小检查以预防内存溢出。

因为SRTCP模块非常庞大,新版本WhatsApp应用可能也有其他的补丁研究人员并没有注意到。但就目前情况来看,研究人员认为该模块中可能还存在其他的未知漏洞。

本文翻译自:https://research.checkpoint.com/the-nso-whatsapp-vulnerability-this-is-how-it-happened/如若转载,请注明原文地址: https://www.4hou.com/vulnerable/18040.html
点赞 5
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论