Race condition in Linux kernel Bluetooth L2CAP channel handling
Key facts
- Attack vector
- Local
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Impact type
- —
- Confidentiality · integrity · availability
- High · High · High
- Fix status
- Partial Red Hat: 1 without a fix
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and Red Hat.
Summary
The Linux kernel Bluetooth L2CAP code is affected in several version ranges, including from 5.10.265 before 5.10.273 and from 7.1.4 before 7.2. A race condition between connect() and bind() can link an L2CAP channel to a connection a second time, which breaks an invariant that channel cleanup relies on. A local user with low privileges can cause high impact to confidentiality, integrity and availability.
Written with Claude Haiku 5.5 from the sources below · 2026-11-03
Description from the CNA
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: L2CAP: refuse __l2cap_chan_add if chan already has conn l2cap_chan may be linked to l2cap_conn at most once. This is assumed in several places, eg l2cap_chan_del cleanup. There is a TOCTOU race where the invariant is violated: [Task 1] [Task 2] l2cap_chan_connect l2cap_sock_bind l2cap_chan_lock lock_sock l2cap_state_change if (sk->sk_state != BT_OPEN) chan->state = BT_CONNECT l2cap_sock_state_change_cb chan->state = BT_BOUND sk->sk_state = BT_BOUND lock_sock <------------------ release_sock sk->sk_state = BT_CONNECT l2cap_sock_connect() does not check sk->sk_state, so since chan->state is now BT_BOUND, subsequent connect() ends up with second __l2cap_chan_add. Explicitly document and check the invariant in __l2cap_chan_add with WARN_ON_ONCE. The only callsite where it could be hit is l2cap_chan_connect, so add pre-check there to avoid relying on chan->state. chan->state read/write is not properly guarded currently so there can be other TOCTOUC problems. Add l2cap_lock_chan in l2cap_sock_bind() to guard chan->state write.
Why it matters now
SSVC decision points
Not available: CISA has not published SSVC decision points for this record.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| Linux | Linux | 5.10.265 to before 5.10.273; 5.15.216 to before 5.15.224; 6.1.183 to before 6.1.191; 6.6.145 to before 6.6.161; 6.12.97 to before 6.12.115; 6.18.39 to before 6.18.60; 7.1.4 to before 7.2 | 5.10.273, 5.15.224, 6.1.191, 6.6.161, 6.12.115, 6.18.60, 7.2 | Patch available | CNA |
| Linux | Linux | 7.2 and later | 5.10.273, 5.15.224, 6.1.191, 6.6.161, 6.12.115, 6.18.60, 7.2.14, 7.3.1, 7.4-rc1 | Patch available | CNA |
- Linux VendorLinux Affected 5.10.265 to before 5.10.273; 5.15.216 to before 5.15.224; 6.1.183 to before 6.1.191; 6.6.145 to before 6.6.161; 6.12.97 to before 6.12.115; 6.18.39 to before 6.18.60; 7.1.4 to before 7.2 Fixed in 5.10.273, 5.15.224, 6.1.191, 6.6.161, 6.12.115, 6.18.60, 7.2 Patch available CNA
- Linux VendorLinux Affected 7.2 and later Fixed in 5.10.273, 5.15.224, 6.1.191, 6.6.161, 6.12.115, 6.18.60, 7.2.14, 7.3.1, 7.4-rc1 Patch available CNA
Remediation
The Linux kernel is fixed in 5.10.273, 5.15.224, 6.1.191, 6.6.161, 6.12.115, 6.18.60, 7.2, 7.2.14, 7.3.1 and 7.4-rc1. Red Hat rates the issue Important and lists Red Hat Enterprise Linux 10 as affected, with no fix planned. The sources list no fixed version for Red Hat Enterprise Linux 10.
Written with Claude Haiku 5.5 from the sources below · 2026-11-03
- Fix · CNA Linux (Linux) Fixed in 5.10.273, 5.15.224, 6.1.191, 6.6.161, 6.12.115, 6.18.60, 7.2
- Fix · CNA Linux (Linux) Fixed in 5.10.273, 5.15.224, 6.1.191, 6.6.161, 6.12.115, 6.18.60, 7.2.14, 7.3.1, 7.4-rc1
Vendor assessments
Red Hat
Red Hat rating: Important. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Red Hat Enterprise Linux 10 | Affected | No fix yet |
Not affected: 6 products
- Red Hat Enterprise Linux 6
- Red Hat Enterprise Linux 7
- Red Hat Enterprise Linux 8
- Red Hat Enterprise Linux 9
- Red Hat OpenShift Container Platform 4
- Red Hat OpenShift Container Platform 5
Timeline
- 2026-11-02 Threatist record created from CVE-2026-99239
- 2026-11-02 Alias added: GHSA-367g-m7cr-7mf6
- 2026-11-03 Affected versions changed · Red Hat
- 2026-11-03 CVSS score added · Red Hat
- 2026-11-03 Fix available: Linux/[email protected], Linux/Linux@86b55991d3cd690e73c5ef8d20b75ae4905b357a · CNA
- 2026-11-03 1 new reference · CNA
- 2026-11-04 Priority changed: MEDIUM → LOW
References
Other 9
- https://git.kernel.org/stable/c/85cc289eb08afa975375f838187369e68b429ee0
- https://git.kernel.org/stable/c/820579652b24ce277e0097cd65b42bd9b7b8bf07
- https://git.kernel.org/stable/c/e618d928ec7f88cbeadfa3542adcac40f474e629
- https://git.kernel.org/stable/c/fabaff1c59ff2cc89cb7e5bd0186a5e15f0c73b2
- https://git.kernel.org/stable/c/52fe88e4ef87311eee32b45c65603e7c69e75e7d
- https://git.kernel.org/stable/c/10c705dd706aa93164ba41f2566f15206d6c178e
- https://git.kernel.org/stable/c/73820561d8cbfd3364a29b8fa77f1707f26029da
- https://git.kernel.org/stable/c/d3afd7803f9bc2a8c4270199497b60158b2fc647
- https://git.kernel.org/stable/c/86b55991d3cd690e73c5ef8d20b75ae4905b357a
More Linux vulnerabilities
- TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
- TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
- TI-2021-02452 Incorrect authorization in Ubuntu linux kernel KEVCVSS 3.1HIGH 8.8
- TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
- TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
- TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
Sources
- CVE-2026-99239 · CVE Program
- CVE-2026-99239 · NVD
- FIRST EPSS
- GHSA-367g-m7cr-7mf6 · GitHub Advisory Database · CC BY 4.0
- CVE-2026-99239 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences