CVE-2026-31503Linux内核UDP协议栈在处理socket绑定时存在逻辑漏洞。当使用hash2哈希表进行冲突检测时,如果绑定的套接字数量超过阈值(hslot->count > 10),系统会切换检测逻辑。此时,攻击者可以利用该缺陷,在已绑定多个特定地址的端口上成功绑定通配符地址(如0.0.0.0或::),绕过正常的冲突检查。该问题影响IPv4及IPv6环境,可能导致网络服务异常或可用性受损。
该漏洞位于UDP协议栈的绑定冲突检查机制中。UDP使用`hash`(仅端口)和`hash2`(地址+端口)两个哈希表。正常情况下,当端口上已有特定地址绑定时,不允许绑定通配符地址。然而,代码在`hslot->count > 10`时切换到`hash2`逻辑,导致`udp_lib_lport_inuse()`在检测通配符地址冲突时失效。具体表现为:先绑定超过10个特定IP地址到同一端口,随后绑定通配符地址将成功,这与TCP的正确实现不一致。修复方案借鉴了TCP的`inet_use_hash2_on_bind`逻辑,确保在切换哈希表时仍能正确校验通配符地址的冲突。