# FreeRDP 声卡格式堆溢出漏洞
## 概述
FreeRDP 是远程桌面协议(RDP)的免费实现。在版本 3.20.1 之前,恶意 RDP 服务器可在处理音频输入(AUDIN)格式列表时触发客户端的堆缓冲区溢出写入漏洞。
## 影响版本
- 受影响版本:3.20.1 之前的所有版本
- 修复版本:3.20.1
## 细节
漏洞存在于 `audin_process_formats` 函数中。该函数在处理多个 MSG_SNDIN_FORMATS PDU 时,重复使用 `callback->formats_count` 变量,并在重新分配 `formats` 数组后未正确重置或验证该计数,导致向已分配的数组边界外写入数据,引发堆缓冲区溢出。
## 影响
- 内存 corruption
- 客户端崩溃
- 可能被利用执行远程代码(取决于环境和利用条件)
是否为 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 audin_process_formats · Advisory · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
## 关键信息总结
### 漏洞概述
- **类型**: 堆缓冲区溢出 (Heap-buffer-overflow)
- **位置**: 在处理 Audio Input (AUDIN) 格式列表的 `audin_process_formats` 函数中
- **发现者**: ehdgks0627
- **CVE ID**: CVE-2026-22852
- **严重程度**: 中等 (Moderate)
### 影响范围
- **受影响版本**: <= 3.20.0
- **修复版本**: 3.20.1
- **影响的产品**: FreeRDP 客户端
### 漏洞详情
- `audin_process_formats` 函数在处理格式列表时,未正确重置或释放先前列表,当 `MSG_SNDIN_FORMATS` PDU 多次发送时,会导致数据写入已分配数组的边界之外。
- 第二个 `MSG_SNDIN_FORMATS` 消息导致已分配数组的写入超出其末尾,引发堆缓冲区溢出。
### 利用方式 (PoC)
1. 使用启用 Asan 的 FreeRDP 客户端构建/运行。
2. 连接到服务器,服务器发送 `MSG_SNDIN_FORMATS`,每个消息包括 `NumFormats = N` 和所有兼容格式。
3. 第二个消息导致在 `audin_process_formats` 中崩溃。
### 影响
- 恶意服务器可触发客户端堆缓冲区溢出,导致崩溃 (DoS),并可能根据分配器行为和周围堆布局带来代码执行风险。
Zaproxy alias impedit expedita quisquam pariatur exercitationem. Nemo rerum eveniet dolores rem quia dignissimos.