# FreeRDP 阵列堆溢出漏洞
## 概述
FreeRDP 是远程桌面协议(RDP)的免费实现。在版本 3.20.1 之前,RDPEAR 的 NDR 数组读取器未对线上传输的元素数量执行边界检查,可能导致写入超出由提示分配的堆缓冲区,从而在 `ndr_read_uint8Array` 函数中引发堆缓冲区溢出。
## 影响版本
3.20.1 之前的版本。
## 细节
NDR 数组读取器在处理 `ndr_read_uint8Array` 时,未验证网络数据中的元素计数,直接依据该计数执行写入操作。攻击者可构造恶意的计数值,导致向堆缓冲区写入超出其实际分配大小的数据,触发缓冲区溢出。
## 影响
未经身份验证的远程攻击者可利用此漏洞,通过特制的 RDP 数据包造成服务崩溃或执行任意代码。该漏洞已在版本 3.20.1 中修复。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Release 3.20.1 · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
以下是关于漏洞的关键信息:
- **CVEs Identified**:
- CVE-2026-22851
- CVE-2026-22852
- CVE-2026-22853
- CVE-2026-22854
- CVE-2026-22855
- CVE-2026-22856
- CVE-2026-22857
- CVE-2026-22858
- CVE-2026-22859
- **Affected Components**:
- All vulnerabilities except CVE-2026-22858 impact FreeRDP based clients only.
- CVE-2026-22858 also impacts FreeRDP proxy.
- FreeRDP based servers are not affected.
- **Vulnerabilities Severity**:
- All listed vulnerabilities are of medium severity.
- **Contributors**:
- @ehdgks0627 was acknowledged for uncovering these vulnerabilities through code review and testing.
标题: Heap-buffer-overflow in ndr_read_uint8Array · Advisory · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
##漏洞关键信息
- **漏洞描述**:FreeRDP的NDR数组读取器在对线程元素计数执行边界检查时未进行检查,导致`ndr_read_uint8Array`中发生堆缓冲区溢出。
- **影响版本**:<= 3.20.0
- **修复版本**:3.20.1
- **CVE编号**:CVE-2026-22853
- **CWE编号**:CWE-787
- **漏洞级别**:中等
##额外信息
- **漏洞报告者**:ehdgks0627
- **代码问题**:
- `ndr_read_pointedMessageEx` 分配`itemCount = ndr_hintsCount(descr, hints)`,因此缓冲区大小来自`hints->count`。
- `ndr_read_uconformant_array` 从流中读取`count`,仅检查`count * itemType->itemSize < hints->count`,这无法防止`count > hints->count`。
- 循环将`count`个元素写入大小为`hints->count`的缓冲区,导致`count`较大时出现越界写入。
- **PoC**:存在,但由于限制仅以当前形式提供。
- 包含构建特定数据包的代码段。
- **潜在影响**:恶意服务器可触发客户端堆缓冲区溢出,导致崩溃(DoS)和潜在堆破坏,以及基于分配器行为和周围堆布局的代码执行风险。
Zaproxy alias impedit expedita quisquam pariatur exercitationem. Nemo rerum eveniet dolores rem quia dignissimos.