Windows CLFS提权PoC公开:CVE-2023-28252已修复三年,仍在野利用

导语:11月14日,深网情报账号Dark Web Informer在X平台推送了一则漏洞快讯:Windows通用日志文件系统(CLFS)驱动存在堆溢出漏洞,本地攻击者可借此提权至SYSTEM,CVSS 7.8,攻击代码已公开。这条线索背后对应的是CVE-2023-28252——一个自2023年4月即被CISA列入”已知被利用漏洞”目录的老漏洞,本文给出完整的复现原理、PoC源码下载地址与修复清单。

Windows CLFS驱动本地提权漏洞示意

配图:Windows CLFS 驱动漏洞示意(图为AI生成,仅作技术示意)

漏洞标识与风险速览

CVE编号: CVE-2023-28252

CVSS 3.1 向量: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H,基础分 7.8 / HIGH(微软给出的时间维度向量为 .../E:F/RL:O/RC:C,时间分 7.2)。攻击复杂度低、无需用户交互,仅需低权限本地账户即可利用,成功后获得完整的机密性、完整性、可用性影响——即完全接管内核。

风险等级:🔴 红(高危),理由有两条硬支撑:一是CISA在2023年4月11日补丁发布当天就把该漏洞写入了KEV(Known Exploited Vulnerabilities)目录,并标注 knownRansomwareCampaignUse: Known,即已确认被勒索软件活动使用;二是NVD的SSVC评估中,exploitation: active、technicalImpact: total。这类”厂商已修但在野仍被用来打存量终端”的漏洞,是当前勒索软件前置渗透链最爱的目标。

漏洞类型: CWE-122 基于堆的缓冲区溢出,位置在 clfs.sys 内核驱动。

影响实体与版本区间

该漏洞随2023年4月安全更新(2023-Apr)一并修复,官方定级 Important(重要)。受影响产品覆盖范围极大,几乎涵盖当时所有在支持期的Windows版本:

产品线修复KB
Windows 11 22H2(x64 / ARM64)5025239(KB5034770)
Windows 11 21H25025224(KB5034767)
Windows 10 22H2 / 21H2 / 20H25025221(KB5034771 / KB5034612 等)
Windows 10 1809 / Server 20195025229(KB5034774)
Windows Server 20225025230(KB5034770)
Windows Server 2016 / Win10 16075025228(KB5034777)
Windows Server 2012 R2 / 2008 R2 / 2012 / 20085025285、5025288、5025272、5025273 等
Windows 10(1507–1607 早期分支)5025234、5025228 等

注:上表左侧为MSRC的SuperKB编号,括号内为对应的公开KB号,不同Windows版本的具体KB号请以微软安全更新指南(CVE-2023-28252条目)为准,不要盲目套用。

暴露面判断: 漏洞本身需要本地低权限账户,因此直接远程利用不成立。但绝大多数企业Windows终端上,普通域用户或本地Users组成员都天然具备触发条件。真正的问题在于:2019年4月至今已经过去了两年多,仍有大量未打满补丁、或者被统一下发策略拖延的终端停留在易受攻击状态,尤其是被勒索软件横向移动打穿的机器,往往正是补丁最陈旧的那批。

技术原理:CLFS 日志文件如何变成提权跳板

CLFS(Common Log File System)是Windows上的通用日志服务,既可运行在用户模式,也可运行在内核模式。漏洞核心出在CLFS的Base(Shadow)Block结构处理上。

第一环:伪造BLF日志文件。 CLFS的日志文件(.blf)由控制块(Control Block)、控制块影子(Control Block Shadow)、基础块(Base Block)和基础块影子(Base Block Shadow)组成。Base Block里维护着一张符号表(Symbol Table),包含客户端上下文、容器上下文和共享安全上下文。攻击者构造一个特意的.blf文件,通过篡改BaseBlockShadow中的记录偏移,把驱动原本解析的记录偏移从 0x70 改成 0x369,让驱动跳到一个伪造的、位于堆喷射数据中的 CLFS_CONTAINER_CONTEXT 对象上。

第二环:堆喷射与越界写。 攻击者先创建大量匿名管道,把目标对象按 0x60 字节对齐喷射进内核池。由于CLFS基记录头 _CLFS_BASE_RECORD_HEADER 中的 rgContainers[0] 偏移可被恶意文件控制,驱动在 CClfsBaseFilePersisted::WriteMetadataBlock 等函数中会基于它做越界读写,把伪造的容器上下文当作合法对象使用。

第三环:虚拟函数表劫持。 GetSymbol 拿到被污染的容器上下文后,驱动通过 (**pContainer)(pContainer) 进行虚函数调用,最终把控制流转到攻击者喷射的可控对象上,实现任意内核读写,进而完成SYSTEM权限获取与令牌窃换。

复现路径仅需两个用户态API:先用 CreateLogFile 生成模板.blf文件,再调用 AddLogContainer 触发驱动侧的元数据块扩展流程。

CLFS漏洞攻击链示意图

配图:CLFS 本地提权攻击链示意(图为AI生成,仅作技术示意)

PoC 下载与复现

