欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

CVE-2019-0797 windows 0 day漏洞分析

来源:本站整理 作者:佚名 时间:2019-03-17 TAG: 我要投稿

2019年2月,Kaspersky的Automatic Exploit Prevention (AEP)系统检测到尝试利用Windows操作系统漏洞的事件。研究人员进一步分析发现了位于win32k.sys的0 day漏洞。研究人员于2月22日将该漏洞报告给微软,微软确认了该漏洞,漏洞CVE编号CVE-2019-0797。目前微软已经发布了一个补丁。

这是AEP系统连续发现的Windows系统中的第4个本地权限提升漏洞。研究人员相信该漏洞已经被FruityArmor、SandCat等攻击者使用了。SandCat是新出现的APT组织,除了CVE-2019-0797和CHAINSHOT外,SandCat还使用FinFisher/FinSpy框架。
CVE-2019-0797漏洞分析
CVE-2019-0797是位于win32k驱动中的竞争条件引起的,具体是由于NtDCompositionDiscardFrame和NtDCompositionDestroyConnection中间未记录的系统调用缺乏适当的同步。有漏洞的代码如下所示:

NtDCompositionDiscardFrame syscall代码(Windows 8.1)
从上图的NtDCompositionDiscardFrame syscall简化逻辑中可以看出,代码需要一个在DirectComposition::CConnection结构中与帧操作相关的锁,并尝试找出与给定id对应的帧,最后在该帧上调用释放。具体问题如下图所示:

NtDCompositionDestroyConnection syscall内部函数(Windows 8.1)
从函数DiscardAllCompositionFrames的简化逻辑的截图可以看出它是在NtDCompositionDestroyConnection syscall调用的,不需要锁和调用释放所有分配的帧的函数DiscardAllCompositionFrames。问题在于当系统调用NtDCompositionDiscardFrame和NtDCompositionDestroyConnection同时执行时,函数DiscardAllCompositionFrames可能在当NtDCompositionDiscardFrame syscall正在寻找帧或已经找到帧的情况下执行。这就导致了一个UAF(use-after-free)场景。
研究人员还发现了其他2个类似的竞争条件0 day漏洞利用,分别是CVE-2018-8589和CVE-2018-8611。

如果模块文件名含有字符串chrome.exe就停止执行
研究人员该漏洞利用实际攻击的是64位的操作系统,具体从Windows 8到Windows 10 build 15063都有。这些操作系统的利用过程并没有很大差别,都使用heap spraying palettes和accelerator tables来泄露kernel地址。在Windows 10 build 14393及更高版本的操作系统利用中使用的是palettes。除此之外,漏洞利用会检查是否在Google chrome中运行,如果是就停止执行,因为CVE-2019-0797无法在沙箱中被利用。
 

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载