CVE-2026-68386
NoneCVSS
—
EPSS
0.2%
Published
Aug 10, 2026
CISA due date
—
Cloudanix analysis
A Linux kernel bug can let certain network programs slowly leak memory until the system runs out and stops working properly.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The flaw allows a BPF sockmap update to accept an unbound UDP socket whose refcount is not decremented after a subsequent bind operation, because the kernel skips the decrement when the socket transitions from SOCK_RCU_FREE to bound state, resulting in a permanent kernel memory leak of sk_buff and socket structures.
Why it matters to the business
Repeated triggering can exhaust kernel memory on affected Linux systems, causing performance degradation, application crashes, or full system unavailability; the low EPSS and absence from KEV indicate limited real-world exploitation pressure 76 days after publication.
How an attack unfolds
An attacker loads a BPF program that performs a sockmap update on a freshly created unbound UDP socket, then binds the socket via the normal socket API; the refcount imbalance leaves the socket object unreferenced and never freed, leaking memory each time the sequence is repeated.
How to fix it
Upgrade the Linux kernel to a version containing the fix that rejects unhashed UDP sockets during sockmap updates; rebuild and redeploy any custom BPF programs that previously relied on the rejected behavior; test sockmap-using workloads after the update.
How to confirm the fix worked
Confirm the kernel version contains commit 67312adc96b5 or the equivalent sockmap rejection logic; run the kernel selftest test_progs that exercise sockmap with UDP sockets and verify no unreferenced socket objects remain after bind operations; monitor /proc/meminfo or slabinfo for unexpected growth in sock and sk_buff slabs under sockmap load.
Typical attack path
- Create an unbound UDP socket from user space
- Use a BPF program to insert the socket into a sockmap
- Bind the socket to an address or port
- Repeat the sequence to accumulate leaked kernel objects
- Monitor or trigger memory pressure to achieve denial of service
How to detect it
Search kernel logs and audit trails for repeated sockmap update operations on UDP sockets followed by bind syscalls; monitor for slab allocation backtraces matching sk_alloc and inet_create from processes that also perform bpf map updates; look for growing numbers of unreferenced socket objects in kmemleak reports or slabinfo.
What your security team should do
- Prioritize kernel updates on systems that load BPF sockmap programs handling UDP traffic
- Audit BPF programs and user-space code that insert sockets into sockmaps to ensure they only use bound sockets
- Add kernel memory and slab usage monitoring to detect anomalous growth
- Review any downstream container or distribution images that ship affected kernel versions
The record
In the Linux kernel, the following vulnerability has been resolved: bpf, sockmap: Reject unhashed UDP sockets on sockmap update UDP sockets get SOCK_RCU_FREE set when (auto-)bound. This means sk_is_refcounted(unbound) = true, while sk_is_refcounted(bound) = false. Because sockmap accepts unbound UDP sockets, a BPF program can increment a socket's refcount via lookup. If the socket is subsequently bound, the transition from unbound to bound causes bpf_sk_release() to skip the decrement of the refcount, causing a memory leak. unreferenced object 0xffff88810bc2eb40 (size 1984): comm "test_progs", pid 2451, jiffies 4295320596 hex dump (first 32 bytes): 7f 00 00 01 7f 00 00 01 d2 04 1b b7 04 d2 00 00 ................ 02 00 01 40 00 00 00 00 00 00 00 00 00 00 00 00 ...@............ backtrace (crc bdee079d): kmem_cache_alloc_noprof+0x557/0x660 sk_prot_alloc+0x69/0x240 sk_alloc+0x30/0x460 inet_create+0x2ce/0xf80 __sock_create+0x25b/0x5c0 __sys_socket+0x119/0x1d0 __x64_sys_socket+0x72/0xd0 do_syscall_64+0xa1/0x5f0 entry_SYSCALL_64_after_hwframe+0x76/0x7e Instead of special-casing for refcounted sockets, reject unhashed UDP sockets during sockmap updates, as there is no benefit to supporting those. This effectively reverts the commit under Fixes, with two exceptions: 1. sock_map_sk_state_allowed() maintains a fall-through `return true`. 2. In the spirit of commit b8b8315e39ff ("bpf, sockmap: Remove unhash handler for BPF sockmap usage"), the proto::unhash BPF handler is not reintroduced. Historical note: this issue is related to commit 67312adc96b5 ("bpf: reject unhashed sockets in bpf_sk_assign").
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|