CVE-2026-23530CVE-2026-23530是FreeRDP中的一个严重安全漏洞,FreeRDP是远程桌面协议(RDP)的开源实现。该漏洞位于位图解压缩功能中,具体为freerdp_bitmap_decompress_planar函数在处理来自RDP服务器的位图数据时存在边界验证缺陷。漏洞的根本原因是在执行RLE(游程编码)解码操作前,未能正确验证输入的nSrcWidth和nSrcHeight参数是否在planar->maxWidth和maxHeight允许的范围内。攻击者可以通过构建恶意的RDP服务器,发送精心构造的位图数据来触发此漏洞。由于缺少必要的边界检查,解压缩过程会写入超出预定缓冲区的内存区域,导致堆缓冲区溢出。此漏洞不仅可能造成客户端程序崩溃(拒绝服务),还可能引发堆内存损坏,在特定的堆布局和内存分配器行为下,攻击者有可能实现任意代码执行。由于该漏洞可通过网络远程利用,无需认证且无需用户交互,因此被评定为严重等级(CVSS 3.1评分9.8)。
该漏洞的技术核心在于FreeRDP的位图解压缩函数缺乏输入验证机制。在libfreerdp/codec/planar.c文件的freerdp_bitmap_decompress_planar函数中,代码直接使用传入的nSrcWidth和nSrcHeight参数进行RLE解码操作,而没有先验证这些尺寸值是否超过planar->maxWidth和maxHeight的限制。当恶意RDP服务器发送的位图数据包含超大的尺寸参数时,解压缩逻辑会根据这些未验证的值分配内存或写入数据,导致堆缓冲区溢出。具体攻击过程:1)攻击者部署一个恶意RDP服务器;2)受害者客户端连接到此服务器;3)服务器发送包含异常大nSrcWidth/nSrcHeight值的位图数据;4)客户端的freerdp_bitmap_decompress_planar函数处理数据时,由于缺少边界检查,RLE解码会将数据写入超出合法内存范围的位置;5)这可能导致程序崩溃或更严重的后果,如堆元数据损坏、函数指针覆盖等。漏洞影响版本为3.21.0之前的FreeRDP,攻击向量为网络级别(AV:N),无需认证(PR:N)和用户交互(UI:N),属于低复杂度攻击。