CVE-2026-53357
NoneCVSS
—
EPSS
0.3%
Published
Jul 2, 2026
CISA due date
—
Cloudanix analysis
A flaw in Linux Bluetooth handling can let local software crash or potentially compromise a device when Bluetooth is enabled.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Medium
What it actually does
This is a Linux kernel Bluetooth L2CAP use-after-free race involving listening socket cleanup and concurrent HCI disconnect handling. A child socket and its associated L2CAP channel can be freed by the disconnect path while the listening-socket close path still references them, resulting in kernel memory use after free. The most likely impact is local kernel crash or instability; because the bug occurs in kernel memory management, privilege escalation or arbitrary kernel code execution may be theoretically possible depending on allocator state, kernel hardening, and exploitability, but no public exploitation is currently indicated.
Why it matters to the business
Systems with Bluetooth enabled may be exposed to local denial-of-service risk and potential kernel compromise if an attacker can trigger the race condition. The CVE is not currently listed in CISA KEV, is not known to be used in ransomware campaigns, and has a low EPSS score, so widespread exploitation is not indicated; however, Linux kernel flaws should still be prioritized on laptops, workstations, kiosks, embedded Linux devices, and servers where Bluetooth is enabled or exposed to untrusted users.
How an attack unfolds
An attacker with local access, or code execution in an unprivileged context that can interact with Bluetooth sockets, attempts to create L2CAP listening sockets and repeatedly race socket accept/close behavior against Bluetooth HCI disconnect events. During the race, the kernel disconnect path may free a child socket and L2CAP channel while the listening socket cleanup path continues to operate on the same freed objects. Successful triggering can cause a kernel use-after-free, commonly resulting in a KASAN report, kernel oops, panic, or system instability. Turning this into reliable privilege escalation would require precise heap grooming and bypassing kernel mitigations such as KASLR, slab hardening, SMEP/SMAP, and other distribution-specific protections.
How to fix it
Apply a Linux kernel update that includes the upstream fix for the Bluetooth L2CAP lifetime/reference handling issue. If vendor fixed package versions are not yet available, track distribution kernel advisories and update to the first kernel build that backports the fix. Reboot after installing the fixed kernel to ensure the patched kernel is running. As interim mitigation, disable Bluetooth where it is not required, block loading of Bluetooth kernel modules where operationally acceptable, and restrict local users or workloads from accessing Bluetooth functionality. On high-risk systems, consider disabling Bluetooth in firmware/BIOS/UEFI or through operating system policy until patched.
How to confirm the fix worked
Confirm the running kernel version is the vendor-fixed build, not merely that the package has been installed. Validate after reboot using kernel version and package inventory checks. Confirm whether Bluetooth is enabled, whether Bluetooth modules are loaded, and whether L2CAP support is available. For mitigation validation, verify Bluetooth services are stopped, adapters are disabled, and modules such as bluetooth, btusb, and related HCI/L2CAP components are not loaded where they are not needed. For patched kernels, review vendor changelogs or kernel source/backport notes for the Bluetooth L2CAP accept queue reference/lifetime fix associated with l2cap_sock_cleanup_listen, l2cap_conn_del, and bt_accept_dequeue behavior.
Typical attack path
- Obtain local execution on a Linux system with Bluetooth support enabled and accessible.
- Create or manipulate Bluetooth L2CAP listening sockets.
- Trigger not-yet-accepted child socket handling through accept queue behavior.
- Race listening socket close or cleanup against an HCI disconnect event processed through kernel Bluetooth workqueue handling.
- Cause the disconnect path to free the child socket or L2CAP channel while cleanup code still references it.
- Achieve kernel crash, denial of service, or attempt further exploitation through controlled use-after-free memory reuse.
How to detect it
Review host telemetry and kernel logs for evidence of prior triggering. Useful sources include journald, syslog, dmesg, kernel oops/panic records, crash dumps, KASAN reports, audit logs for unusual local process activity around Bluetooth sockets, and endpoint telemetry showing repeated Bluetooth socket creation or abnormal crashes. Look for use-after-free reports involving l2cap_sock_kill, l2cap_sock_cleanup_listen, l2cap_conn_del, hci_rx_work, or L2CAP/HCI disconnect handling. On production kernels without KASAN, indicators may be limited to unexplained kernel oopses, panics, Bluetooth subsystem crashes, adapter resets, or recurring disconnect storms. Because no public exploit indicators or known threat actor exploitation are reported, detection should focus on behavioral artifacts and kernel fault signatures rather than malware-specific IOCs.
- BUG: KASAN: slab-use-after-free in l2cap_sock_kill
- slab-use-after-free in l2cap_sock_kill
- l2cap_sock_cleanup_listen
- l2cap_conn_del
- l2cap_chan_del
- l2cap_sock_close_cb
- l2cap_sock_kill
- hci_rx_work
- Bluetooth:
- L2CAP
- kernel BUG at net/bluetooth
- general protection fault
- kernel panic
- Oops:
- KASAN: use-after-free
- bt_accept_dequeue
- release_sock
What your security team should do
- Inventory Linux endpoints and embedded systems with Bluetooth enabled, prioritizing user-facing laptops, workstations, kiosks, and shared systems.
- Patch affected Linux kernels through the relevant distribution or device vendor and reboot promptly after installation.
- Disable Bluetooth on systems that do not require it, especially servers and production appliances.
- Monitor kernel logs for Bluetooth-related use-after-free, KASAN, oops, panic, or repeated HCI disconnect activity.
- Treat unexpected kernel crashes on Bluetooth-capable systems as potentially security-relevant until reviewed.
- For hardened environments, restrict unprivileged access to Bluetooth features and prevent unnecessary Bluetooth module loading.
- Track vendor advisories because fixed versions are distribution-specific and may arrive as backports rather than obvious upstream version changes.
The record
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: fix UAF in l2cap_sock_cleanup_listen() vs l2cap_conn_del() bt_accept_dequeue() unlinks a not-yet-accepted child from the parent accept queue and release_sock()s it before returning, so the returned sk has no caller reference and is unlocked. l2cap_sock_cleanup_listen() walks these children on listening-socket close. A concurrent HCI disconnect drives hci_rx_work -> l2cap_conn_del() which runs l2cap_chan_del() + l2cap_sock_kill() and frees the child sk and its l2cap_chan; cleanup_listen() then uses both: BUG: KASAN: slab-use-after-free in l2cap_sock_kill l2cap_sock_kill / l2cap_sock_cleanup_listen / __x64_sys_close Freed by: l2cap_conn_del -> l2cap_sock_close_cb -> l2cap_sock_kill This is distinct from the two fixes already in this area: commit e83f5e24da741 ("Bluetooth: serialize accept_q access") serialises the accept_q list/poll and takes temporary refs inside bt_accept_dequeue(), and CVE-2025-39860 serialises the userspace close()/accept() race by calling cleanup_listen() under lock_sock() in l2cap_sock_release(). Neither covers l2cap_conn_del() running from hci_rx_work, so this UAF still reproduces on current bluetooth/master. Take the reference at the source: bt_accept_dequeue() does sock_hold() while sk is still locked, before release_sock(); callers sock_put(). cleanup_listen() pins the chan with l2cap_chan_hold_unless_zero() under a brief child sk lock (serialising vs l2cap_sock_teardown_cb()), drops it before l2cap_chan_lock(), and skips a duplicate l2cap_sock_kill() on SOCK_DEAD. conn->lock is not taken here: cleanup_listen() runs under the parent sk lock and that would invert conn->lock -> chan->lock -> sk_lock (lockdep). KASAN/SMP: an unprivileged listen/close vs HCI-disconnect race produced 12 use-after-free reports per run before this change; 0, and no lockdep report, over 1600+ raced iterations after it on bluetooth/master.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|