2026 年 8 月 1 日,FreeRDP 项目组披露 Windows 客户端(wfreerdp.exe)中一处堆缓冲区溢出漏洞,编号 CVE-2026-67305,CVSS v4.0 评分 9.4(Critical)。漏洞位于剪贴板虚拟通道(Clipboard Virtual Channel)处理 CLIPRDR_FILE_CONTENTS_RESPONSE PDU 的代码路径,由于未对服务器返回的数据大小做边界校验,恶意 RDP 服务器可以在用户执行粘贴操作(Ctrl+V)时触发任意堆内存破坏,最终可获得 FreeRDP 客户端进程权限的远程代码执行。该漏洞由安全研究员 hyperlyz 报告,FreeRDP 在 8 月 1 日同步发布 3.29.0 版本修复。
一、事件概述
FreeRDP 是业界广泛使用的开源 RDP(Remote Desktop Protocol)实现,常见于 Linux 桌面连接 Windows 跳板机、运维堡垒机、远程技术支持等场景。Windows 端的 wfreerdp 客户端默认启用剪贴板重定向(Clipboard Redirection),这意味着用户在远程桌面窗口中执行复制/粘贴时,剪贴板内容会在客户端与服务器之间通过虚拟通道传输。该漏洞即位于该通道的 Windows 客户端解析逻辑中。
- 漏洞编号:CVE-2026-67305(GitHub Advisory: GHSA-cj9v-h4hq-29jr)
- CVSS 评分:v3.1 9.8 / v4.0 9.4(Critical)
- 受影响产品:FreeRDP Windows 客户端(所有 <= 3.28.0)
- 修复版本:FreeRDP 3.29.0
- 披露日期:2026-08-01 / 攻击前提:默认启用剪贴板重定向 + 用户执行粘贴
二、技术细节
漏洞被归类为 CWE-122 Heap-based Buffer Overflow,根因是服务器可控的长度值被直接用于 CopyMemory() 而未与目标缓冲区大小比对。完整的代码路径跨三个函数:
cliprdr_read_file_contents_response()(cliprdr_common.c:384)解析来自服务器的CLIPRDR_FILE_CONTENTS_RESPONSEPDU;wf_cliprdr_server_file_contents_response()(wf_cliprdr.c:2449)将其映射到 Windows 客户端逻辑;CliprdrStream_Read()(wf_cliprdr.c:249)执行最终内存复制。
当客户端向服务器请求 cb 字节文件内容时,恶意服务器返回 dataLen 远大于 cb 的 PDU:解析器计算 cbRequested = dataLen - 4 时没有上界校验,直接将其赋给 clipboard->req_fsize;随后 CliprdrStream_Read() 调用 CopyMemory(pv, req_fdata, req_fsize),将最大可达 65,536 字节写入仅为 cb(如 16,384 字节)分配的缓冲区,产生约 49,152 字节的越界堆写入。
利用过程需要:
- 受害者启用剪贴板重定向(默认)并连接到攻击者控制的 RDP 服务器;
- 服务器发送
CB_MONITOR_READY与FORMAT_LISTPDU,宣告支持CF_HDROP文件拖放格式; - 用户在 Windows 资源管理器中执行粘贴操作(Ctrl+V);
- 客户端按预期请求 cb 字节文件内容,恶意服务器返回
dataLen = OVERFLOW_SIZE + 4,触发堆溢出; - 通过精心布置的堆布局破坏相邻的
IStreamvtable 指针,在 OLE 调用Release/Read/Stat时劫持控制流,跳转到攻击者控制的 shellcode。
三、影响评估
CVSS v4.0 向量 AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H 中,仅 UI:P(需用户粘贴)一项限制利用门槛,其余维度均为最严重。攻击者一旦获得 RCE,将以 FreeRDP 客户端进程权限运行代码:
- 访问本地用户文件与会话资源;
- 窃取 RDP 客户端缓存的凭据与访问令牌;
- 利用客户端已建立的 VPN 或信任通道向企业内网横向移动;
- 在多因素认证场景下绕过 MFA(MFA 通常仅保护初始连接,不限制已建立通道的客户端行为)。
考虑到 RDP 客户端广泛用于远程技术支持、运维跳板、远程开发等高权限场景,漏洞的实际危害往往超过 CVSS 评分本身。
四、修复建议
4.1 立即修复
- 升级 FreeRDP 至 3.29.0 或更高版本,Linux/macOS 端的
xfreerdp、Windows 端的wfreerdp同步更新。 - 若使用发行版包管理器安装,需关注上游 backport 进度,必要时从 FreeRDP 官方源获取 3.29.0 二进制包。
4.2 临时缓解(无法立即升级时)
- 在 RDP 连接命令行中禁用剪贴板重定向:
+clipboard切换为-clipboard(如xfreerdp -clipboard /v:host /u:user /p:pass),临时切断攻击面; - 在企业跳板机/堡垒机部署白名单,仅允许连接受信 RDP 服务器;
- 通过 EDR 监控
wfreerdp.exe的异常子进程创建与可疑内存分配; - 提醒用户:连接到未知或不受信 RDP 服务器时不要执行粘贴操作。
4.3 加固建议
- 对 FreeRDP 版本建立例行巡检,官方安全补丁发布后 72 小时内完成升级;
- 在 RDP 跳板机引入二级认证与会话录像,便于事后审计;
- 关注 FreeRDP 后续安全公告,8 月 2 日又披露 CVE-2026-68579(CliprdrStream_Read 堆溢出)影响 <= 3.29.0,建议直接跟进 3.30.0。
五、参考来源
- FreeRDP GitHub Advisory:https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-cj9v-h4hq-29jr
- NVD 详情:https://nvd.nist.gov/vuln/detail/CVE-2026-67305
- Tenable 漏洞条目:https://www.tenable.com/cve/CVE-2026-67305
- VulnCheck 技术分析:https://www.vulncheck.com/advisories/freerdp-windows-client-before-heap-buffer-overflow-via-cliprdr