# FreeRDP 堆使用后释放漏洞
## 概述
FreeRDP在3.20.1之前版本中存在堆使用后释放(use-after-free)漏洞,位于`irp_thread_func`函数中。
## 影响版本
受影响版本为3.20.1之前的FreeRDP版本。
## 细节
在`irp_thread_func`函数中,`IRP`结构体在调用`irp->Complete()`时已被释放,但在错误处理路径中仍被再次访问,导致使用后释放。
## 影响
攻击者可能利用该漏洞造成内存破坏,进而引发拒绝服务或潜在的代码执行。
是否为 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-use-after-free in irp_thread_func · Advisory · FreeRDP/FreeRDP · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
以下是关于窗口中安全漏洞的关键信息,使用简洁的Markdown格式返回:
### 漏洞概览
- **漏洞类型**: 堆使用后释放(Heap-use-after-free)
- **影响版本**: <= 3.20.0
- **修复版本**: 3.20.1
- **CVE ID**: CVE-2026-22857
- **严重性**: 中等(Moderate)
- **CWE**: CWE-416
### 漏洞描述
#### 概述
在`irp_thread_func`中发生的堆使用后释放,因为IRP(I/O请求包)被`irp->Complete()`释放后,在错误路径中再次被访问。
#### 详细信息
- `irp_thread_func`通过`data->irp->Complete(data->irp)`调用释放IRP,并在之后继续使用`data->irp`。
- `irp->Complete`解析为`irp_complete`,之后调用`irp_free()`释放IRP。
- 如果`rdpdr_send()`失败,`irp_complete`返回错误,`irp_thread_func`执行`data->irp->Discard(data->irp)`,导致解引用已释放的IRP并触发UAF。
### 漏洞利用(PoC)
1. 启用串行重定向并连接到RDP服务器。
2. 发送一个IRP以触发`irp_thread_func`执行。
3. 强制RDPDR发送失败(如关闭RDPDR通道或丢弃响应)。
4. IRP在`irp_complete`中被释放,随后`data->irp->Discard()`触发UAF。
### 影响
恶意服务器可触发客户端堆缓冲区溢出,导致崩溃并可能有堆损坏与代码执行风险,具体取决于分配器行为和堆布局。
### 影响范围
- 仅影响基于FreeRDP的客户端。
Zaproxy alias impedit expedita quisquam pariatur exercitationem. Nemo rerum eveniet dolores rem quia dignissimos.