CVE-2026-31607Linux内核的usbip模块存在严重的堆越界写入漏洞。在处理USB/IP客户端的RET_SUBMIT响应时,usbip_pack_ret_submit()函数未经验证即使用网络PDU中的number_of_packets覆盖urb->number_of_packets。由于urb->iso_frame_desc数组大小在分配时已固定,恶意服务器可通过发送过大的值导致usbip_recv_iso()函数在循环写入时超出堆内存边界,引发内存破坏。
该漏洞发生于Linux内核USB/IP协议栈的客户端处理逻辑中。当客户端提交ISO URB后,期望接收服务器返回的RET_SUBMIT响应。在usbip_pack_ret_submit()函数内,代码直接将响应包中的rpdu->number_of_packets赋值给urb->number_of_packets,未与原始分配的数组大小进行比对。攻击者可搭建恶意的USB/IP服务器,在响应数据包中设置一个远大于原始请求的number_of_packets值。随后的usbip_recv_iso()函数将使用此值作为循环上限,向urb->iso_frame_desc[]数组写入数据。由于写入地址超出了预分配的堆内存区域,导致slab-out-of-bounds写入,可能造成内核崩溃或潜在的权限提升。