安全研究者Joe1sn(Joe1sn’s Cabin)已将该漏洞的完整分析、调试代码与利用代码开源,采用CMake组织,需在Windows上以管理员权限编译运行。公开PoC可复现环境为Windows 11 22H2,其作者说明该利用链在Win11上验证有效(不同Windows版本的内核结构偏移存在差异,跨版本直接套用可能失败)。

下载与访问地址:

用途地址
PoC仓库主页https://github.com/Joe1sn/CVE_2023_28252
源码包(zip,推荐)https://github.com/Joe1sn/CVE_2023_28252/archive/refs/heads/main.zip
源码包(tar.gz)https://github.com/Joe1sn/CVE_2023_28252/archive/refs/heads/main.tar.gz
直连 codeload(zip)https://codeload.github.com/Joe1sn/CVE_2023_28252/zip/refs/heads/main
利用代码目录https://github.com/Joe1sn/CVE_202328252/tree/main/exp/CVE2023_28252
核心源码(exp.cpp)https://raw.githubusercontent.com/Joe1sn/CVE_202328252/main/exp/CVE2023_28252/exp.cpp
核心源码(poc.cpp)https://raw.githubusercontent.com/Joe1sn/CVE_202328252/main/exp/CVE2023_28252/poc.cpp
结构定义头文件https://raw.githubusercontent.com/Joe1sn/CVE_202328252/main/exp/CVE2023_28252/clfs_types.h
作者分析文章https://joe1sn.eu.org/2026/11/12/CVE-2023-28252/
原始情报推文https://x.com/DarkWebInformer/status/2121716485609464309

编译方法: 解压后用CMake配置,需链接系统自带的 clfsw32.lib(CMakeLists.txt中已写明)。以VS2022为例:

cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release

复现前提与风险提示: 运行需要管理员权限,会在 C:UsersPublic 下落地临时的.blf文件与匿名管道;利用成功后会在当前进程上完成SYSTEM令牌获取。该PoC属于可直接提权的利用代码,仅应在自建的隔离测试机或授权靶场环境(如Windows 11 22H2虚拟机)中使用,严禁在生产终端与联网环境直接运行。本文仅作技术研究与防御参考。

处置方案

第一优先级:安装2023年4月及以后的安全更新。 微软已发布补丁,任何仍在支持期内的Windows版本升级到最新累积更新后该漏洞即告修复。需要特别留意Windows Server 2008/2008 R2/2012/2012 R2等已停止支持的系统——这些系统已经拿不到安全更新,唯一的处置手段就是升级操作系统或用防火墙/应用白名单隔离。

补丁业务中断风险: 累积更新通常需要重启,Windows Server环境建议安排维护窗口;CLFS属于Windows基础日志服务,若业务侧存在依赖旧版CLFS行为或存在自行解析.blf文件的工具链,升级前需在测试环境验证。跨版本跳跃(如从Windows 10直接升级到Windows 11)会额外引入驱动与组策略兼容风险,务必先在镜像环境中验证。

临时规避措施(无法立即打补丁时):

  • 通过应用控制策略(WDAC/AppLocker)禁止低权限用户写入 %SystemRoot%System32LogFiles 及其下的 .blf 文件,同时限制对 C:UsersPublic 目录的任意用户写权限;
  • 在EDR/内核监控上启用对 clfs.sys 的调用监控,重点告警 CreateLogFile 与 AddLogContainer 的异常调用序列,以及非管理员进程对 LOG: 路径的访问;
  • 使用防火墙或应用控制策略阻断低权限账户创建匿名管道并喷射内核池对象的行为组合;
  • 对终端开启”内核对象隐藏”与池内存分配监控(Pool Mon / Driver Verifier 的 Heap 模式可用于事后取证)。

检测与狩猎线索: 攻击链在用户态会留下明确的痕迹——C:UsersPublic 下随机名(100~1000字符)的 .blf 文件、LOG: 前缀的日志路径调用、异常密集的匿名管道创建行为。在日志中检索 CreateLogFile / AddLogContainer 的调用来源进程(非服务、非运维工具进程即为高危),以及同一秒内大量 .p_ 前缀临时文件创建,可有效发现未打补丁终端上的利用尝试。

补丁与防御示意图

配图:补丁与防御方案示意(图为AI生成,仅作技术示意)

总结

CVE-2023-28252 已经”三岁”了,2023年4月就有补丁、还进了CISA的KEV目录,但攻击代码直到今天才被整理成可直接编译的完整PoC并在X平台扩散——这种时间差恰恰是勒索团伙最舒服的窗口:补丁公告的热度早已消退,运维的注意力在别处,而老旧终端依然在线。

从防御视角看,这条漏洞的处置逻辑非常清晰:打补丁、没补丁就限制CLFS相关文件与API的使用面、拿不到补丁的EOL系统直接考虑替换。它不复杂,但需要的只是有人真的把它排进工单。

参考链接:

  • MSRC 官方公告:https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-28252
  • NVD 条目:https://nvd.nist.gov/vuln/detail/CVE-2023-28252
  • CISA KEV 目录:https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2023-28252
  • Packet Storm 原始分析:http://packetstormsecurity.com/files/174668/Windows-Common-Log-File-System-Driver-clfs.sys-Privilege-Escalation.html

版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网AI生成授权使用。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容