# FreeRDP 堆缓冲区溢出漏洞
## 概述
FreeRDP 是远程桌面协议(RDP)的免费实现。在版本 3.21.0 之前,ClearCodec 在处理包含 `glyphData` 的 RDPGFX 表面更新时,`clear_decompress` 函数调用 `freerdp_image_copy_no_overlap` 前未验证目标矩形参数,导致可触发堆缓冲区溢出。
## 影响版本
- 受影响版本:低于 3.21.0 的 FreeRDP 版本
- 修复版本:3.21.0
## 细节
当 RDPGFX 表面更新中存在 `glyphData` 时,`clear_decompress` 函数在调用 `freerdp_image_copy_no_overlap` 之前未对目标矩形的尺寸和位置进行边界验证。攻击者可通过构造恶意的 RDPGFX 更新数据包,使函数访问越界内存地址。
## 影响
- 恶意 RDP 服务器可触发客户端堆缓冲区溢出
- 导致客户端崩溃(拒绝服务)
- 存在堆内存损坏风险
- 在特定条件下可能实现远程代码执行,取决于内存分配器行为和堆布局
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Release 3.21.0 · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
- **Version**: 3.21.0
- **Release Notes**: Bugfix release with new API functions for input data validation improvements.
- **Fixed Vulnerabilities**: CVE-2026-23530, CVE-2026-23531, CVE-2026-23532, CVE-2026-23533, CVE-2026-23534, CVE-2026-23732, CVE-2026-23883, CVE-2026-23884. (Medium client-side vulnerabilities)
- **Contributor**: ehdgks0627
- **Changes**: Includes fixes for various issues, such as monitor resolution, RPCX upgrades, krb cache, RDPDR checks, codec length checks, glyph length checks, format string checks and warnings, double free errors, and code warnings cleanup.
标题: Heap-buffer-overflow in clear_decompress · Advisory · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
### 漏洞关键信息
- **漏洞编号**: CVE-2026-23531
- **漏洞类型**: 堆缓冲区溢出
- **受影响版本**: <= 3.20.2
- **修复版本**: 3.21.0
- **严重程度**: 中等
- **报告人**: ehdgks0627
#### 漏洞描述
在 ClearCodec 编码解码器中,存在一个堆缓冲区溢出漏洞。当 `glyphData` 存在时,`clear_decompress` 会调用 `freerdp_image_copy_no_overlap` 来复制图像数据,但未对目标矩形进行验证,导致超出边界读写。
#### 具体问题
- `WriteToSurface1` 数据包携带的 `destRect` 只在 `rdpgfx_read_rect16` 中验证顺序,未对目标进行边界检查。
- `gdi_SurfaceCommand_ClearCodec` 将 `cmd->left/top/width/height` 直接传入 `clear_decompress`.
- 当存在glyph路径时,`clear_decompress_glyph_data` 返回非空的 `glyphData` 缓冲区,`clear_decompress` 后调用了 `freerdp_image_copy_no_overlap`。
- `nXDst` 和 `nYDst` 未进行夹紧,且 `freerdp_image_copy_no_overlap` 未进行边界检查。
- 精心构造的 `destRect` 将导致目标缓冲区溢出,也可以在复制期间触发超出边界读取。
#### 影响
恶意服务器可触发客户端堆缓冲区溢出,导致崩溃(DoS),并可能有代码执行的风险,这取决于分配器行为和堆布局。
标题: FreeRDP/libfreerdp/codec/clear.c at 38514dfa5813aa945a86cfbcec279033f8394468 · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_MISC
暂无评论