IPBUF安全漏洞报告
English
CVE-2026-31897 CVSS 0.0 低危

CVE-2026-31897 FreeRDP freerdp_bitmap_decompress_planar函数越界读取漏洞

披露日期: 2026-03-13

漏洞信息

漏洞编号
CVE-2026-31897
漏洞类型
缓冲区越界读取
CVSS评分
0.0 低危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
FreeRDP

相关标签

缓冲区越界读取FreeRDP远程桌面协议信息泄露CVE-2026-31897RDP位图解压缩

漏洞概述

CVE-2026-31897是FreeRDP中的一个越界读取漏洞。FreeRDP是Remote Desktop Protocol(远程桌面协议)的开源实现。漏洞存在于freerdp_bitmap_decompress_planar函数中,当SrcSize参数为0时,该函数在未验证SrcSize >= 1的情况下直接解引用*srcp指针(指向pSrcData缓冲区),这会导致读取源缓冲区末尾之后的一个字节。攻击者可以通过构造恶意的RDP连接请求,触发此越界读取操作。虽然该漏洞不会导致代码执行,但可能造成信息泄露或程序崩溃。该漏洞影响FreeRDP 3.24.0之前的所有版本,已在3.24.0版本中修复。

技术细节

漏洞函数freerdp_bitmap_decompress_planar在处理位图数据解压缩时存在边界检查缺失问题。当函数接收到SrcSize为0但pSrcData非NULL的情况时,代码直接执行*srcp解引用操作,读取pSrcData指向内存地址的下一个字节,造成一个字节的越界读取。攻击者需要诱使目标用户通过FreeRDP客户端连接到恶意RDP服务器,在连接握手阶段发送特制的小尺寸位图数据即可触发该漏洞。成功利用可导致客户端内存信息泄露或进程异常终止。由于CVSS评分为0.0,该漏洞实际危害相对有限,但仍建议用户升级到修复版本。

攻击链分析

STEP 1
步骤1
攻击者搭建恶意RDP服务器,监听RDP默认端口3389
STEP 2
步骤2
攻击者构造包含特殊位图数据的RDP响应,SrcSize设为0但pSrcData非空
STEP 3
步骤3
受害者使用存在漏洞的FreeRDP客户端(<3.24.0)连接恶意RDP服务器
STEP 4
步骤4
FreeRDP客户端处理位图解压缩时调用freerdp_bitmap_decompress_planar函数
STEP 5
步骤5
函数未验证SrcSize>=1,直接解引用srcp指针,触发单字节越界读取
STEP 6
步骤6
攻击者可利用此越界读取获取敏感内存信息或导致客户端崩溃

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2026-31897 PoC - Malicious RDP Server Trigger // This PoC demonstrates triggering OOB read in freerdp_bitmap_decompress_planar // Compile: gcc -o poc poc.c -lfreerdp2 #include <freerdp/freerdp.h> #include <winpr/wtypes.h> // Trigger condition: SrcSize = 0 with non-NULL pSrcData // The vulnerable function will read one byte past pSrcData buffer void trigger_oob_read(rdpContext* context) { // Simulate the vulnerable code path BYTE* pSrcData = (BYTE*)malloc(1); // 1-byte buffer UINT32 SrcSize = 0; // Zero size triggers OOB read BYTE* srcp = pSrcData; // This line causes OOB read when SrcSize is 0: BYTE firstByte = *srcp; // Reads past buffer end printf("Triggered OOB read, got byte: 0x%02x\n", firstByte); free(pSrcData); } // For actual exploitation, setup malicious RDP server: // 1. Start rogue RDP server on attacker machine // 2. Send crafted bitmap decompression request with SrcSize=0 // 3. Victim FreeRDP client processes malformed packet // 4. OOB read occurs in freerdp_bitmap_decompress_planar int main() { printf("CVE-2026-31897 PoC\n"); printf("Target: FreeRDP < 3.24.0\n"); printf("Vulnerability: OOB read in freerdp_bitmap_decompress_planar\n"); return 0; }

影响范围

FreeRDP < 3.24.0

防御指南

临时缓解措施
立即将FreeRDP升级到3.24.0版本以修复该越界读取漏洞。在无法立即升级的情况下,可限制RDP客户端仅连接到可信的RDP服务器,并启用网络层访问控制。对于必须使用RDP的场景,建议部署防火墙规则限制RDP端口访问仅限授权IP地址范围。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表