CVE-2026-99014
High · 7.8CVSS
7.8
EPSS
0.2%
Published
Oct 23, 2026
CISA due date
—
Cloudanix analysis
A bug in how Linux handles Bluetooth commands could let someone who already has access to the computer crash it or take over more control.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Full Compromise
- Component
- OS kernel
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Use-after-free in hci_sent_cmd_data() during PA sync scan setup caused by concurrent hci_cmd_work freeing sent_cmd or req_skb while the scan worker dereferences the borrowed pointer without holding a reference or serializing access via hdev->lock.
Why it matters to the business
Local attackers on Linux systems with Bluetooth can trigger kernel crashes or achieve privilege escalation, risking system stability and data confidentiality on affected devices; the bug is only two days old with negligible exploit probability so far.
How an attack unfolds
An attacker with local access triggers passive scan setup through the Bluetooth stack while the command workqueue simultaneously replaces or frees the command skb; the scan worker then reads the freed payload via hci_sent_cmd_data, leading to KASAN-detected slab-use-after-free.
How to fix it
Apply the upstream fix that serializes address snapshotting under hdev->lock and copies the address before releasing the lock; rebuild and deploy the patched kernel on all affected systems.
How to confirm the fix worked
Confirm the presence of the locking changes around hci_sent_cmd_data calls in hci_sync.c and verify that KASAN no longer reports slab-use-after-free during hci_cmd_sync_work under concurrent scan setup.
Typical attack path
- Obtain local user access on a Linux system with Bluetooth enabled
- Trigger hci_le_pa_create_sync or related passive scan operations
- Race the scan worker against hci_cmd_work to free sent_cmd or req_skb
- Cause hci_sent_cmd_data to dereference the now-freed skb payload
- Leverage the resulting memory corruption for crash or escalation
How to detect it
Review kernel logs for KASAN slab-use-after-free reports mentioning hci_sent_cmd_data, hci_le_set_scan_param_sync, or hci_cmd_sync_work; correlate with Bluetooth scan activity on the req_workqueue.
What your security team should do
- Prioritize kernel updates containing the hci_sync fix on all Bluetooth-enabled Linux hosts
- Monitor upstream stable branches and distribution security lists for the patch release
- Temporarily disable Bluetooth if the exposure cannot be remediated quickly on high-risk systems
The record
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_sync: Fix command skb lifetime during scan setup During PA sync scan setup, hci_le_set_ext_scan_param_sync() gets the address used for the PA_LINK lookup from hci_sent_cmd_data(). The returned pointer borrows storage from sent_cmd or req_skb, without holding a reference to either skb. The scan worker runs on req_workqueue while hci_cmd_work() runs on the separate device workqueue. After the scan worker loads sent_cmd, the command worker can free and replace it before hci_sent_cmd_data() dereferences the skb. The command payload can also be freed between returning from the helper and comparing the address. The connection lookup's RCU critical section does not protect the command skb. KASAN reported: BUG: KASAN: slab-use-after-free in hci_sent_cmd_data+0x27c/0x2f0 Workqueue: hci0 hci_cmd_sync_work Call Trace: hci_sent_cmd_data+0x27c/0x2f0 hci_le_set_scan_param_sync+0x43a/0x850 hci_passive_scan_sync+0xb09/0x1460 hci_update_passive_scan_sync+0x47c/0x6e0 hci_le_pa_create_sync+0x200/0xa70 hci_cmd_sync_work+0x13c/0x290 Allocated by task 95: skb_clone+0x13f/0x340 hci_cmd_work+0x2a9/0x7e0 Freed by task 95: kmem_cache_free+0xba/0x3a0 hci_cmd_work+0x29c/0x7e0 Use hdev->lock to serialize the address snapshot with sent_cmd replacement. Protect req_skb replacement and completion cleanup with the same lock because the helper falls back to that skb. Copy the address before releasing the lock and use the copy for the existing RCU-protected connection lookup. Release the mutex before sending or waiting for commands, preserving the lookup and completion ordering.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|