CVE-2026-74509: Bluetooth: hci_sync: Fix advertising data UAFs
Greg Kroah-Hartman <[email protected]>
| Newsgroups | org.kernel.vger.linux-cve-announce |
|---|---|
| Message-ID | <2026081542-CVE-2026-74509-eb82@gregkh> |
From: Greg Kroah-Hartman <[email protected]> Description =========== In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_sync: Fix advertising data UAFs hci_find_adv_instance() returns an adv_info pointer that is valid only while hdev->lock is held. The advertising command-sync paths perform instance lookups without that lock and, in some cases, retain the pointer while waiting for a controller response. An advertising termination event can therefore interleave as follows: hci_cmd_sync_work hci_rx_work hci_find_adv_instance() __hci_cmd_sync_status() wait for controller reply hci_dev_lock() hci_remove_adv_instance() kfree(adv) adv->scan_rsp_changed = false KASAN reported: BUG: KASAN: slab-use-after-free in hci_set_ext_scan_rsp_data_sync+0x2e1/0x300 Write of size 1 at addr ffff88810a45d21d by task kworker/u17:0/88 Workqueue: hci0 hci_cmd_sync_work Call Trace: hci_set_ext_scan_rsp_data_sync+0x2e1/0x300 hci_schedule_adv_instance_sync+0x390/0x4c0 hci_cmd_sync_work+0x173/0x300 Allocated by task 87: hci_add_adv_instance+0x538/0xac0 add_advertising+0x885/0x1160 Freed by task 89: kfree+0x131/0x3c0 hci_remove_adv_instance+0x1d8/0x3b0 hci_le_ext_adv_term_evt+0x17b/0x730 Protect the instance lookup and payload construction in the extended advertising, scan response, and periodic advertising data paths. Snapshot the advertising parameters under hdev->lock, but release the lock before waiting for the controller. Clear advertising-data dirty bits before issuing their commands and restore them after a failure using a fresh lookup. Likewise, update the reported transmit power through a fresh lookup after the parameter command completes. No adv_info pointer then survives an HCI command wait. The Linux kernel CVE team has assigned CVE-2026-74509 to this issue. Affected and fixed versions =========================== Issue introduced in 5.17 with commit cba6b758711cab946c787f7c15be92cc749b8e1f and fixed in 6.12.103 with commit 95cdcd8c82a501931fd3ae9b3811b0b6da167e94 Issue introduced in 5.17 with commit cba6b758711cab946c787f7c15be92cc749b8e1f and fixed in 6.18.44 with commit eb1d8318764de7216e6dbba29a24d69f7ce51348 Issue introduced in 5.17 with commit cba6b758711cab946c787f7c15be92cc749b8e1f and fixed in 7.1.8 with commit b16ebdbebd2d37f4cdc590bc3e9db71fe90350a3 Issue introduced in 5.17 with commit cba6b758711cab946c787f7c15be92cc749b8e1f and fixed in 7.2-rc6 with commit cdc36db204ffd97b947d64374cf23a210dc74777 Issue introduced in 5.15.210 with commit 42fe380baaaccbe635c34ca07b29d19b9ec2498d Please see https://www.kernel.org for a full list of currently supported kernel versions by the kernel community. Unaffected versions might change over time as fixes are backported to older supported kernel versions. The official CVE entry at https://cve.org/CVERecord/?id=CVE-2026-74509 will be updated if fixes are backported, please check that for the most up to date information about this issue. Affected files ============== The file(s) affected by this issue are: net/bluetooth/hci_sync.c Mitigation ========== The Linux kernel CVE team recommends that you update to the latest stable kernel version for this, and many other bugfixes. Individual changes are never tested alone, but rather are part of a larger kernel release. Cherry-picking individual commits is not recommended or supported by the Linux kernel community at all. If however, updating to the latest release is impossible, the individual changes to resolve this issue can be found at these commits: https://git.kernel.org/stable/c/95cdcd8c82a501931fd3ae9b3811b0b6da167e94 https://git.kernel.org/stable/c/eb1d8318764de7216e6dbba29a24d69f7ce51348 https://git.kernel.org/stable/c/b16ebdbebd2d37f4cdc590bc3e9db71fe90350a3 https://git.kernel.org/stable/c/cdc36db204ffd97b947d64374cf23a210dc74777