![](/static/images/wz_fx.png)
CVE-2024-30088:Windows内核权限提升漏洞解析
在最近的Windows安全补丁中,CVE-2024-30088是一个引起广泛关注的安全漏洞。这个漏洞存在于Windows内核函数AuthzBasepCopyoutInternalSecurityAttributes中,涉及到内核在将_AUTHZBASEP_SECURITY_ATTRIBUTES_INFORMATION结构从内核对象的当前令牌复制到用户模式时的安全隐患。
漏洞结构解析
该结构的定义如下:
//0x30 bytes (sizeof)struct _AUTHZBASEP_SECURITY_ATTRIBUTES_INFORMATION { ULONG SecurityAttributeCount; //0x0 struct _LIST_ENTRY SecurityAttributesList; //0x8 ULONG WorkingSecurityAttributeCount; //0x18 struct _LIST_ENTRY WorkingSecurityAttributesList; //0x20};
在执行到复制SecurityAttributesList列表时,内核直接将SecurityAttribute的结构列表指向用户提供的指针。此后,它调用RtlCopyUnicodeString和AuthzBasepCopyoutInternalSecurityAttributeValues函数来复制安全属性结构的名称和值,导致该函数中存在多个时间竞争问题(TOCTOU)。
通过在RtlCopyUnicodeString调用前用竞争线程修改属性名称的Buffer指针,攻击者可以轻易地实现对任意地址的写操作,且可控制写入的值和大小。
漏洞触发机制
此漏洞可通过调用NtQueryInformationToken函数,并指定TokenAccesInformation类来触发。
补丁分析
为了解决这一问题,补丁在内核栈上使用局部变量(在代码中为v18)作为缓冲区,先将安全属性的名称复制到该缓冲区,然后再写回用户缓冲区。这种改进显著提高了系统的安全性,防止了通过用户模式调用系统调用时的潜在危险。
...*(_QWORD *)&v18.Length = 0i64;v18.MaximumLength = Flink_low;v18.Buffer = v17;RtlCopyUnicodeString(&v18.Length, (unsigned __int16 *)&Flink[2]);*(_UNICODE_STRING *)(v13 - 0x48) = v18;...
在调试会话中,我们可以看到经过补丁后,rcx寄存器是内核地址:
5: kd> nt!AuthzBasepCopyoutInternalSecurityAttributes+0x1aa:fffff803`5dbcf14a e8810fa5ff call nt!RtlCopyUnicodeString (fffff803`5d6200d0)
演示代码和实验
对于想深入了解该漏洞如何被利用的研究者和安全专家,可以参考这个演示视频链接:漏洞利用演示。
[超站]友情链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
![公众号](/static/images/ewm.jpg)
随时掌握互联网精彩
- 1 绘就农业现代化新图景 7940985
- 2 25岁演员金赛纶在家中去世 7909287
- 3 影院支持《哪吒2》暂不排片《美队4》 7837687
- 4 人勤春来早 开工干劲足 7734618
- 5 老人在飞机上昏迷后猝死 川航回应 7655461
- 6 金赛纶生前曾和金秀贤传绯闻 7591505
- 7 周末打虎!王中和被查 7401694
- 8 小米SU7断轴车主承认欺瞒网友 7367691
- 9 美网友发布看《哪吒2》前必做事项 7249379
- 10 郭德纲回应不让德云社人员直播带货 7196392