介紹
在分析Windows内核漏洞的过程中,我发现一个函数EtwpNotifyGuid存在5个以上的bug,分别是CVE-2020-1033、CVE-2020-1034、CVE-2021- 1662、CVE-2021-1682等。这些漏洞分别是CVE-2020-1033、CVE-2020-1034、CVE-2021- 1662、CVE-2021-1682等。在一个Windows内核函数中存在5个以上的BUG,这是一个非常惊人的事实。
这篇文章将深入了解这些漏洞的细节和微软发布的修复方法。
CVE-2020-1033。Windows 内核信息泄露漏洞
该bug由微软产品安全与漏洞研究团队成员(@gabe_k)披露,并于2020年9月8日进行了修补。它是由于对输入数据的无效检查造成的,具体如下。
rdx寄存器的值没有被验证,并被用作输入缓冲区的偏移量,因此它可以被用来进行界外读取。通过检查rdx寄存器的值,修复了这个错误。
CVE-2020-1034:Windows 内核提升权限漏洞
这个漏洞也被微软产品安全与漏洞研究团队发现,并与CVE-2020-1033同时进行了修补。
Crowdstrike和ZhangGuo的Yarden Shafir立即全面公布了这个漏洞的细节。
CVE-2021-1662。Windows事件追踪权限提升漏洞
该漏洞由DBAPPSecurity的madongze(@闫子双)发现,并于2021年1月12日进行了修补。输入缓冲区的无效绑定检查会导致内核池的越界访问,并导致权限升级。
如你所见,在EtwpValidateTraceControlFilterDescriptors函数中,如果input_buffer_length为0x90,v10为0x40,则可以通过绑定检查,因此可以进行越界访问。这可能会被滥用来进行权限升级利用。
微软通过检查EtwpValidateTraceControlFilterDescriptors函数中的缓冲区长度来修复该错误,具体如下。
CVE-2021-1682: 視窗核心提升權限漏洞 (Windows Kernel Elevation of Privilege Vulner)
这个漏洞也是由DBAPPSecurity成员李敏(@lm0963)发现的,并通过CVE-2021-1662进行了修补。这是一个由无效绑定检查引起的堆缓冲区溢出漏洞。EtwpNotifyGuid函数使用EtwpAllocDataBlock函数复制输入缓冲区,并对其访问偏移量0x50。当然,通过之前的检查,缓冲区大小应该大于0x48,但也可以小于0x50。因此,它会覆盖下一个池头,导致内存损坏。
结论
以上bug中只有一个是信息泄露漏洞,其他的都是权限提升漏洞,可以用来进行Chrome沙盒逃逸。而在NtTraceControl函数的同一控制代码过程中,还有一个漏洞。
这个事实说明ETW组件是Windows内核中非常脆弱的部分,而且这个组件可能会发现更多的漏洞。
本文始发于微信公众号(Khan安全攻防实验室):单一函数中的一系列Windows内核漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论