HIGH 8.8

CVE-2026-53358: Linux Kernel Bluetooth L2CAP Lock-Ordering Vulnerability (CVSS 8.8)

A lock-ordering vulnerability exists in the Linux kernel's Bluetooth L2CAP (Logical Link Control and Adaptation Protocol) implementation. When cleaning up listening channels, the kernel was acquiring locks in an unsafe sequence that could lead to deadlock or race conditions. The fix changes how channels are closed during cleanup—instead of closing them synchronously (which requires acquiring locks in the wrong order), the kernel now schedules them to be closed asynchronously through an existing timeout mechanism that acquires locks in the correct, established order. This prevents lock inversion and ensures channel cleanup happens safely without deadlock risk.

Source data · NVD / CISA · public domain

CVSS
3.1 · 8.8 HIGH · CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weaknesses (CWE)
CWE-667
Affected products
6 configuration(s)
Published / Modified
2026-07-02 / 2026-07-22

NVD description (verbatim)

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: L2CAP: use chan timer to close channels in cleanup_listen() l2cap_chan_close() removes the channel from conn->chan_l, which must be done under conn->lock. cleanup_listen() runs under the parent sk_lock, so acquiring conn->lock would invert the established conn->lock -> chan->lock -> sk_lock order. Instead of calling l2cap_chan_close() directly, schedule l2cap_chan_timeout with delay 0 to close the channel asynchronously. The timeout handler already acquires conn->lock and chan->lock in the correct order. The timer is only armed when chan->conn is still set: if it is already NULL, l2cap_conn_del() has already processed this channel (l2cap_chan_del + l2cap_sock_teardown_cb + l2cap_sock_close_cb), so there is nothing left to do. If l2cap_conn_del() races in after the timer is armed, __clear_chan_timer() inside l2cap_chan_del() cancels it; if the timer has already fired, the handler returns harmlessly because chan->conn was cleared.

8 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-53358 addresses a lock-ordering violation in the L2CAP subsystem's cleanup_listen() function. The vulnerability stems from l2cap_chan_close() requiring conn->lock to remove channels from conn->chan_l, but cleanup_listen() operates under the parent socket lock (sk_lock). Calling l2cap_chan_close() directly would violate the established lock hierarchy (conn->lock → chan->lock → sk_lock), creating potential for deadlock or use-after-free conditions. The resolution uses l2cap_chan_timeout() with zero delay to defer channel closure asynchronously; this handler already acquires locks in the correct order. The implementation is safe because the timer is only armed when chan->conn is valid, and race conditions with l2cap_conn_del() are handled via __clear_chan_timer() cancellation logic.

Business impact

This vulnerability affects system stability and reliability for any Linux deployment using Bluetooth connectivity. A lock inversion could cause kernel deadlocks, system hangs, or memory corruption in the Bluetooth subsystem, potentially leading to denial of service or data corruption. Organizations relying on Bluetooth functionality (headsets, peripherals, IoT devices, or embedded systems) could experience service interruptions or unexpected kernel panics. The HIGH severity rating reflects the broad attack surface (local network proximity required) and the potential for complete system compromise through kernel instability.

Affected systems

The Linux kernel is the sole affected component. All kernel versions with the vulnerable L2CAP cleanup_listen() code path are impacted. Verify against the Linux kernel security advisory for specific version ranges and affected distributions. Systems with Bluetooth enabled and accessible over local wireless networks are at risk; patching should be prioritized for devices that expose Bluetooth to untrusted networks or operate in shared wireless environments.

Exploitability

Exploitation requires adjacent network access (AV:A in CVSS) and no privileges or user interaction. An attacker in Bluetooth range could trigger the vulnerability by initiating or manipulating L2CAP channel connections to force channel cleanup under stress conditions, potentially causing kernel deadlock or instability. The attack is relatively straightforward once Bluetooth connectivity is within range, making it practical for local attackers. However, the vulnerability requires specific timing or channel state conditions to reliably trigger; it is not a trivial one-packet exploit but rather a race condition that may require sustained or repeated connection attempts.

Remediation

Apply the kernel patch that modifies cleanup_listen() to schedule l2cap_chan_timeout() instead of calling l2cap_chan_close() directly. This patch is available in the Linux kernel upstream and should be backported to all affected stable branches. Patch against your kernel version via your distribution's security update mechanism. Alternatively, disable Bluetooth if it is not required in your environment, or restrict Bluetooth access to trusted devices only via firmware or network controls.

