CVE-2026-43194Linux内核网络子系统中存在一个漏洞,涉及通用分段卸载(GSO)帧的传输错误处理。在特定条件下,当使用veth设备模拟GRO且没有Qdisc时,如果GSO超级帧中的单个片段传输失败,TCP层会错误地认为整个帧未发送。这导致发送端的snd_nxt指针停滞,而接收端却确认了更多的数据,最终引发TCP连接死锁。攻击者可利用此漏洞导致目标系统网络连接中断,造成拒绝服务。
该漏洞源于Linux内核TCP协议栈对GSO(通用分段卸载)帧传输返回值的处理逻辑缺陷。在特定网络配置(如无Qdisc的veth设备)下,当发送GSO超级帧时,如果其中某一个分段发生丢包(例如veth返回错误),tcp_write_xmit()函数会错误地将整个GSO帧视为发送失败。这种机制导致发送端的重传队列与发送指针状态严重不一致:发送端认为数据未发送,将数据保留在重传队列中并停止推进snd_nxt;然而,接收端实际上可能已经成功接收并确认了该GSO帧中的其他分段。当接收端发送ACK确认这些高序列号数据时,发送端因无法找到对应的发送记录而拒绝该ACK(判定为TCP_ACK_UNSENT_DATA)。结果导致TCP连接陷入死锁状态,无法传输新数据,最终造成拒绝服务。