原创漏洞 | FreeRDP 客户端 X.224 routing token 堆缓冲区溢出漏洞
微步情报局 2026-09-05 09:00 北京

点击查看漏洞详情
漏洞概况
FreeRDP 是开源远程桌面协议(RDP)实现,其客户端广泛用于跨平台连接 Windows 远程桌面及同类 RDP 服务。
近日,FreeRDP 官方发布通告,修复了FreeRDP 客户端 X.224 routing token 堆缓冲区溢出漏洞,该漏洞由微步XGPT发现并报送 FreeRDP 官方。
FreeRDP 客户端在协商阶段通过 `nego_send_negotiation_request()`构造 X.224 Connection Request。函数先分配一块固定512字节的缓冲区,再把恶意服务端经重定向注入的 routing token(长度与内容均可控)写入其中。写入调用的 `Stream_Write` 本质上是一次没有容量检查的 `memcpy`,超长 token 会在拷贝时造成堆越界写。
BOOL nego_send_negotiation_request(rdpNego *nego){wStream *s = Stream_New(NULL, 512); /* 定长 512B */size_t length = 11; /* TPKT + X.224 CR */Stream_Seek(s, length);if (nego->RoutingToken) {/* 实质 memcpy;发行版无剩余容量检查 —— 越界发生于此 */Stream_Write(s, nego->RoutingToken, nego->RoutingTokenLength);if (!token_ends_with_CRLF)Stream_Write(s, "\r\n", 2);length += nego->RoutingTokenLength /* + 2 if CRLF appended */;}if (TLS_or_NLA_offered)length += 8; /* RDP_NEG_REQ */if (length > UINT16_MAX) /* 只校验报文长度,且已在 Write 之后 */goto fail;/* 回填 TPKT 长度并发送 */...}
攻击者可诱使受害者连接恶意 RDP 服务端(或在其连向其它 RDP 服务端时经可注入重定向的中间人投递),借 Server Redirection 下发超长 routing token,使客户端在重连协商时触发该溢出并造成内存损坏;满足特定利用条件时,可执行任意代码。建议受影响用户尽快修复。
漏洞处置优先级(VPT)
综合处置优先级:中风险
基本信息 | 微步编号 | XVE-2026-57862 |
漏洞类型 | 缓冲区溢出 | |
利用条件评估 | 利用漏洞的网络条件 | 远程 |
是否需要绕过安全机制 | 否 | |
对被攻击系统的要求 | 无特殊要求 | |
利用漏洞的权限要求 | 无须用户权限 | |
是否需要受害者配合 | 是 | |
利用情报 | 是否有POC | 是 |
已知利用行为 | 暂无 |
漏洞影响范围
产品名称 | Freerdp |
受影响版本 | version<=3.30.0 |
有无修复补丁 | 有 |
修复方案
官方修复方案
官方已发布修复方案,请访问链接下载:
https://www.freerdp.com/2026/08/26/3_31_0-release
官方漏洞公告:https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-r9pv-ffph-6gg6
临时缓解措施
强制证书校验,限制 FreeRDP 客户端仅连接已信任或白名单内的 RDP 主机。
微步产品支撑
微步漏洞情报于2026-09-03收录该漏洞。
微步下一代威胁情报平台NGTIP及X情报中心已于漏洞收录时向漏洞订阅用户推送该漏洞情报,并将持续推送后续更新;对于已经录入资产的用户,支持实时自动化排查受影响资产。
微步威胁感知平台TDP已于20260903支持检测,检测ID:S3100184119,模型/规则高于:20260903000000可检出。
