CVE-2023-53585
kernel: bpf: reject unhashed sockets in bpf_sk_assign
Severity
LowRed Hat Product Security
CVSS 3.1
Review impact separately from score.
Published · October 4, 2025
Updated · June 30, 2026
Description
A reference counting flaw was found in the Linux kernel's BPF socket assignment helper when handling unhashed UDP sockets. When a BPF program assigns an unhashed UDP socket to a packet, the function increments the socket reference count assuming SOCK_RCU_FREE isn't set. However, subsequent bind or connect operations set this flag, causing the packet receive path to skip the reference decrement. This creates a permanent reference leak that prevents socket cleanup, leading to resource exhaustion and denial of service.
Statement
The bpf_sk_assign helper allows BPF programs to redirect packets to specific sockets, a powerful feature for custom load balancing or packet steering. The helper was designed around an assumption: SOCK_RCU_FREE (which controls whether sockets can be freed after an RCU grace period without explicit reference counting) remains stable throughout the packet's lifetime. For most sockets this is true—the flag is set at socket creation. UDP sockets are different: they're created without SOCK_RCU_FREE, and this flag is only added later when they're bound to a port via udp_lib_get_port. Originally, BPF couldn't access unhashed (unbound) UDP sockets, so this wasn't an issue. That changed when sockmap restrictions were lifted. Now the following sequence creates a leak: put an unbound UDP socket in a sockmap, pull it out and bpf_sk_assign it (incrementing refcount because SOCK_RCU_FREE isn't set), bind the socket (setting SOCK_RCU_FREE), then when the packet reaches tcp_v4_rcv, skb_steal_sock sees SOCK_RCU_FREE and skips the sock_put. The fix rejects unhashed sockets in bpf_sk_assign.
CVSS score applicability
The CVSS score(s) listed for this vulnerability do not reflect the associated product's status, and are included for informational purposes to better understand the severity of this vulnerability.
Mitigation
No mitigation is specified in collected source.
CVSS / CWE
CVSS 3.1 · 5.5CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CWE-911 · Improper Update of Reference Count