CVE-2026-74509

Bluetooth: hci_sync: Fix advertising data UAFs

State
Published
Severity
8.8 High
Published
Aug 15, 2026
Updated
Oct 16, 2026
Reserved
Aug 15, 2026

Read the record on cve.org

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.

Scores

CVSSScoreVectorSource
3.18.8 HighCVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • cba6b758711cab946c787f7c15be92cc749b8e1f to before 565971488191bf54a87a417abafab6ad0de72201Affected
  • cba6b758711cab946c787f7c15be92cc749b8e1f to before c4cec575a6d6f7c36808a3a0017b0675968bb06bAffected
  • cba6b758711cab946c787f7c15be92cc749b8e1f to before 95cdcd8c82a501931fd3ae9b3811b0b6da167e94Affected
  • cba6b758711cab946c787f7c15be92cc749b8e1f to before eb1d8318764de7216e6dbba29a24d69f7ce51348Affected
  • cba6b758711cab946c787f7c15be92cc749b8e1f to before b16ebdbebd2d37f4cdc590bc3e9db71fe90350a3Affected
  • cba6b758711cab946c787f7c15be92cc749b8e1f to before cdc36db204ffd97b947d64374cf23a210dc74777Affected
  • 42fe380baaaccbe635c34ca07b29d19b9ec2498dAffected
  • 5.15.210 to before 5.16Affected
LinuxLinux
  • 5.17Affected
  • before 5.17Not affected
  • 6.1.184 through 6.1.*Not affected
  • 6.6.154 through 6.6.*Not affected
  • 6.12.103 through 6.12.*Not affected
  • 6.18.44 through 6.18.*Not affected
  • 7.1.8 through 7.1.*Not affected
  • 7.2 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.