# FreeRDP 堆缓冲区溢出漏洞
## 概述
FreeRDP 是 Remote Desktop Protocol 的免费实现。在版本 3.21.0 之前,客户端在 `gdi_SurfaceToSurface` 路径中存在堆缓冲区溢出漏洞。
## 影响版本
3.21.0 之前的所有版本。
## 细节
漏洞源于 `gdi_SurfaceToSurface` 函数中目标矩形裁剪与实际拷贝大小之间不一致,导致客户端发生堆缓冲区溢出。攻击者控制的恶意服务器可触发该漏洞。
## 影响
可导致客户端崩溃(拒绝服务),并可能引发堆内存损坏,存在代码执行风险,具体取决于内存分配器行为和堆布局。
是否为 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 gdi_SurfaceToSurface · Advisory · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
根据提供的截图,以下是关于漏洞的关键信息整理:
### 漏洞概述
- **名称**: Heap-buffer-overflow in gdi_SurfaceToSurface
- **严重性**: Moderate
- **CVE ID**: CVE-2026-23532
- **弱项分类**: CWE-122
### 影响范围
- **受影响版本**: <= 3.20.2
- **修复版本**: 3.21.0
### 漏洞描述
- **问题根源**: 在FreeRDP客户端的`gdi_SurfaceToSurface`路径中,由于目标矩形裁剪和实际复制大小之间的不匹配,导致客户端堆缓冲区溢出。
- **详细原因**:
- 在`gdi_SurfaceToSurface`中,`destRect`通过`MAX_UINT16`裁剪,但复制仍然使用原始`nWidth/nHeight`。如果`destPt.x + nWidth`超过实际表面宽度,`freerdp_image_copy`执行越界写操作。
- 创建一个大的表面(例如,`height >= 65535`),然后发送`SurfaceToSurface PDU`,其中`destPt.y + nHeight`超过表面高度。
### 影响
- 恶意服务器能触发客户端堆缓冲区溢出,导致崩溃(拒绝服务)和潜在的堆损坏,存在代码执行风险,具体取决于分配器行为和周围堆布局。
### 修复建议
- 在`gdi_SurfaceToSurface`中,确保`nWidth`和`nHeight`的裁剪,使`destPt->x + nWidth`和`destPt->y + nHeight`不会超过目标表面的宽度/高度。
这是一份简洁的漏洞信息概要,希望能够帮助您快速理解漏洞的关键点。
标题: FreeRDP/libfreerdp/gdi/gfx.c at 38514dfa5813aa945a86cfbcec279033f8394468 · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_MISC
暂无评论