1.漏洞描述
RDL是Windows 远程桌面授权服务,RDL 服务并非默认启用,但许多管理员会手动启用它来扩展功能,例如增加远程桌面会话的数量。该漏洞在解码用户输入的许可密钥包时,未正确验证解码后的数据长度与缓冲区大小之间的关系,从而导致缓冲区溢出。这使得攻击者可以通过发送特制的数据包,在目标服务器上执行任意代码。
RDL的定义和功能
RDL是远程桌面许可服务,负责管理和颁发许可证。它是Windows Server角色之一,通常用于Windows Server系统。在启用远程桌面服务(RDS)的环境中,RDL确保服务器拥有足够的授权许可证,以便允许多个用户或设备通过RDP同时连接到该服务器。当客户端尝试通过RDP连接到具有远程桌面服务的服务器时,RDL会验证并分配适当的许可证,以确保用户遵循许可协议。启用RDL服务时会随机开启一个RPC的高端口,端口号通常在49152到65535之间。
RDP负责实现远程连接和用户交互,而RDL则负责管理连接的许可证和合规性。RDL主要是确保远程桌面服务在合规的用户和会话数下运行。
2.影响版本
Windows Server 2019
Windows Server 2012 R2(服务器核心安装)
Windows Server 2012 R2版本
Windows Server 2012(服务器核心安装)
Windows Server 2012
Windows Server 2008 R2 Service Pack 1(用于基于 x64 的系统)(服务器核心安装)
Windows Server 2008 R2(用于基于x64的系统)Service Pack 1
Windows Server 2008 Service Pack 2(服务器核心安装)
Windows Server 2008(用于基于 x64 的系统)Service Pack 2
Windows Server 2008 for 32-bit Systems Service Pack 2(服务器核心安装)
Windows Server 2008 Service Pack 2(32位系统)
Windows Server 2016(服务器核心安装)
Windows Server 2016
Windows Server 2022, 23H2 Edition(服务器核心安装)
Windows Server 2022(服务器核心安装)
Windows Server 2022
Windows Server 2019(服务器核心安装)
3.简单分析
终端服务器授权程序旨在管理将任何用户或设备连接到服务器所需的终端服务 CAL。在CDataCoding::DecodeData过程中会分配一个固定大小的缓冲区(21 字节),然后使用该缓冲区计算并填充用户控制的长度缓冲区,从而导致堆溢出。
调用堆栈和伪代码
C
4.修复建议
安装微软官方补丁。Windows系统默认启用Microsoft update,当检测到可用更新时,将会自动下载更新并在下次启动时安装。如果无法自动更新,请参考微软公司的官方通告,按通告指南进行补丁的下载和安装。
补丁获取地址:https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-38077)