前言
该漏洞已提交微软并获得修复,官方地址:https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-38625
漏洞成因
调用堆栈:NtTraceEvent->EtwpWriteUserEvent -> Crash
,EtwpWriteUserEvent 函数存在一个整数溢出漏洞 在最新版的Windows Server 2008 SP2 中可复现,可以导致Kernel Pool越界写,通过攻击者精心构造的内存布局可以达到权限提升的目的。
漏洞挖掘
由于是 Kernel Pool OverFlow 所以引发的错误多种多样:
调用 NtTraceEvent 函数 Flag 设置为0x03,经过一些判断条件后会调用到EtwpWriteUserEvent函数。
主要注意的是 ObReferenceObjectByHandle 函数,我们要传入一个 EtwpRegistrationObjectType 句柄,并且该句柄要启动跟踪功能。
EtwpWriteUserEvent 函数中此处存在一个整数溢出, EtwpReserveTraceBuffer 函数的第二个参数为分配内存的大小,该函数返回值是一个Large Pool中的一部分,其自己实现了内存管理机制,在此不过多赘述。
分配完内存后,该函数会初始化内存,此处就存在一个越界写,后续还有大量字符拷贝,设置结构体等操作。只要执行次数过多,覆盖了其他块的结构或触发访问异常,则会导致BSOD。
因为是整数溢出导致的池溢出,所以触发的异常是多种多样的。
原文始发于微信公众号(凌驭空间):NtosKrnl Event整数溢出漏洞挖掘
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论