# FreeRDP 驱动读取堆缓冲区溢出漏洞
## 概述
FreeRDP 在处理驱动器读取操作时存在堆缓冲区溢出漏洞,由服务器控制的读取长度未设置硬性上限,导致可覆盖堆内存。
## 影响版本
3.20.1 之前版本
## 细节
在驱动器读取过程中,使用服务器可控的读取长度将文件数据读入 IRP 输出流缓冲区,缺乏对读取长度的严格限制,从而引发堆缓冲区溢出。
## 影响
远程服务器可利用该漏洞造成堆内存破坏,可能导致任意代码执行或服务崩溃。
是否为 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 drive_process_irp_read · Advisory · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
### 关键漏洞信息
#### 概要
- **漏洞名称**: 堆缓冲区溢出 in drive_process_irp_read
- **严重性**: 中等
- **CVE ID**: CVE-2026-22854
- **CWE**: CWE-122
#### 影响版本
- **受影响版本**: <= 3.20.0
- **修复版本**: 3.20.1
#### 漏洞描述
- **漏洞类型**: 堆缓冲区溢出
- **原因**: 在驱动程序读取时,使用受服务器控制的读取长度将文件数据读入IRP输出流缓冲区,但由于没有严格的上限,导致过度读取,覆盖堆内存。
#### 关键细节
- `drive_process_irp_read`直接从传入的IRP读取`Length`,并使用它来确定输出流缓冲区的大小。
- 输出流最初通过`StreamPool_Take`分配256字节。
- `drive_file_read`将请求的长度直接传递给`ReadFile`,执行写入提供的缓冲区。
#### 证明概念(PoC)
- 发送一个精心构造的RDPDR驱动设备读取请求,其中`Length`大于默认的IRP输出流大小(256字节)。
#### 影响
- 恶意服务器可以触发客户端堆缓冲区溢出,导致崩溃(DoS),以及潜在的堆损坏,根据分配器行为和堆布局,可能有代码执行的风险。
#### 影响范围
- 仅影响基于FreeRDP的客户端。
Zaproxy alias impedit expedita quisquam pariatur exercitationem. Nemo rerum eveniet dolores rem quia dignissimos.