CVE-2026-43023: Bluetooth: SCO: fix race conditions in sco_sock_connect()
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: SCO: fix race conditions in sco_sock_connect()
sco_sock_connect() checks sk_state and sk_type without holding
the socket lock. Two concurrent connect() syscalls on the same
socket can both pass the check and enter sco_connect(), leading
to use-after-free.
The buggy scenario involves three participants and was confirmed
with additional logging instrumentation:
Thread A (connect): HCI disconnect: Thread B (connect):
sco_sock_connect(sk) sco_sock_connect(sk)
sk_state==BT_OPEN sk_state==BT_OPEN
(pass, no lock) (pass, no lock)
sco_connect(sk): sco_connect(sk):
hci_dev_lock hci_dev_lock
hci_connect_sco <- blocked
-> hcon1
sco_conn_add->conn1
lock_sock(sk)
sco_chan_add:
conn1->sk = sk
sk->conn = conn1
sk_state=BT_CONNECT
release_sock
hci_dev_unlock
hci_dev_lock
sco_conn_del:
lock_sock(sk)
sco_chan_del:
sk->conn=NULL
conn1->sk=NULL
sk_state=
BT_CLOSED
SOCK_ZAPPED
release_sock
hci_dev_unlock
(unblocked)
hci_connect_sco
-> hcon2
sco_conn_add
-> conn2
lock_sock(sk)
sco_chan_add:
sk->conn=conn2
sk_state=
BT_CONNECT
// zombie sk!
release_sock
hci_dev_unlock
Thread B revives a BT_CLOSED + SOCK_ZAPPED socket back to
BT_CONNECT. Subsequent cleanup triggers double sock_put() and
use-after-free. Meanwhile conn1 is leaked as it was orphaned
when sco_conn_del() cleared the association.
Fix this by:
- Moving lock_sock() before the sk_state/sk_type checks in
sco_sock_connect() to serialize concurrent connect attempts
- Fixing the sk_type != SOCK_SEQPACKET check to actually
return the error instead of just assigning it
- Adding a state re-check in sco_connect() after lock_sock()
to catch state changes during the window between the locks
- Adding sco_pi(sk)->conn check in sco_chan_add() to prevent
double-attach of a socket to multiple connections
- Adding hci_conn_drop() on sco_chan_add failure to prevent
HCI connection leaks
Security readout for executives and security teams
Plain-English summary
A race in the Linux Bluetooth SCO socket code can corrupt kernel memory when concurrent local connection attempts overlap with a disconnect. A low-privileged local process may trigger use-after-free, potentially compromising confidentiality, integrity, or availability. The supplied record rates it CVSS 7.8 (High).
Executive priority
Prioritize patching shared Linux systems, endpoints running untrusted applications, and Bluetooth-enabled devices. The issue has high potential impact but requires local access; therefore, internet-facing status alone does not increase exposure. Use vendor package guidance before declaring systems vulnerable or remediated.
Technical view
sco_sock_connect() checked socket state and type without holding the socket lock. Concurrent connect() calls plus HCI disconnection could revive a closed socket, double-release references, leak a connection, and cause use-after-free. The fix serializes checks, revalidates state, prevents double attachment, returns type errors, and drops failed HCI connections.
Likely exposure
Exposure is limited to affected Linux kernels where a local low-privileged process can reach Bluetooth SCO socket functionality. The record identifies multiple affected versions, but its version data is difficult to interpret without distribution-specific mapping. Remote exploitation by a Bluetooth peer alone is not established by the supplied evidence.
Exploitation context
The CVSS vector indicates a local, low-complexity, low-privilege attack requiring no user interaction. Successful triggering depends on concurrent operations and disconnect timing. The CVE is not listed as KEV, and the supplied sources provide no evidence of active exploitation or a public exploit.
Researcher notes
The documented failure requires two connect attempts on the same SCO socket overlapping with HCI teardown. Observable consequences include a zombie socket, double sock_put(), use-after-free, and an orphaned connection. The sources document corrective commits but do not establish reliable exploitation, practical privilege escalation, or affected distribution package versions.
Mitigation direction
Update to a vendor-supported kernel containing the applicable stable fix or backport.
Consult the Linux distribution's advisory to map packaged kernel versions to the cited fixes.
Restrict untrusted local access while affected systems await updates.
Where operationally acceptable, reduce exposure to unused Bluetooth functionality pending remediation.
Validation and detection
Inventory running kernel versions on systems that provide Bluetooth functionality.
Map distribution kernel builds to the affected ranges and cited stable commits.
Confirm the applicable fix is present after updating, including vendor backports.
Review kernel logs for Bluetooth SCO faults, use-after-free reports, or unexpected crashes.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2026-43023 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
0ADP providers
7Source links
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.