Windows DWM 核心库信息泄露漏洞 (CVE-2024-26172) 复现分析

admin 2024年4月10日15:27:42评论11 views字数 2605阅读8分41秒阅读模式

漏洞描述

微软四月份补丁日发布了编号为CVE-2024-26172的windows内核特权提升漏洞,由山石网科信创安全实验室报告,目前已修复完成,漏洞详细情况详如下:

漏洞名称

Windows DWM 核心库信息泄露漏洞

漏洞公开编号

CVE-2024-26172

漏洞类型

信息泄露

公开时间

2024-04-10

漏洞等级

重要

评分

5.5

漏洞所需权限

低权限

漏洞利用难度

PoC状态

未知

EXP状态

未知

漏洞细节

未知

在野利用

未知

Windows DWM 核心库信息泄露漏洞 (CVE-2024-26172) 复现分析Windows DWM 核心库信息泄露漏洞 (CVE-2024-26172) 复现分析

桌面窗口管理器(DWM,以前称为桌面合成引擎或 DCE)是自 Windows Vista 以来Windows系统中的合成窗口管理器,它允许使用硬件加速来渲染 Windows的图形用户界面,该进程拥有最高的系统完整性级别和较高的权限,最近经常爆出在野利用的漏洞。DWM进程模块中存在信息泄露漏洞,攻击者可以利用该漏洞在目标进程内泄露堆地址和堆上未初始化的信息,进而进一步服务于后面的提权漏洞攻击。

漏洞分析

漏洞存在于CPropertySet::GetProperty函数中:

__int64 __fastcall CPropertySet::GetProperty(__int64 this, unsigned int a2, __int64 a3){  ...  // 函数没有对属性值大小做检查  v3 = a2;  v4 = *(_QWORD *)(this + 88);  v5 = *(_DWORD *)(v4 + 8 * v3);  if ( v5 != 18 )  {    switch ( v5 )    {      case 17:        result = 0i64;        *(_BYTE *)a3 = *(_BYTE *)((*(_DWORD *)(v4 + 8 * v3 + 4) & 0x1FFFFFFF) + *(_QWORD *)(this + 120));        *(_DWORD *)(a3 + 72) = 17;        *(_BYTE *)(a3 + 76) = 1;        return result;      ...    }  }  ...  return 0i64;}

我们可以看到,当处理CPropertySet对象中的属性时,GetProperty函数并不会检查属性值是否越界,导致越界读取漏洞发生,函数的第二个参数为属性值。

漏洞复现

我们在分析的时候发现了一个路径可以传递任意的属性值给CPropertySet::GetProperty函数,同时在该函数访问完成后会将属性拷贝到第三个参数,也就是CExpressionValue对象中,最终返回后该值会通过CKeyframeAnimation对象函数拷贝到攻击者和DWM进程之间的共享内存中,可以直接读取共享内存来泄露DWM中的堆地址等信息,具体步骤如下:

  1. 创建CKeyframeAnimation对象

  2. 创建CSharedSection对象

  3. 创建CPropertySet对象

  4. 在这些对象上调用SetIntegerProperty函数设置共享内存大小,Flag等信息

  5. 调用SetReferenceProperty函数将CSharedSectionCPropertySet对象绑定到CKeyframeAnimation对象属性中

  6. 调用NtDCompositionCreateAndBindSharedSection函数建立共享内存

  7. 设置CKeyframeAnimation对象IntegerProperty ID为3的属性,该值为最终CPropertySet::GetProperty函数使用的第二个参数

  8. 调用NtDCompositionCommitChannel提交命令

  9. 调用Sleep函数休眠,等待DWM Render线程触发崩溃

可以看到执行完poc后,进程发生了崩溃,并且是由于索引越界访问导致的:

Windows DWM 核心库信息泄露漏洞 (CVE-2024-26172) 复现分析

影响版本

Windows 10 Version 1809 for 32-bit Systems 

Windows 10 Version 1809 for ARM64-based Systems 

Windows 10 Version 1809 for x64-based Systems 

Windows 10 Version 21H2 for 32-bit Systems 

Windows 10 Version 21H2 for ARM64-based Systems 

Windows 10 Version 21H2 for x64-based Systems 

Windows 10 Version 22H2 for 32-bit Systems 

Windows 10 Version 22H2 for ARM64-based Systems 

Windows 10 Version 22H2 for x64-based Systems 

Windows 11 version 21H2 for ARM64-based Systems 

Windows 11 version 21H2 for x64-based Systems 

Windows 11 Version 22H2 for ARM64-based Systems 

Windows 11 Version 22H2 for x64-based Systems 

Windows 11 Version 23H2 for ARM64-based Systems 

Windows 11 Version 23H2 for x64-based Systems 

Windows Server 2019 

Windows Server 2019 (Server Core installation)

Windows Server 2022 

Windows Server 2022 (Server Core installation)  

Windows Server 2022, 23H2 Edition (Server Core installation)

安全建议

安装相应的补丁程序,目前,官方已发布修复程序,受影响的用户可以直接升级至安全版本。

下载地址:https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-26172

参考信息

https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-26172

原文始发于微信公众号(山石网科安全技术研究院):Windows DWM 核心库信息泄露漏洞 (CVE-2024-26172) 复现分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月10日15:27:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows DWM 核心库信息泄露漏洞 (CVE-2024-26172) 复现分析https://cn-sec.com/archives/2644790.html

发表评论

匿名网友 填写信息