CVE-2026-68284
NoneCVSS
—
EPSS
0.1%
Published
Aug 10, 2026
CISA due date
—
Cloudanix analysis
A race condition in the Linux kernel's socket handling can let a local program cause a crash or memory corruption when multiple threads send data at the same time.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Full Compromise
- Component
- OS kernel
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Use-after-free in tcp_bpf_sendmsg() caused by a stale pointer to a shared cork message after a concurrent thread frees it while the socket lock is dropped during sk_stream_wait_memory(); the error path incorrectly decides to free the message again based on a now-invalid comparison against psock->cork.
Why it matters to the business
Local attackers on multi-threaded or multi-process workloads using BPF sockmap can trigger kernel crashes or memory corruption on affected Linux systems, leading to denial of service or potential escalation; low EPSS and no KEV listing reduce immediate external risk but the 76-day publication window still requires prompt patching on exposed hosts.
How an attack unfolds
An attacker with local access crafts concurrent send operations on a socket using BPF sockmap so that one thread's allocation failure path races with another thread completing and freeing the cork; the first thread then dereferences the freed slab object inside sk_msg_free, producing the KASAN-detected slab-use-after-free.
How to fix it
Update the Linux kernel to a version containing the upstream fix for the cork comparison logic in tcp_bpf_sendmsg; apply the patch that checks the stack-local temporary message directly instead of relying on psock->cork.
How to confirm the fix worked
Confirm the kernel source contains the corrected comparison that checks the local tmp message directly; recompile, boot the new kernel, and run concurrency tests exercising tcp_bpf_sendmsg under KASAN or similar memory debuggers to verify absence of the use-after-free.
Typical attack path
- Obtain local code execution on a Linux host using BPF sockmap with tcp_bpf_sendmsg paths
- Create two threads that send on the same socket simultaneously
- Force sk_msg_alloc failure in one thread to enter the sk_stream_wait_memory error path
- Allow the second thread to finish the cork and free the shared message while the lock is dropped
- Reacquire the lock and trigger the unsafe comparison that leads to double-free of the stale pointer
How to detect it
Search kernel logs and KASAN reports for sk_msg_free calls originating from tcp_bpf_sendmsg under slab-use-after-free conditions; inspect audit logs for concurrent sendto syscalls on sockets attached to BPF sockmap programs.
What your security team should do
- Prioritize kernel updates on any system exposing BPF sockmap to untrusted local users
- Monitor upstream stable branches for the exact commit that replaces the psock->cork comparison
- Temporarily restrict unprivileged BPF programs or sockmap usage if patching is delayed
- Include sockmap-related workloads in regression testing after kernel upgrades
The record
In the Linux kernel, the following vulnerability has been resolved: bpf, sockmap: Fix cork use-after-free in tcp_bpf_sendmsg() tcp_bpf_sendmsg() keeps msg_tx across sk_stream_wait_memory(), which drops and reacquires the socket lock. Its error path tries to decide whether msg_tx names the local temporary message by comparing it with the current value of psock->cork. This comparison is unsafe when two threads send on the same socket: Thread A Thread B msg_tx = psock->cork sk_msg_alloc() fails sk_stream_wait_memory() releases the socket lock acquires the socket lock completes the cork psock->cork = NULL frees the cork reacquires the socket lock msg_tx != psock->cork sk_msg_free(msg_tx) The stale cork is therefore mistaken for the local temporary message and freed again. KASAN reported: BUG: KASAN: slab-use-after-free in sk_msg_free+0x49/0x50 Read of size 4 at addr ffff88810c908800 by task poc/90 Call Trace: sk_msg_free+0x49/0x50 tcp_bpf_sendmsg+0x14f5/0x1cc0 __sys_sendto+0x32c/0x3a0 __x64_sys_sendto+0xdb/0x1b0 Allocated by task 89: __kasan_kmalloc+0x8f/0xa0 tcp_bpf_sendmsg+0x16b3/0x1cc0 Freed by task 91: __kasan_slab_free+0x43/0x70 kfree+0x131/0x3c0 tcp_bpf_sendmsg+0xec3/0x1cc0 msg_tx can only name the stack-local tmp or the shared cork. Check for tmp directly so a changed psock->cork cannot turn a shared message into an apparent local one.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|