CVE-2026-22859FreeRDP是一个开源的远程桌面协议(RDP)实现。3.20.1之前的版本中,URBDRC(USB Remote Device Client)客户端在处理服务器提供的MSUSB_INTERFACE_DESCRIPTOR值时,未对其进行边界检查就直接用作libusb_udev_complete_msconfig_setup函数中的索引,导致存在越界读取漏洞。攻击者可通过构造恶意的RDP服务器响应,发送超界或伪造的MSUSB_INTERFACE_DESCRIPTOR值,触发客户端的越界内存读取,从而可能获取敏感信息或造成程序崩溃。该漏洞无需认证即可利用,且无需用户交互,CVSS评分高达9.1,属于严重级别。
漏洞位于FreeRDP的URBDRC客户端组件中,具体在处理USB接口描述符的过程中。问题代码在libusb_udev_complete_msconfig_setup函数中,直接使用服务器提供的MSUSB_INTERFACE_DESCRIPTOR值作为数组索引,而未验证该值是否在合法范围内。当攻击者作为RDP服务器时,可发送精心构造的MSUSB_INTERFACE_DESCRIPTOR值,其索引超出预期边界。客户端接收到该恶意数据后,会尝试访问对应的内存地址,导致越界读取。攻击者可能利用此漏洞读取堆内存中的敏感数据,如密钥、凭证或其他进程内存信息。在某些场景下,连续的越界读取还可能辅助进行进一步的内存破坏攻击。