CVE-2026-90254
NoneCVSS
—
EPSS
0.2%
Published
Sep 17, 2026
CISA due date
—
Cloudanix analysis
A small programming mistake in the Linux Bluetooth code can slowly use up memory on devices that use wireless connections, eventually making the system slow or unstable if left unfixed.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Memory leak of kmalloc-allocated advertising instance in Bluetooth HCI sync paths: adv_timeout_expire passes buffer without destroy callback, hci_cmd_sync_queue fails to take ownership on -ENETDOWN/-ENODEV/-ENOMEM, and _hci_cmd_sync_cancel_entry plus hci_cmd_sync_clear do not release entry->data on cancel or controller unregister.
Why it matters to the business
Gradual kernel memory exhaustion on Bluetooth-enabled Linux systems can lead to performance degradation, instability, or denial of service after repeated advertising timeout or controller events; low EPSS and no KEV listing indicate limited immediate exploitation urgency but patch promptly on affected kernels.
How an attack unfolds
An attacker triggers repeated Bluetooth advertising timeout expirations or controller unregistration sequences that exercise the failure and cancel paths in hci_cmd_sync_queue, causing the allocated instance to be lost without free; over many iterations this depletes memory without direct code execution.
How to fix it
Update to a kernel containing the referenced fix that supplies a destroy callback for the advertising instance and frees the buffer on queue failure; rebuild and deploy the patched kernel image across all affected systems.
How to confirm the fix worked
Inspect kernel source for presence of destroy callback in hci_cmd_sync_queue call from adv_timeout_expire and explicit kfree on queue failure; run kmemleak or slabinfo before/after advertising timeout cycles to confirm no residual allocations.
Typical attack path
- Establish or manipulate Bluetooth advertising sessions to invoke adv_timeout_expire
- Force error returns from hci_cmd_sync_queue or trigger hci_cmd_sync_clear via controller removal
- Repeat to accumulate leaked allocations until memory pressure manifests
How to detect it
Monitor kernel logs for Bluetooth HCI errors coinciding with controller registration changes; use kmemleak reports or slabtop to observe growing allocations in the Bluetooth module; review dmesg for hci_cmd_sync related failures during device unplug or error conditions.
What your security team should do
- Prioritize kernel update on any system exposing Bluetooth HCI
- Enable CONFIG_DEBUG_KMEMLEAK and monitor for Bluetooth-related leaks
- Restrict unprivileged Bluetooth advertising where possible until patched
The record
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_sync: free the advertising instance on the failure and cancel paths adv_timeout_expire() hands a kmalloc()ed instance byte to hci_cmd_sync_queue() with a NULL destroy callback, and only adv_timeout_expire_sync() frees it. That leaks on two paths: - the return value is not checked, and hci_cmd_sync_queue() does not take ownership when it fails (-ENETDOWN, -ENODEV, -ENOMEM); - a cancelled entry is not released, as _hci_cmd_sync_cancel_entry() does not free entry->data when there is no destroy callback. hci_cmd_sync_clear() cancels every pending entry when the controller is unregistered. Free the buffer from a destroy callback, and in the caller when the entry could not be queued at all.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|