Patch guidance

Obtain the patch from the Linux kernel security advisory for CVE-2026-53358 and apply it to your kernel version. Most major Linux distributions (Red Hat, Debian, Ubuntu, SUSE) will release kernel updates addressing this vulnerability; check your vendor's security advisories for timeline and availability. For rolling-release distributions, enable automatic updates or manually merge the upstream fix. Verify the patch applies cleanly and test Bluetooth functionality post-patching to confirm no regressions. Reboot is required for the fix to take effect.

Detection guidance

Look for kernel log messages indicating lock warnings, deadlocks, or BUG() assertions in the Bluetooth/L2CAP code path. Monitor for unexpected kernel panics or system hangs coinciding with Bluetooth activity or channel creation/cleanup. In pre-patch environments, use kernel debugging tools (lockdep, kprobes) to detect lock-ordering violations in the L2CAP subsystem. Post-patching, verify that the timeout-based cleanup path is being invoked for channel closure by examining kernel tracepoints or debug logs at debug log level.

Why prioritize this

HIGH CVSS (8.8) combined with local adjacency requirement makes this a medium-to-high priority for Bluetooth-enabled systems. Prioritize patching for any device that exposes Bluetooth to untrusted networks (employee devices, public-facing IoT, shared wireless environments) or operates in high-availability contexts where deadlocks cause service loss. Lower priority for isolated embedded systems or air-gapped Bluetooth deployments, but still recommend patching within normal maintenance windows. The lack of KEV tracking suggests active exploitation is not yet observed, but the ease of triggering via local Bluetooth access warrants prompt action.

Risk score, explained

The CVSS 3.1 score of 8.8 (HIGH) reflects: (1) Attack Vector Adjacent (AV:A)—requires Bluetooth proximity but no network traversal; (2) Attack Complexity Low (AC:L)—no special conditions required beyond proximity; (3) Privileges None (PR:N) and User Interaction None (UI:N)—any adjacent attacker can trigger; (4) Confidentiality, Integrity, and Availability all High (C:H/I:H/A:H)—kernel-level code execution or denial of service leads to complete system compromise. The severity is tempered only by the adjacency requirement; a remotely exploitable variant would score higher. CWE-667 (Improper Locking) is the root cause.

Frequently asked questions

Does this vulnerability require Bluetooth to be actively in use, or is merely having it enabled sufficient?

The vulnerability lies in the channel cleanup code path, which is triggered when L2CAP connections are being established, maintained, or torn down. Simply having Bluetooth enabled makes the system vulnerable if an attacker can initiate or manipulate connections in range. You do not need a legitimate device connected; an attacker's device can trigger the vulnerable code path.

Can this be exploited remotely over the internet, or only locally?

This vulnerability requires adjacent network access—the attacker must be in Bluetooth wireless range (typically 10–100 meters depending on device and environment). It cannot be exploited remotely over the internet or through Bluetooth mesh/relay networks spanning the internet.

What happens if the vulnerability is triggered—will it definitely cause a crash?

The vulnerability is a lock-ordering race condition that can cause kernel deadlock, hangs, or memory corruption. The outcome depends on timing and system state. It may cause an immediate kernel panic, a system hang that requires reboot, or subtler data corruption. The unpredictability makes it difficult to detect but also means exploitation timing is less deterministic.

Is there a workaround if I cannot patch immediately?

If Bluetooth is not essential, disable it in BIOS/firmware settings or via the kernel (echo 1 > /sys/module/bluetooth/parameters/disable_ertm or similar, depending on your kernel). Alternatively, use Bluetooth access controls or firewall-like mechanisms to restrict which devices can connect. However, these are workarounds; patching is the proper fix and should be prioritized.

This analysis is based on publicly available information as of the publication date. CVSS scores, patch version numbers, and affected product lists are derived from the CVE record and vendor advisories; verify specific version numbers and patch availability directly with your Linux distribution or kernel vendor before patching. This content is provided for informational purposes and does not constitute legal or compliance advice. Organizations should conduct their own risk assessment based on their environment, Bluetooth exposure, and asset criticality. No exploit code or proof-of-concept is provided or implied. Source: NVD (public-domain), retrieved 2026-08-11. Analysis generated by SEC.co (claude-haiku-4-5).