{"id":41208,"date":"2026-10-19T00:32:37","date_gmt":"2026-10-18T16:32:37","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98736"},"modified":"2026-10-19T00:32:37","modified_gmt":"2026-10-18T16:32:37","slug":"cve-2026-98736","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98736","title":{"rendered":"CVE-2026-98736 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: hci_conn:"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>Bluetooth: hci_conn: Lock parent access during enhanced SCO setup<\/p>\n<p>Bluetooth: hci_conn: Lock parent access during enhanced SCO setup<\/p>\n<p>hci_enhanced_setup_sync() runs on the request workqueue without the<br \/>\nhci_dev_lock held by its caller when setup was queued. Its CVSD<br \/>\ncapability check and find_next_esco_param() dereference conn-&gt;parent<br \/>\nwhile the receive workqueue can unlink and release that parent.<\/p>\n<p>The following interleaving can cause a use-after-free:<\/p>\n<p>  hci_enhanced_setup_sync()       hci_disconn_complete_evt()<br \/>\n  load conn-&gt;parent<br \/>\n                                 hci_dev_lock()<br \/>\n                                 hci_conn_del(ACL parent)<br \/>\n                                   unlink SCO child<br \/>\n                                   drop link&#8217;s parent reference<br \/>\n                                   clear child-&gt;parent<br \/>\n                                   release ACL parent<br \/>\n                                     bt_link_release()<br \/>\n                                       kfree(parent)<br \/>\n                                 hci_dev_unlock()<br \/>\n  read parent-&gt;features[0][3]<\/p>\n<p>The reference held for the queued SCO child does not keep its ACL parent<br \/>\nalive after unlinking. Commit 42de40abe25d (&#8220;Bluetooth: hci_conn: fix the<br \/>\nSCO setup context lifetime&#8221;) protects the child stored in the queued<br \/>\ncontext, but leaves these parent accesses unprotected.<\/p>\n<p>With a 40 ms diagnostic delay after loading conn-&gt;parent, an instrumented<br \/>\nkernel based on fd179f8a05be, which already contains 42de40abe25d,<\/p>\n<p>  BUG: KASAN: slab-use-after-free in hci_enhanced_setup_sync+0xda5\/0xdf0<br \/>\n  Read of size 1 at addr ffff888102204047 by task kworker\/u17:0\/93<br \/>\n  Call Trace:<br \/>\n   hci_enhanced_setup_sync+0xda5\/0xdf0<br \/>\n   hci_cmd_sync_work+0x13c\/0x290<br \/>\n   process_one_work+0x6b4\/0x10e0<\/p>\n<p>  Allocated by task 92:<br \/>\n   __hci_conn_add+0x304\/0x1df0<br \/>\n   hci_connect_acl+0x349\/0x3e0<br \/>\n   hci_connect_sco+0x3b\/0x9a0<br \/>\n   sco_sock_connect+0x475\/0xca0<\/p>\n<p>  Freed by task 94:<br \/>\n   kfree+0x121\/0x3c0<br \/>\n   bt_link_release+0x79\/0xa0<br \/>\n   device_release+0xc8\/0x240<br \/>\n   kobject_put+0x14d\/0x280<br \/>\n   hci_conn_del+0x524\/0xe30<br \/>\n   hci_disconn_complete_evt+0x403\/0x8c0<br \/>\n   hci_event_packet+0x71b\/0xb20<br \/>\n   hci_rx_work+0x293\/0x730<\/p>\n<p>The accessed address is 71 bytes into the freed ACL parent, at its<br \/>\nfeatures[0][3] byte; the queued SCO child is a different object. The<br \/>\ndiagnostic preserves the loaded parent across the delay, matching the<br \/>\nunmodified compiled capability check, and does not change the parent<br \/>\nreferences or teardown path.<\/p>\n<p>Hold hci_dev_lock() across the codec switch, including every call to<br \/>\nfind_next_esco_param(), and release it on all selection errors. Keep<br \/>\nconfigure_datapath_sync() outside the critical section because it waits<br \/>\nfor HCI events. Preserve parameter selection and existing return values.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>Bluetooth: hci_conn: Lock parent access during enhanced SCO setup<\/p>\n<p>Bluetooth: hci_conn: Lock parent access during enhanced SCO setu<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41208","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41208","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=41208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}