CVE-2019-13720:Chrome 0day 漏洞利用

2019年11月8日00:03:18 发表评论

Kaspersky研究人员近日发现一个Google Chrome浏览器的新的未知漏洞利用。经Google研究人员确认,是一个0 day漏洞,CVE编号为CVE-2019-13720

CVE-2019-13720:Chrome 0day 漏洞利用

研究人员将相关攻击活动命名为Operation WizardOpium。目前还无法将该攻击活动与已知的攻击者联系在一起。但研究人员发现部分代码与Lazarus攻击中的代码很相似。从被攻击的站点来看,与早期DarkHotel攻击活动类似。

攻击活动使用了一种对韩语新闻门户的水坑形式的注入。攻击者会把恶意JS代码插入到主页中,恶意JS代码会从远程站点加载一个分析脚本。

一个主页index页面会从hxxp://code.jquery.cdn.behindcorona[.]com/处加载一个标记为JS tag的远程脚本。

该脚本会加载一个名为.charlie.XXXXXXXX.js的脚本。JS代码会通过比较浏览器的用户代理来检查受害者的系统是否感染,用户代理会在64位的Windows版本上运行,而非WOW64进程,并尝试获取浏览器的用户名和版本。

该漏洞会尝试利用Google Chrome浏览器的bug,脚本会检查浏览器版本是否大于65(当前Chrome版本为78)。

在浏览器版本检查后,脚本会执行一些到攻击者控制的服务器(behindcorona[.]com)的AJAX请求,服务器中的路径名会指向传递给脚本(xxxxxxx.php)的参数。第一个请求对于获取一些重要信息是非常必要的。这些信息包括一些十六进制编码的字符串来告诉脚本那些真实漏洞利用代码块会从服务器下载,一些到图像文件的URL,图像文件嵌入了到final payload的key和解密漏洞利用代码的部分块。

下载了所有块后,RC4脚本会解密和连接所有的块,这样攻击者就有了含有所有浏览器漏洞利用的新的JS代码。为了解密这些部分,需要使用之前提取的RC4 key。

浏览器漏洞利用脚本是经过混淆的,在反混淆后,研究人员发现了针对用户代理字符串的另一个检查,这次检查的浏览器版本是76或77。也就是说漏洞利用开发者只在这些版本上工作,或其他漏洞利用已经用于之前的Chrome版本中了。

在浏览器内置的BigInt 类中,有一些函数运行的函数。BigInt 类的作用是在JS代码中进行64位的算术运算。漏洞利用开发者通过与32位数来进行实现这些函数。BigInt 类的作用在浏览器代码中实现的速度更快。漏洞利用开发者并不都使用64位,而是在小范围的数上进行运算。

在真实代码中有很多的函数和变量并没有使用。也就是说这些代码应该是用来调试的,或还没有用于生产中。

代码的大部分使用了一些有特定浏览器组件相关的类。因为该漏洞还没有被修复,本文为未介绍该有漏洞的组件的细节。

该漏洞利用使用了2个线程之间的一个竞争条件漏洞,漏洞的原因是由于错失了适当的同步。漏洞给了攻击者一个UAF条件,因为UAF会导致漏洞执行的场景。

漏洞利用首先会尝试触发UAF来执行关于重要64位地址的信息泄露。这会引发:

1、如果地址成功泄露,就说明漏洞利用正常工作。

2、泄露的地址会用来了解堆或栈的地址,用来处理ASLR技术。

3、提供过搜索附近地址来寻找其他漏洞利用的有用指针。

然后会尝试用递归函数来创建一个大对象的部分。这是通过一些确定性的堆布局来实现的,这对成功的漏洞利用来说是非常重要的。同时会尝试使用堆喷射技术来使用之前UAF部分的指针。该技术会用来引发混淆,使攻击者可以在两个位于相同内存区域的不同的对象之间操作。

漏洞利用会尝试执行大量的操作来分配或释放内存,以给攻击者任意的读写原语。这是用来伪造特殊的对象的,该对象可以与WebAssembly 和FileReader一起来执行嵌入shellcode payload的代码执行。

发表评论

后发表评论