CVE-2026-64581

xfrm: fix sk_dst_cache double-free in xfrm_user_policy()

HIGH
7.8
CVSS Score
Published: August 5, 2026 at 08:09 AM UTC
Updated: October 19, 2026 at 09:17 PM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH7.8
Exploit prediction
EPSS 0.1%
SSVC
No known exploit

Description

In the Linux kernel, the following vulnerability has been resolved: xfrm: fix sk_dst_cache double-free in xfrm_user_policy() xfrm_user_policy() clears the socket dst cache with __sk_dst_reset(), i.e. the non-atomic __sk_dst_set(sk, NULL): it reads sk_dst_cache with rcu_dereference_protected(), stores NULL and dst_release()s the old dst. That is only safe if no other thread modifies sk_dst_cache concurrently. For a connected UDP socket that does not hold: the transmit fast path (udp_sendmsg -> sk_dst_check -> sk_dst_reset) resets the cache locklessly with an atomic xchg(). A per-socket policy change racing a send can make both sides observe the same old dst and each dst_release() it, dropping the socket's single reference twice and freeing the xfrm_dst bundle while it is still referenced: BUG: KASAN: slab-use-after-free in dst_release Write of size 4 at addr ffff88801897b6c0 by task exploit/155 Call Trace: ... dst_release (... ./include/linux/rcuref.h:109) xfrm_user_policy (./include/net/sock.h:2239 ./include/net/sock.h:2256 net/xfrm/xfrm_state.c:3053) do_ip_setsockopt (net/ipv4/ip_sockglue.c:1347) ip_setsockopt (net/ipv4/ip_sockglue.c:1417) do_sock_setsockopt (net/socket.c:2368) __sys_setsockopt (net/socket.c:2393) __x64_sys_setsockopt (net/socket.c:2396) do_syscall_64 (arch/x86/entry/syscall_64.c:94) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121) Reachable by an unprivileged user via a user+network namespace. Use the atomic sk_dst_reset() so the cache is cleared and released with a single xchg(): whichever side wins releases the dst once, the other sees NULL and does nothing. Behaviour is otherwise unchanged.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

2b06cdf3e688b98fcc9945873b5d42792bd4eee03.16.523.18.1014.1.524.144.4.1234.4.1634.9.895eef9b51114fcc65651d671add52f267f91b945172f157be2f81910ae759bfe2e5c2256fc46256459e9fe58a92a46c6d154d2901735bf230d91b8507adc1ec6cdc20d430aa01b86497220709b9149466b54033eb1cfd77aba471269ddd804ed8d3e35deac9e82cb34c3c2ee895af01bc899c6ed0bc6eb04a
Vendor states this is fixed in 0ea8f06454012d9e7f9c6e6253df710949bf6294 (fixed)
Vendor states this is fixed in 8dd8929b71c4f06c614f8f54c2cc070453faae16 (fixed)
Vendor states this is fixed in 96b678d08268b5f5c6fc99d4289d9b7e334fc683 (fixed)
Vendor states this is fixed in a9340ebdc13f8bb5063c0bc0b037ee7e640d4ae9 (fixed)
Vendor states this is fixed in c283e9ada7fcb7dd4b10592623086b2e6d2f9925 (fixed)
Vendor states this is fixed in e8686fd8d18b99f3a9038683045b2f2338a7706d (fixed)
Vendor states this is fixed in f0ab9a71167bae308e05ab13b65e2007504a603f (fixed)
Vendor states this is fixed in f833821e4b52ab6335d443ede5fb79c38e61d19a (fixed)
Affected range stops below 3.17, so it looks safe — our inference, not a vendor statement
Affected range stops below 3.19, so it looks safe — our inference, not a vendor statement
Affected range stops below 4.10, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 4.14 (unaffected)
Affected range stops below 4.2, so it looks safe — our inference, not a vendor statement
Affected range stops below 4.5, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 5.10.267 (unaffected)
Vendor states this is fixed in 5.15.218 (unaffected)
Vendor states this is fixed in 6.1.185 (unaffected)
Vendor states this is fixed in 6.12.106 (unaffected)
Vendor states this is fixed in 6.18.47 (unaffected)
Vendor states this is fixed in 6.6.154 (unaffected)
Vendor states this is fixed in 7.1.6 (unaffected)
Vendor states this is fixed in 7.2 (unaffected)

Remediation

No guide yet

No remediation guidance has been written for this CVE yet, and no fixed version or vendor advisory is recorded against it.

SSVC — Action Prioritization

SSVCNo known exploitNot automatableTotal impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

7.8HIGHLinux
Vector?

Quick Info

StatusRECEIVED
CWE
CWE-362

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card