CVE-2026-53184: udp: clear skb->dev before running a sockmap verdict
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 devscratch (the truesize/state cache set by udpsetdevscratch()), through the union { struct netdevice dev; unsigned long devscratch; } in skbuff.
When a UDP socket is in a sockmap, skdataready is skpsockverdictdataready(), which calls udpreadskb() -> recvactor() (skpsockverdictrecv) to run the attached SKSKB verdict program in softirq. If that program calls a socket-lookup helper (bpfsklookuptcp/udp, bpfskclookuptcp), bpfskclookup() does:
if (skb->dev) callernet = devnet(skb->dev);
skb->dev still holds the devscratch value (a non-NULL integer), so devnet() dereferences it as a struct netdevice 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:bpfskclookup net/core/filter.c:7033 [inline] RIP: 0010:bpfsklookup+0x45/0x160 net/core/filter.c:7047 Call Trace: <IRQ> bpfprog4675cb904b7071f8+0x12e/0x14e bpfprogrunpinoncpu+0xc6/0x1f0 skpsockverdictrecv+0x1ba/0x350 udpreadskb+0x31a/0x370 skpsockverdictdataready+0x2e3/0x600 udpenqueuescheduleskb+0x4c8/0x650 udpv6queuercvoneskb+0x3ec/0x740 udp6unicastrcvskb+0x11d/0x140 ip6protocoldeliverrcu+0x61e/0x950 ip6inputfinish+0xa9/0x150 NFHOOK+0x286/0x2f0 ip6input+0x117/0x220 NFHOOK+0x286/0x2f0 netifreceiveskb+0x85/0x200 processbacklog+0x374/0x9a0 napipoll+0x4f/0x1c0 netrxaction+0x3b0/0x770 handlesoftirqs+0x15a/0x460 dosoftirq+0x57/0x80 </IRQ>
The rmem charge that devscratch accounted for is released by skbrecvudp() on dequeue, just above, so the scratch is dead by the time recvactor() runs. Clear skb->dev so bpfskclookup() falls back to socknet(skb->sk), which skbsetownersksafe() set just above.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 6.6.143.1-1 - Configuration
Apply the fix described: ensure skb->dev is cleared before executing the sockmap verdict path so bpf_skc_lookup() does not treat the repurposed dev_scratch value as a struct net_device* (prevents the non-canonical address GP fault in softirq).
Linux kernel UDP receive path (sockmap verdict / bpf_sk_lookup / bpf_skc_lookup) skb->dev handling = clear skb->dev before running a sockmap verdict
Event History
Frequently Asked Questions
What is the severity of CVE-2026-53184?
The severity of CVE-2026-53184 is rated at 45.
How do I fix CVE-2026-53184?
To fix CVE-2026-53184, upgrade to the patched version of the Linux kernel that addresses this vulnerability.
What vulnerabilities does CVE-2026-53184 address in the Linux kernel?
CVE-2026-53184 addresses an issue where skb->dev was not cleared before executing a sockmap verdict on the UDP receive path.
Which versions of the Linux kernel are affected by CVE-2026-53184?
CVE-2026-53184 affects specific versions of the Linux kernel prior to the fix released on June 25, 2026.
What impact does CVE-2026-53184 have on network security?
CVE-2026-53184 could potentially lead to improper handling of network packets, affecting the reliability and security of UDP communications.