{"id":12699,"date":"2026-09-04T18:59:35","date_gmt":"2026-09-04T10:59:35","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-53357"},"modified":"2026-09-04T18:59:35","modified_gmt":"2026-09-04T10:59:35","slug":"cve-2026-53357","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-53357","title":{"rendered":"CVE-2026-53357 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: fix UAF in"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>Bluetooth: fix UAF in l2cap_sock_cleanup_listen() vs l2cap_conn_del()<\/p>\n<p>bt_accept_dequeue() unlinks a not-yet-accepted child from the parent<br \/>\naccept queue and release_sock()s it before returning, so the returned<br \/>\nsk has no caller reference and is unlocked.<\/p>\n<p>l2cap_sock_cleanup_listen() walks these children on listening-socket<br \/>\nclose.  A concurrent HCI disconnect drives hci_rx_work -&gt;<br \/>\nl2cap_conn_del() which runs l2cap_chan_del() + l2cap_sock_kill() and<br \/>\nfrees the child sk and its l2cap_chan; cleanup_listen() then uses both:<\/p>\n<p>  BUG: KASAN: slab-use-after-free in l2cap_sock_kill<br \/>\n    l2cap_sock_kill \/ l2cap_sock_cleanup_listen \/ __x64_sys_close<br \/>\n  Freed by: l2cap_conn_del -&gt; l2cap_sock_close_cb -&gt; l2cap_sock_kill<\/p>\n<p>This is distinct from the two fixes already in this area: commit<br \/>\ne83f5e24da741 (&#8220;Bluetooth: serialize accept_q access&#8221;) serialises the<br \/>\naccept_q list\/poll and takes temporary refs inside bt_accept_dequeue(),<br \/>\nand CVE-2025-39860 serialises the userspace close()\/accept() race by<br \/>\ncalling cleanup_listen() under lock_sock() in l2cap_sock_release().<br \/>\nNeither covers l2cap_conn_del() running from hci_rx_work, so this UAF<br \/>\nstill reproduces on current bluetooth\/master.<\/p>\n<p>Take the reference at the source: bt_accept_dequeue() does sock_hold()<br \/>\nwhile sk is still locked, before release_sock(); callers sock_put().<br \/>\ncleanup_listen() pins the chan with l2cap_chan_hold_unless_zero() under<br \/>\na brief child sk lock (serialising vs l2cap_sock_teardown_cb()), drops<br \/>\nit before l2cap_chan_lock(), and skips a duplicate l2cap_sock_kill() on<br \/>\nSOCK_DEAD.  conn-&gt;lock is not taken here: cleanup_listen() runs under<br \/>\nthe parent sk lock and that would invert<br \/>\nconn-&gt;lock -&gt; chan-&gt;lock -&gt; sk_lock (lockdep).<\/p>\n<p>KASAN\/SMP: an unprivileged listen\/close vs HCI-disconnect race produced<br \/>\n12 use-after-free reports per run before this change; 0, and no lockdep<br \/>\nreport, over 1600+ raced iterations after it on bluetooth\/master.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>Bluetooth: fix UAF in l2cap_sock_cleanup_listen() vs l2cap_conn_del()<\/p>\n<p>bt_accept_dequeue() unlinks a not-yet-accepted child from th<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-12699","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/12699","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=12699"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12699"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}