概述
漏洞信息
微软官方在7月9号进行漏洞披露后,悬镜云脉XSBOM数字供应链情报平台已于第一时间将该漏洞详情同步给订阅企业用户,并持续监测该漏洞的传播舆情。与此同时,悬镜供应链安全情报中心也第一时间对该漏洞细节进行技术分析和确认,并进一步对该漏洞基础信息进行完善更新如下。
CVE-2024-38077 漏洞基础信息
漏洞细节
该漏洞主要原因是Windows远程桌面授权服务RDL组件lserver.dll在处理认证授权数据时,CDataCoding::DecodeData函数将解码数据拷贝到固定大小的堆内存中时,未对拷贝数据长度做有效检查,导致发生堆内存溢出,触发内存越界写漏洞。漏洞发生在授权认证之前,因此只要Windows Server启用RDL服务(默认不启动),并正常开放TCP 135 RPC端口,任意恶意攻击者都可在未授权的情况下,通过发送特定恶意请求来攻击利用该漏洞,一旦漏洞利用成功,攻击者将以RDL服务权限(NT AUTHORITY\NEWORK SERVICE)在受害系统上远程执行任意代码。
RDL服务进程
悬镜供应链安全情报中心在对lserver.dll(10.0.26100.1版本)逆向分析后CDataCoding::DecodeData在解码数据时存在堆内存溢出导致越界写漏洞,如下图所示,其中反编译代码第45行为该漏洞触发点。漏洞根源主要往堆内存buf(内存大小21字节)拷贝解码数据时未对解码的数据长度进行判断检测。
CDataCoding::DecodeData漏洞函数反编译代码
堆内存大小默认21字节
漏洞补丁
针对更新补丁后的lserver.dll(10.0.26100.1150版本),在CDataCoding::DecodeData函数内可明显发现在进行数据解码时,多了3处对解码长度的检查校验逻辑。
CDataCoding::DecodeData漏洞函数补丁代码
影响范围
根据微软官方安全公告数据,如果存在以下Windows系统版本,并且未安装202407月系统补丁更新,则存在CVE-2024-38077漏洞。
系统版本 |
Windows Server 2025, Preview |
Windows Server 2022, 23H2 Edition (Server Core installation) |
Windows Server 2022 (Server Core installation) |
Windows Server 2022 |
Windows Server 2019 (Server Core installation) |
Windows Server 2019 |
Windows Server 2016 (Server Core installation) |
Windows Server 2016 |
Windows Server 2012 R2 (Server Core installation) |
Windows Server 2012 R2 |
Windows Server 2012 (Server Core installation) |
Windows Server 2012 |
Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core installation) |
Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core installation) |
Windows Server 2008 for x64-based Systems Service Pack 2 |
Windows Server 2008 for x64-based Systems Service Pack 2 |
Windows Server 2008 for 32-bit Systems Service Pack 2 (Server Core installation) |
Windows Server 2008 for 32-bit Systems Service Pack 2 (Server Core installation) |
Windows Server 2008 for 32-bit Systems Service Pack 2 |
Windows Server 2008 for 32-bit Systems Service Pack 2 |
Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation) |
Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation) |
Windows Server 2008 R2 for x64-based Systems Service Pack 1 |
Windows Server 2008 R2 for x64-based Systems Service Pack 1 |
漏洞影响版本列表
排查方式
-
判断系统版本
对于未进行202407月微软补丁更新升级的系统,通过 winver 命令查看当前系统版本是否在“漏洞影响版本列表”中。
winver查看系统版本
-
本地判断RDL服务状态
如果当前系统版本存在CVE-2024-38077 漏洞,还需要进一步判断是否启动了远程桌面授权服务RDL(Remote Desktop Licensing)。
可以通过Get-Service命令查询TermServLicensing服务状态,如果状态为Running则代表RDL服务正在运行,存在被攻击风险。如果命令结果无正常返回,则表示RDL服务未启动。
Get-Service -Name "TermServLicensing"
RDL服务运行状态
-
远程判断RDL服务状态
可以利用python impacket库提供的rpcdump.py脚本扫描目标系统TCP 135端口,通过判断脚本返回结果里是否存在"lserver.dll"来探测目标系统是否启动lserver.dll服务。
python3 -m pip install impacket -i https://pypi.tuna.tsinghua.edu.cn/simple
wget https://raw.githubusercontent.com/fortra/impacket/master/examples/rpcdump.py
python3 rpcdump.py -debug 192.168.31.122 | grep -i lserver.dll -A 6
rpcdump.py远程查询RDL服务运行状态
处置方案
安装最新的微软系统补丁包
临时关闭RDL远程桌面授权服务
Stop-Service -Name "TermServLicensing"
临时关闭RDL服务
永久禁用RDL远程桌面授权服务
在系统服务中,将"TermServLicensing"服务启动类型设置为禁用(disabled)。
禁用RDL服务
参考链接
https://sites.google.com/site/zhiniangpeng/blogs/MadLicense
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-38077
悬镜云脉XSBOM数字供应链安全情报预警服务依托悬镜安全团队强大的供应链管理监测能力、AI安全大数据云端分析能力以及专家团队人工研判分析能力,对全球数字供应链投毒情报、漏洞情报、停服断供情报进行实时动态监测与溯源分析,为用户提供高级情报查询、情报订阅、可视化关联分析等企业级服务,帮助用户更快更轻松应对各种风险,智能精准预警“与我有关”的数字供应链安全情报。
悬镜数字供应链安全情报预警服务
(https://xsbom.xmirror.cn)
+
推荐阅读
开源的本质是群智创新!感谢每一位社区成员对OpenSCA社区的贡献与支持。欢迎来自全球用户的Star和Fork,也欢迎向社区提交ISSUE和PR,参与悬镜的数字供应链安全共建计划,用开源的方式做开源治理,让创新技术更普惠。
GitHub
https://github.com/XmirrorSecurity/OpenSCA-cli/releases
Gitee
https://gitee.com/XmirrorSecurity/OpenSCA-cli/releases
OpenSCA官网
https://opensca.xmirror.cn/
官方技术群@OpenSCA社区