CVE-2025-21333 Windows 堆缓冲区溢出漏洞分析
CVE-2025-21333是微软确认为被威胁攻击者积极利用的漏洞,已于2024年1月14日通过KB5050021补丁修复。该漏洞存在于vkrnlintvsp.sys驱动程序的
VkiRootAdjustSecurityDescriptorForVmwp
函数中,属于堆缓冲区溢出类型。
漏洞分析
漏洞函数剖析
// 伪代码简化版__int64 VkiRootAdjustSecurityDescriptorForVmwp(void *object){// 获取对象安全描述符 SECURITY_DESCRIPTOR* sd = ObGetObjectSecurity(object); ACL* dacl = sd->Dacl;// 计算新ACL大小(存在整数溢出风险) ULONG new_size = dacl->AclSize + 0x30 + 0x10; // 分配易受攻击的内存块 ACL* new_dacl = ExAllocatePool2(PagedPool, new_size, 'oRiV');// 触发溢出的内存拷贝memcpy(new_dacl, dacl, dacl->AclSize); // 溢出点!// 后续操作...}
关键点:
-
dacl->AclSize
由用户控制,可构造超大值引发整数溢出 -
分配的内存小于实际需要,导致 memcpy
时堆溢出 -
溢出可覆盖相邻堆块的控制结构,实现代码执行
漏洞触发路径
-
系统调用链:
NtCreateCrossVmEvent
→ExpCreateCrossVmEvent
→VkiRootCalloutCreateEvent
→VkiRootAdjustSecurityDescriptorForVmwp
-
利用条件:
-
需启用Windows沙箱功能 -
通过构造特制的安全描述符(含畸形DACL) -
使用有效的VMID和ServiceID GUID(来自沙箱进程)
漏洞利用
堆风水策略
-
堆喷布局:
-
使用 WNF_STATE_DATA
对象填充分页池 -
间隔释放部分对象制造"空洞" -
触发漏洞后重新分配 BRrI
和PipeAttribute
对象 -
对象替换:
# 伪操作流程alloc_wnfs(2000) # 初始堆喷create_holes(every=50) # 制造空洞trigger_overflow() # 触发漏洞alloc_iorings(500) # 替换空洞为可控对象
权限提升
-
利用I/O Ring机制:
-
篡改 IOP_MC_BUFFER_ENTRY
结构 -
构造用户态可控的假缓冲区条目 -
通过 BuildIoRingWriteFile
实现任意地址读写 -
令牌替换:
// 获取系统令牌EPROCESS system_proc = find_eproc("System");TOKEN system_token = system_proc->Token;// 替换当前进程令牌EPROCESS curr_proc = get_current_eproc();curr_proc->Token = system_token;
检测建议
行为特征
-
可疑API调用:
-
高频调用 NtCreateWnfStateName
+NtUpdateWnfStateData
-
异常使用 CreateIoRing
注册缓冲区 -
大量 CreatePipe
调用 -
内存特征:
-
分页池中出现连续 ViRo
/WnfS
标签交替 -
异常大小的ACL结构(AclSize ≥ 0xFFB0)
防护方案
graph TD A[用户调用NtCreateCrossVmEvent] --> B{检查DACL.AclSize} B -->|>0xFFB0| C(阻断调用并告警) B -->|正常值| D(放行操作) E[检测进程令牌突变] --> F{令牌来源进程} F -->|非父进程| G(触发行为告警)
补丁分析
微软通过添加溢出检查修复:
+ if (new_size < original_size) {+ return STATUS_INTEGER_OVERFLOW;+ }ExAllocatePool2(...);
完整PoC
参见GitHub仓库,包含:
-
沙箱检测模块 -
GUID提取工具 -
多阶段堆喷控制器 -
令牌替换Payload
时间线
-
2024-01-05:漏洞初次披露 -
2024-01-14:微软发布补丁 -
2024-01-20:野外利用样本出现 -
2024-02-01:本文分析完成
关联漏洞CVE-2021-31956 - 类似的WNF利用技术CVE-2022-21882 - 内核池溢出利用案例
原文地址
https://medium.com/@ale18109800/cve-2025-21333-windows-heap-based-buffer-overflow-analysis-d1b597ae4bae
原文始发于微信公众号(独眼情报):CVE-2025-21333 Windows 堆缓冲区溢出漏洞分析
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论