CVE-2026-23461 Overview
A use-after-free vulnerability has been identified in the Linux kernel's Bluetooth L2CAP (Logical Link Control and Adaptation Protocol) subsystem. The flaw exists in the l2cap_unregister_user function where improper locking mechanisms create a race condition that can lead to memory corruption and potential system instability.
After commit ab4eedb790ca ("Bluetooth: L2CAP: Fix corrupted list in hci_chan_del"), the l2cap_conn_del() function was updated to use conn->lock to protect access to conn->users. However, the l2cap_register_user() and l2cap_unregister_user() functions were not updated to use the same lock, instead continuing to use hci_dev_lock(). This inconsistent locking creates a race condition where these functions can access conn->users and conn->hchan concurrently with l2cap_conn_del().
Critical Impact
This vulnerability can lead to use-after-free conditions and list corruption in the Linux kernel's Bluetooth stack, potentially causing system crashes or enabling privilege escalation attacks on systems with Bluetooth functionality enabled.
Affected Products
- Linux kernel with Bluetooth L2CAP support enabled
- Systems running vulnerable kernel versions with active Bluetooth functionality
- Devices utilizing L2CAP protocol for Bluetooth communications
Discovery Timeline
- 2026-04-03 - CVE CVE-2026-23461 published to NVD
- 2026-04-07 - Last updated in NVD database
Technical Details for CVE-2026-23461
Vulnerability Analysis
This use-after-free vulnerability stems from a locking inconsistency introduced when fixing a previous Bluetooth L2CAP bug. The original fix in commit ab4eedb790ca modified l2cap_conn_del() to use conn->lock for protecting the conn->users list. However, the complementary functions l2cap_register_user() and l2cap_unregister_user() continued using hci_dev_lock(), creating a synchronization gap.
When multiple threads access the L2CAP connection structure simultaneously—one thread calling l2cap_conn_del() while another invokes l2cap_unregister_user()—the inconsistent locking allows both to manipulate conn->users and conn->hchan without proper mutual exclusion. This race condition was identified and reported by syzbot, a kernel fuzzing system.
The vulnerability can manifest as list corruption when concurrent operations modify the user list, or as use-after-free when l2cap_conn_del() frees the connection structure while another function is still accessing it.
Root Cause
The root cause is inconsistent lock usage across related kernel functions. After the previous fix introduced conn->lock for protecting conn->users in l2cap_conn_del(), the l2cap_register_user() and l2cap_unregister_user() functions were not updated to use the same lock primitive. This created a Time-of-Check Time-of-Use (TOCTOU) style race condition where:
- l2cap_conn_del() acquires conn->lock and begins teardown
- Concurrently, l2cap_unregister_user() acquires hci_dev_lock() (different lock)
- Both functions access shared data structures without mutual exclusion
- Memory corruption or use-after-free occurs
Attack Vector
Exploitation requires local access to the system with the ability to trigger Bluetooth L2CAP operations. An attacker would need to:
- Establish an L2CAP connection to the target system
- Trigger rapid registration and unregistration of L2CAP users while simultaneously causing connection deletions
- Win the race condition to cause use-after-free or list corruption
- Potentially leverage the memory corruption for privilege escalation
The vulnerability was discovered through fuzzing, indicating that triggering the race condition requires precise timing but is achievable through automated approaches. Systems with active Bluetooth connectivity and multiple concurrent L2CAP operations are at higher risk.
Detection Methods for CVE-2026-23461
Indicators of Compromise
- Kernel panic messages referencing l2cap_unregister_user or l2cap_conn_del functions
- List corruption warnings in kernel logs related to Bluetooth subsystem
- Unexpected Bluetooth service crashes or connectivity issues
- Memory corruption indicators such as KASAN (Kernel Address Sanitizer) reports involving L2CAP structures
Detection Strategies
- Enable KASAN in development and testing environments to detect use-after-free accesses
- Monitor dmesg output for Bluetooth stack crashes, warnings, or list corruption messages
- Deploy kernel live patching solutions to detect and prevent exploitation attempts
- Use system auditing to track Bluetooth connection events and identify anomalous patterns
Monitoring Recommendations
- Configure kernel crash dump collection to capture evidence of exploitation attempts
- Implement Bluetooth service monitoring to detect unusual connection patterns or rapid connect/disconnect cycles
- Deploy SentinelOne Singularity Platform for real-time kernel exploit detection and behavioral analysis
- Enable kernel tracing for l2cap_* functions in high-security environments
How to Mitigate CVE-2026-23461
Immediate Actions Required
- Apply the kernel patches from the official git repositories immediately
- If patching is not immediately possible, consider disabling Bluetooth functionality on critical systems
- Review systems for signs of compromise using the detection methods outlined above
- Prioritize patching systems with active Bluetooth connectivity in untrusted environments
Patch Information
The Linux kernel maintainers have released patches that fix the locking inconsistency by changing l2cap_register_user() and l2cap_unregister_user() to use conn->lock instead of hci_dev_lock(). This ensures consistent locking for the l2cap_conn structure across all related functions.
Official patches are available through multiple kernel git commits:
- Kernel Git Commit 11a87dd
- Kernel Git Commit 71030f3
- Kernel Git Commit 752a6c9
- Kernel Git Commit c22a5e6
- Kernel Git Commit da3000c
Workarounds
- Disable Bluetooth at the kernel level using CONFIG_BT=n if Bluetooth functionality is not required
- Use rfkill to block Bluetooth adapters on systems where the kernel cannot be immediately updated
- Implement network segmentation to limit Bluetooth exposure on critical infrastructure
- Deploy kernel runtime protection solutions that can detect and block use-after-free exploitation attempts
# Disable Bluetooth using rfkill as a temporary workaround
rfkill block bluetooth
# Verify Bluetooth is blocked
rfkill list bluetooth
# To blacklist the Bluetooth module (requires reboot)
echo "blacklist bluetooth" >> /etc/modprobe.d/bluetooth-blacklist.conf
echo "blacklist btusb" >> /etc/modprobe.d/bluetooth-blacklist.conf
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


