{"id":4510,"date":"2026-09-04T18:46:33","date_gmt":"2026-09-04T10:46:33","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-11368"},"modified":"2026-09-04T18:46:33","modified_gmt":"2026-09-04T10:46:33","slug":"cve-2026-11368","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-11368","title":{"rendered":"CVE-2026-11368 [HIGH] &#8211; The Bluetooth host ATT layer (subsys\/bluetooth\/host\/att.c) associates each in-flight ATT T"},"content":{"rendered":"<p>The Bluetooth host ATT layer (subsys\/bluetooth\/host\/att.c) associates each in-flight ATT TX buffer with its owning channel via the static tx_meta_data_storage[] array (data-&gt;att_chan = chan). When a buffer&#8217;s last reference is dropped, its net-buf destroy callback defers the completion handling to the system workqueue (att_tx_destroy -&gt; att_tx_destroy_work_handler -&gt; att_on_sent_cb -&gt; bt_att_sent), where bt_att_sent dereferences the channel and its ATT context (sys_slist_get(&amp;att-&gt;reqs)).<\/p>\n<p>When a peer disconnects while an ATT PDU (a server notification\/indication or any response) is still in flight in the controller TX path, L2CAP tears the channel down in l2cap_chan_del(): it runs the disconnected callback and then the released callback (bt_att_released), which frees the channel slab slot. Because the in-flight buffer is held by the connection TX path rather than the channel&#8217;s own queue, its deferred destroy work can run after the channel has been freed. The att_on_sent_cb guard intended to drop the stale callback itself dereferences meta-&gt;att_chan, which is now a dangling pointer into a freed (and possibly reused) slab slot.<\/p>\n<p>A remote peer with an ATT connection can drive this by disconnecting during routine ATT traffic; no pairing or user interaction is required to reach the ATT bearer. The result is a use-after-free read\/write of freed channel memory, reliably crashing the Bluetooth host (denial of service) and, because the channel slab slot may be reused, potentially corrupting live memory.<\/p>\n<p>The fix makes bt_att_released() NULL the att_chan field of every tx_meta_data_storage[] entry still referencing the channel before freeing it, so the deferred guard observes a NULL pointer and drops the callback. Teardown and the destroy work both run on the cooperative system workqueue, so the array update is serialized and needs no lock.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Bluetooth host ATT layer (subsys\/bluetooth\/host\/att.c) associates each in-flight ATT TX buffer with its owning channel via the static tx_meta_data_storage[] array (data-&gt;att_chan = chan). When a b<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-4510","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/4510","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=4510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4510"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}