CVE-2023-36900 漏洞分析

CVE-2023-36900 漏洞分析

安全客 2023-08-30 17:24

概述

2023年8月8日,微软 patch thuesday 发布新补丁后,我们观察到 Windows Common Log File System Driver 模块修复了一个 Elevation of Privilege 
类型的漏洞
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-36900
, 通过分析补丁目前已经写出了 POC。

分析环境

windows 10 版本 10.0.19045.3208

x64 dbg,windbg,IDA Pro 7.5

CClfsBaseFilePersisted::ExtendMetadataBlockDescriptor(ulong,ulong) 函数中发现新增了一处校验,该函数用于扩展元数据块。

使用 IDA 分析补丁前后代码变化发现新增了一处校验【3】,在校验【3】之前可以看到原本已经存在一处校验【1】。

分析函数 CClfsBaseFilePersisted::ExtendMetadataBlockDescriptor 的功能后发现【1】处的校验用于检查添加的扇区数乘扇区大小后不会溢出,且加上原元数据块大小后也不能溢出。

在【1】处的校验通过后会在【2】处将现元数据块大小与扇区大小对齐,【2】处的对齐操作在原元数据块大小是已经与扇区大小对齐的情况下没有什么问题,可是在原元数据块未与扇区大小对齐的情况下此对齐操作就可能存在整数溢出,从而导致对齐后的现元数据块小于原元数据块大小并在后面的元数据块扩展时崩溃。

扩展元数据块。

POC 开发

元数据块在存储到文件时理应是与扇区大小对齐的,但是除了控制块元数据块的大小外其他两种元数据块的大小我们是可以通过操作日志文件中存储的数据来控制的。

这样当我们控制 CLFS_CONTROL_RECORD->eExtendState、CLFS_CONTROL_RECORD->iExtendBlock、CLFS_CONTROL_RECORD->iFlushBlock 使流程来到 CClfsBaseFilePersisted::ExtendMetadataBlockDescriptor 函数时,只需将相应的元数据块设置为一个非对齐的大小且将要添加的扇区数设置的足够大时便为产生整数溢出。

整体代码如下:

BSOD

1: kd> k               # Child-SP          RetAddr               Call Site              00 ffffb98e089902e8 fffff80772b162c2     nt!DbgBreakPointWithStatus              01 ffffb98e089902f0 fffff80772b158a6     nt!KiBugCheckDebugBreak+0x12              02 ffffb98e08990350 fffff807729fc1c7     nt!KeBugCheck2+0x946              03 ffffb98e08990a60 fffff80772a4b2f5     nt!KeBugCheckEx+0x107              04 ffffb98e08990aa0 fffff8077286e7b0     nt!MiSystemFault+0x1b2905              05 ffffb98e08990ba0 fffff80772a0bbd8     nt!MmAccessFault+0x400              06 ffffb98e08990d40 fffff80771becfe4     nt!KiPageFault+0x358              07 ffffb98e08990ed8 fffff80771c3169f     CLFS!memset+0xa4              08 ffffb98e08990ee0 fffff80771c3128e     CLFS!CClfsBaseFilePersisted::ExtendMetadataBlockDescriptor+0x1ff              09 ffffb98e08990f90 fffff80771c19dc4     CLFS!CClfsBaseFilePersisted::ExtendMetadataBlock+0x40e              0a ffffb98e08991060 fffff80771be1dba     CLFS!CClfsBaseFilePersisted::OpenImage+0x418              0b ffffb98e089910e0 fffff80771c107a2     CLFS!CClfsLogFcbPhysical::Initialize+0x326              0c ffffb98e08991220 fffff80771c11fab     CLFS!CClfsRequest::Create+0x75e              0d ffffb98e08991370 fffff80771c11d77     CLFS!CClfsRequest::Dispatch+0x97              0e ffffb98e089913c0 fffff80771c11cc7     CLFS!ClfsDispatchIoRequest+0x87              0f ffffb98e08991410 fffff807728113a5     CLFS!CClfsDriver::LogIoDispatch+0x27              10 ffffb98e08991440 fffff8077280d964     nt!IofCallDriver+0x55              11 ffffb98e08991480 fffff80772bffabb     nt!IoCallDriverWithTracing+0x34              12 ffffb98e089914d0 fffff80772c1571e     nt!IopParseDevice+0x11bb              13 ffffb98e08991640 fffff80772c0d3ea     nt!ObpLookupObjectName+0x3fe              14 ffffb98e08991810 fffff80772bfd5db     nt!ObOpenObjectByNameEx+0x1fa              15 ffffb98e08991940 fffff80772bfc299     nt!IopCreateFile+0x132b              16 ffffb98e08991a00 fffff80772a0f8f5     nt!NtCreateFile+0x79              17 ffffb98e08991a90 00007fffaf24da84     nt!KiSystemServiceCopyEnd+0x25              18 000000af893cf928 00007fff9a742199     0x00007fffaf24da84              19 000000af893cf930 0000000000000000     0x00007fff9a742199

360沙箱云检测

精确检测:基于检测热补的精确漏洞检测,准确识别漏洞编号。

关于我们

360沙箱云是 360 安全情报中心旗下的在线高级威胁分析平台,对提交的文件、URL,经过静态检测、动态分析等多层次分析的流程,触发揭示漏洞利用、检测逃逸等行为,对检测样本进行恶意定性,弥补使用规则查杀的局限性,通过行为分析发现未知、高级威胁,形成高级威胁鉴定、0day 漏洞捕获、情报输出的解决方案。

帮助安全管理员聚焦需关注的安全告警,过安全运营人员的分析后输出有价值的威胁情报,为企业形成专属的威胁情报生产能力,形成威胁管理闭环。

解决当前政企用户安全管理困境及专业安全人员匮乏问题,沙箱云为用户提供持续跟踪微软已纰漏,但未公开漏洞利用代码的 1day,以及在野 0day 的能力。

360混天零实验室负责高级威胁自动化检测项目和云沙箱技术研究,专注于通过自动化监测手段高效发现高级威胁攻击。

依托于 360 安全大数据,多次发现和监测到在野漏洞利用、高级威胁攻击、大规模网络挂马等危害网络安全的攻击事件,多次率先捕获在野利用 0day 漏洞的网络攻击并获得厂商致谢,在野 0day 漏洞的发现能力处于国内外领先地位,为上亿用户上网安全提供安全能力保障。