{"id":11215,"date":"2026-09-04T18:51:45","date_gmt":"2026-09-04T10:51:45","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-74609"},"modified":"2026-09-04T18:51:45","modified_gmt":"2026-09-04T10:51:45","slug":"cve-2026-74609","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-74609","title":{"rendered":"CVE-2026-74609 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ntipc: read le-&gt;link u"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>tipc: read le-&gt;link under the node lock in tipc_node_link_down()<\/p>\n<p>tipc_node_link_down() caches the link pointer before taking n-&gt;lock:<\/p>\n<p>\tstruct tipc_link *l = le-&gt;link;\t\t\/* unlocked *\/<\/p>\n<p>\tif (!l)<br \/>\n\t\treturn;<br \/>\n\ttipc_node_write_lock(n);<br \/>\n\tif (!tipc_link_is_establishing(l)) {\t\/* deref l *\/<br \/>\n\t&#8230;<br \/>\n\t\ttipc_link_reset(l);\t\t\/* write into l *\/<br \/>\n\tif (delete) {<br \/>\n\t\tkfree(l);<br \/>\n\t\tle-&gt;link = NULL;<\/p>\n<p>The delete=true caller frees that very object under n-&gt;lock, so the lock<br \/>\ndoes not protect the cached pointer against it:<\/p>\n<p> &#8211; CPU A, delete=false: tipc_rcv() on TIPC_LINK_DOWN_EVT, or the link<br \/>\n   supervision timer via tipc_node_timeout(), reads l unlocked and then<br \/>\n   dereferences it under n-&gt;lock;<br \/>\n &#8211; CPU B, delete=true: netlink TIPC_NL_BEARER_DISABLE -&gt; bearer_disable()<br \/>\n   -&gt; tipc_node_delete_links() -&gt; tipc_node_link_down(n, bearer_id, true)<br \/>\n   -&gt; kfree(l).<\/p>\n<p>The link is freed with plain kfree(), not kfree_rcu(), and for UDP bearers<br \/>\ndisable_media() only schedules the asynchronous cleanup_bearer() work, so<br \/>\nits synchronize_net() runs after the links are already gone.  An in-flight<br \/>\nCPU A that has read l therefore dereferences freed memory once B frees it:<br \/>\na use-after-free read in tipc_link_is_establishing(), and a use-after-free<br \/>\nwrite via tipc_link_reset() on the establishing branch.<\/p>\n<p>The following trace was captured on 7.2.0-rc5-00284-gaf39eb111ce6:<\/p>\n<p>  BUG: KASAN: slab-use-after-free in tipc_link_is_establishing (net\/tipc\/link.c:285)<br \/>\n  Read of size 4 at addr ffff88802e2aa068 by task swapper\/2\/0<br \/>\n   tipc_link_is_establishing (net\/tipc\/link.c:285)<br \/>\n   tipc_node_link_down (net\/tipc\/node.c:1076)<br \/>\n   tipc_node_timeout (net\/tipc\/node.c:843)<br \/>\n  Allocated by task 9549:<br \/>\n   tipc_link_create (net\/tipc\/link.c:490)<br \/>\n   tipc_node_check_dest (net\/tipc\/node.c:1279)<br \/>\n   tipc_disc_rcv (net\/tipc\/discover.c:252)<br \/>\n   tipc_udp_recv (net\/tipc\/udp_media.c:389)<br \/>\n  Freed by task 9549:<br \/>\n   tipc_node_link_down (net\/tipc\/node.c:1084)<br \/>\n   tipc_node_delete_links (net\/tipc\/node.c:1320)<br \/>\n   bearer_disable (net\/tipc\/bearer.c:414)<br \/>\n   __tipc_nl_bearer_disable (net\/tipc\/bearer.c:992)<\/p>\n<p>Move the le-&gt;link read inside tipc_node_write_lock(), so it is serialised<br \/>\nagainst the kfree() in the delete path.  A racing teardown now either has<br \/>\nnot run yet, and we see a valid link, or has already run, and we see NULL.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>tipc: read le-&gt;link under the node lock in tipc_node_link_down()<\/p>\n<p>tipc_node_link_down() caches the link pointer before taking n-&gt;lo<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-11215","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/11215","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=11215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}