HIGH 7.5

CVE-2026-53184: Linux Kernel UDP Sockmap Denial-of-Service Vulnerability

A memory safety flaw exists in the Linux kernel's UDP socket handling when used with eBPF socket maps. The kernel accidentally reuses a packet buffer field (skb->dev) to cache memory accounting data, but this cached value persists when the kernel attempts to look up socket information via eBPF programs. When an eBPF socket-lookup helper tries to dereference what it thinks is a network device pointer, it actually reads garbage data, causing a kernel crash. The vulnerability requires a locally-privileged setup of UDP sockets with attached eBPF socket map programs, but once triggered, reliably crashes the kernel.

Source data · NVD / CISA · public domain

CVSS
3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weaknesses (CWE)
Affected products
7 configuration(s)
Published / Modified
2026-06-25 / 2026-07-06

NVD description (verbatim)

In the Linux kernel, the following vulnerability has been resolved: udp: clear skb->dev before running a sockmap verdict On the UDP receive path skb->dev is repurposed as dev_scratch (the truesize/state cache set by udp_set_dev_scratch()), through the union { struct net_device *dev; unsigned long dev_scratch; } in sk_buff. When a UDP socket is in a sockmap, sk_data_ready is sk_psock_verdict_data_ready(), which calls udp_read_skb() -> recv_actor() (sk_psock_verdict_recv) to run the attached SK_SKB verdict program in softirq. If that program calls a socket-lookup helper (bpf_sk_lookup_tcp/udp, bpf_skc_lookup_tcp), bpf_skc_lookup() does: if (skb->dev) caller_net = dev_net(skb->dev); skb->dev still holds the dev_scratch value (a non-NULL integer), so dev_net() dereferences it as a struct net_device * and the kernel takes a general protection fault on a non-canonical address in softirq: Oops: general protection fault, probably for non-canonical address 0x1010000800004a0 CPU: 1 UID: 0 PID: 1406 Comm: syz.2.19 Not tainted 7.1.0-rc6 #1 PREEMPT(full) RIP: 0010:bpf_skc_lookup net/core/filter.c:7033 [inline] RIP: 0010:bpf_sk_lookup+0x45/0x160 net/core/filter.c:7047 Call Trace: <IRQ> bpf_prog_4675cb904b7071f8+0x12e/0x14e bpf_prog_run_pin_on_cpu+0xc6/0x1f0 sk_psock_verdict_recv+0x1ba/0x350 udp_read_skb+0x31a/0x370 sk_psock_verdict_data_ready+0x2e3/0x600 __udp_enqueue_schedule_skb+0x4c8/0x650 udpv6_queue_rcv_one_skb+0x3ec/0x740 udp6_unicast_rcv_skb+0x11d/0x140 ip6_protocol_deliver_rcu+0x61e/0x950 ip6_input_finish+0xa9/0x150 NF_HOOK+0x286/0x2f0 ip6_input+0x117/0x220 NF_HOOK+0x286/0x2f0 __netif_receive_skb+0x85/0x200 process_backlog+0x374/0x9a0 __napi_poll+0x4f/0x1c0 net_rx_action+0x3b0/0x770 handle_softirqs+0x15a/0x460 do_softirq+0x57/0x80 </IRQ> The rmem charge that dev_scratch accounted for is released by skb_recv_udp() on dequeue, just above, so the scratch is dead by the time recv_actor() runs. Clear skb->dev so bpf_skc_lookup() falls back to sock_net(skb->sk), which skb_set_owner_sk_safe() set just above.

6 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability stems from a union in the sk_buff structure where skb->dev (normally a network_device pointer) is repurposed as dev_scratch to cache truesize and state information during UDP receive processing. When a UDP socket is attached to a sockmap with an SK_SKB verdict program, the recv_actor (sk_psock_verdict_recv) callback executes in softirq context and may invoke BPF socket-lookup helpers (bpf_sk_lookup_tcp/udp, bpf_skc_lookup_tcp). These helpers check if skb->dev is non-NULL and attempt to call dev_net(skb->dev) to infer the network namespace. However, skb->dev still contains the dev_scratch value—an integer cast as a pointer—leading to a dereference of a non-canonical address. The rmem charge accounted via dev_scratch is released by skb_recv_udp() before recv_actor() runs, leaving the field poisoned. The fix clears skb->dev before sockmap verdict execution so that dev_net() checks fail gracefully and the lookup falls back to the correct sock_net(skb->sk) path.

Business impact

