# FreeRDP 字形分配堆缓冲区溢出漏洞
## 概述
FreeRDP 是远程桌面协议(RDP)的免费实现。在 3.21.0 之前版本中,FastGlyph 解析过程中仅信任 `cbData`/剩余长度字段,未验证其是否满足 `cx`/`cy` 所隐含的最小数据大小要求。
## 影响版本
3.21.0 之前的所有版本。
## 细节
FastGlyph 处理逻辑未校验数据长度与图形尺寸之间的合法性关系,攻击者控制的服务器可通过提供不一致的 `cbData` 与 `cx`/`cy` 值,构造超长但尺寸标示过小的数据包,导致客户端在处理时发生缓冲区越界写入。
## 影响
恶意服务器可触发客户端全局缓冲区溢出,导致拒绝服务(崩溃)。
是否为 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 Glyph_Alloc · Advisory · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
### 关键信息
- **CVE ID**: CVE-2026-23732
- **Severity**: Moderate
- **Package**: FreeRDP (C)
- **Affected Versions**: <= 3.20.2
- **Patched Versions**: 3.21.0
- **Weaknesses**: CWE-122
- **Reporter**: ehdgks0627
#### Summary
FastGlyph parsing trusts `cbData`/remaining length and never validates against the minimum size implied by `cx/cy`.
#### Details
- `update_read_fast_glyph_order` sets `glyph->cb` with no validation against the size required by `cx/cy`.
- `update_gdi_fast_glyph` passes the glyph directly into `Glyph_Alloc` when `cbData > 1`.
- `Glyph_Alloc` does not check consistency when allocating exactly `cb` bytes and copying data.
- `freerdp_glyph_convert` reads from `aj`, so `cb < required` immediately triggers an out-of-bounds (OOB) condition.
#### PoC
- AddressSanitizer
标题: FreeRDP/libfreerdp/core/graphics.c at f96ee2a6dd02739325c2a4e36a14978b561f00ea · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
- **漏洞相关的关键信息:**
- 代码文件:`graphics.c`,属于FreeRDP项目,位于`libfreerdp/core`目录下。
- `glyph->aj = malloc(glyph->cb);` 这一行代码在 `Glyph_Alloc` 函數中。这可能是潜在的漏洞所在。
- 更新信息:该代码最近的提交信息为 `[clang-tidy] cppcoreguidelines-init-variables`,提交者为 `akallabeth`,提交时间为2年前。
- 相关检查:代码中使用了 `WINPR_ASSERT` 宏进行断言检查。
标题: FreeRDP/libfreerdp/cache/glyph.c at f96ee2a6dd02739325c2a4e36a14978b561f00ea · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_MISC
标题: FreeRDP/libfreerdp/codec/color.c at f96ee2a6dd02739325c2a4e36a14978b561f00ea · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_MISC
标题: FreeRDP/libfreerdp/core/orders.c at f96ee2a6dd02739325c2a4e36a14978b561f00ea · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_MISC
暂无评论