{"id":4656,"date":"2026-09-04T18:46:40","date_gmt":"2026-09-04T10:46:40","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-64581"},"modified":"2026-09-04T18:46:40","modified_gmt":"2026-09-04T10:46:40","slug":"cve-2026-64581","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-64581","title":{"rendered":"CVE-2026-64581 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nxfrm: fix sk_dst_cach"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>xfrm: fix sk_dst_cache double-free in xfrm_user_policy()<\/p>\n<p>xfrm_user_policy() clears the socket dst cache with __sk_dst_reset(),<br \/>\ni.e. the non-atomic __sk_dst_set(sk, NULL): it reads sk_dst_cache with<br \/>\nrcu_dereference_protected(), stores NULL and dst_release()s the old dst.<br \/>\nThat is only safe if no other thread modifies sk_dst_cache concurrently.<\/p>\n<p>For a connected UDP socket that does not hold: the transmit fast path<br \/>\n(udp_sendmsg -&gt; sk_dst_check -&gt; sk_dst_reset) resets the cache locklessly<br \/>\nwith an atomic xchg(). A per-socket policy change racing a send can make<br \/>\nboth sides observe the same old dst and each dst_release() it, dropping<br \/>\nthe socket&#8217;s single reference twice and freeing the xfrm_dst bundle while<br \/>\nit is still referenced:<\/p>\n<p>  BUG: KASAN: slab-use-after-free in dst_release<br \/>\n  Write of size 4 at addr ffff88801897b6c0 by task exploit\/155<br \/>\n  Call Trace:<br \/>\n   &#8230;<br \/>\n   dst_release (&#8230; .\/include\/linux\/rcuref.h:109)<br \/>\n   xfrm_user_policy (.\/include\/net\/sock.h:2239 .\/include\/net\/sock.h:2256 net\/xfrm\/xfrm_state.c:3053)<br \/>\n   do_ip_setsockopt (net\/ipv4\/ip_sockglue.c:1347)<br \/>\n   ip_setsockopt (net\/ipv4\/ip_sockglue.c:1417)<br \/>\n   do_sock_setsockopt (net\/socket.c:2368)<br \/>\n   __sys_setsockopt (net\/socket.c:2393)<br \/>\n   __x64_sys_setsockopt (net\/socket.c:2396)<br \/>\n   do_syscall_64 (arch\/x86\/entry\/syscall_64.c:94)<br \/>\n   entry_SYSCALL_64_after_hwframe (arch\/x86\/entry\/entry_64.S:121)<\/p>\n<p>Reachable by an unprivileged user via a user+network namespace.<\/p>\n<p>Use the atomic sk_dst_reset() so the cache is cleared and released with a<br \/>\nsingle xchg(): whichever side wins releases the dst once, the other sees<br \/>\nNULL and does nothing. Behaviour is otherwise unchanged.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>xfrm: fix sk_dst_cache double-free in xfrm_user_policy()<\/p>\n<p>xfrm_user_policy() clears the socket dst cache with __sk_dst_reset(),<br \/>\ni.e<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-4656","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/4656","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4656"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}