This vulnerability can cause kernel panics on systems running eBPF socket map programs on UDP sockets. For production environments relying on eBPF for networking policies, load balancing, or packet filtering, unexpected kernel crashes disrupt service availability and complicate incident response. The attack surface is limited to local actors with capability to load eBPF programs or processes inside containers with appropriate privileges, but the impact—a denial-of-service crash—is immediate and severe. Recovery requires either disabling the affected eBPF programs or upgrading the kernel.

Affected systems

The Linux kernel is affected across all versions that support sockmap and UDP socket integration with eBPF. The issue manifests when both UDP socket maps and SK_SKB verdict programs are active. Any Linux distribution or custom kernel shipping recent kernel versions with eBPF networking support is potentially vulnerable. Systems using kernel-based load balancers (e.g., Cilium, kube-proxy with eBPF acceleration) or intrusion detection via eBPF are at higher risk.

Exploitability

Exploitability requires local access and the ability to load eBPF programs or to control an application that uses sockmap-attached UDP sockets. In containerized environments, this is feasible within a container with appropriate capabilities. The crash is deterministic once the conditions are met (UDP receive on a sockmap-attached socket while an eBPF lookup helper executes), making it straightforward to trigger for an attacker who understands the setup. However, the vulnerability does not permit privilege escalation or information disclosure—it is purely a denial-of-service vector.

Remediation

Patch the kernel to versions that include the fix clearing skb->dev before sockmap verdict processing. Verify with your Linux distribution's security advisories for the exact patched version. Until patching is possible, operators can mitigate by disabling UDP socket maps or by removing/recompiling eBPF programs that use socket-lookup helpers on UDP sockets. Network segmentation to restrict eBPF program loading to trusted users reduces risk.

Patch guidance

Check your Linux distribution's advisory for CVE-2026-53184 to obtain the specific patched kernel version. The fix is typically a simple change to clear skb->dev at the entry point of sockmap verdict callbacks. Backports may be available for older stable kernel branches. Test patches in a non-production environment before rolling out, particularly if you rely on eBPF networking features.

Detection guidance

Monitor kernel logs (dmesg, journalctl) for general protection fault messages with 'non-canonical address' and stack traces involving bpf_skc_lookup or sk_psock_verdict_recv. These are hallmarks of this vulnerability being triggered. System monitoring tools that track kernel panic rates will flag affected hosts. On systems running eBPF socket programs, any unexpected increase in kernel crashes warrants investigation.

Why prioritize this

Although the CVSS score is 7.5 (HIGH), indicating significant severity, the actual risk to most organizations is moderated by the requirement for local access and eBPF program control. Prioritize patching for systems actively using eBPF socket maps (e.g., eBPF-based load balancers, service mesh data planes, container networking). Standard desktop or server workloads without eBPF are unaffected. However, for cloud-native and containerized deployments, this is a critical stability issue that warrants expedited patching.

Risk score, explained

The CVSS 3.1 score of 7.5 reflects high severity due to network availability impact (any network-facing UDP socket can be a vector in an eBPF-enabled kernel), low attack complexity, and no privilege escalation barrier within the local context. The score does not account for the practical constraint that triggering requires eBPF capability or control; in real-world risk models, organizations without eBPF workloads should lower their internal priority.

Frequently asked questions

Do I need to patch if I don't use eBPF?

No. This vulnerability only manifests when UDP sockets are attached to sockmap and SK_SKB verdict programs are active. Standard UDP applications without eBPF networking are unaffected.

Can this be exploited remotely?

No. Triggering requires local access to load eBPF programs or to influence a running application that uses sockmap-attached UDP sockets. Remote attackers cannot directly exploit this vulnerability.

What happens if this bug is triggered?

The kernel crashes with a general protection fault, causing an immediate denial-of-service. No data is leaked or corrupted; the system must reboot. The crash is not preceded by warning signs; it is sudden.

Which eBPF use cases are affected?

SK_SKB programs attached to UDP sockets that call socket-lookup helpers (bpf_sk_lookup_tcp, bpf_sk_lookup_udp, bpf_skc_lookup_tcp) are vulnerable. Common scenarios include eBPF-based load balancers and service meshes that perform dynamic socket routing.

This analysis is based on the CVE description and public kernel documentation as of the publication date. Patch version numbers and vendor availability have not been verified independently; refer to official Linux distribution advisories and kernel.org for authoritative patch information. PoC code is not provided. Organizations should validate the applicability of this vulnerability in their environment before prioritizing remediation based on this assessment alone. Source: NVD (public-domain), retrieved 2026-08-03. Analysis generated by SEC.co (claude-haiku-4-5).