CVE-2026-99042: io_uring/net: populate CONNECT filter fields for 24-byte sockaddr_in6
In the Linux kernel, the following vulnerability has been resolved:
iouring/net: populate CONNECT filter fields for 24-byte sockaddrin6
ioconnectbpfpopulate() fills connect.port and connect.v6addr for AFINET6 only when addrlen >= sizeof(struct sockaddrin6), i.e. 28 bytes.
The IPv6 connect paths accept SIN6LENRFC2133 (24 bytes), which already holds sin6port and sin6addr. ioconnect() passes addrlen to the socket layer unchanged.
At addrlen 24 the filter sees family AFINET6 with port and address zero, while the kernel connects to the real destination. A filter that denies an IPv6 port or address is bypassed. Denying connect.port == P rejects [::1]:P with -EACCES at addrlen 28 but connects at addrlen 24.
Use SIN6LENRFC2133 as the threshold. sin6scopeid stays zero when absent.
The threshold mismatch was found by an AI coding assistant (Claude Code) comparing this hook against the net/ipv6 length checks on my instructions; it also drafted the reproducer and this patch. I verified the bypass and the fix in a VM on 7.3-rc6 and that 7.2 has the same code.