CVE-2019-0797 windows 0 day漏洞分析 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

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

ang010ela 漏洞 2019-03-15 10:58:53
199976
收藏

导语:Kaspersky研究人员又发现一个Windows操作的竞争条件0 day漏洞CVE-2019-0797。

概述

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无法在沙箱中被利用。


  • 分享至
取消

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

扫码支持

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

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2024 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务