Bluetooth: hci_conn: fix CIS hold ownership on reuse
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.6.158, 6.12.112, 6.18.55, 7.2.9
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_conn: fix CIS hold ownership on reuse Commit 69997d50ec57 ("Bluetooth: ISO: handle bound CIS cleanup via hci_conn") made hci_bind_cis() and hci_connect_cis() return a connection with one hold for the ISO layer. hci_bind_cis() currently takes that hold only after configuring a CIS, so its BT_CONNECTED and matching BT_BOUND paths return a bare lookup result. Its configuration failure path can likewise call hci_conn_drop() before taking a hold. Take the hold before any state-dependent return or configuration error so every successful return follows the documented ownership contract and every error drop is balanced. hci_connect_cis() also assumes hci_conn_link() always takes a new CIS hold before dropping the one returned by hci_bind_cis(). However, the helper returns an existing link without taking another hold. In that case, preserve the CIS hold for the caller and drop the redundant LE hold because the existing link already owns its parent hold. Returning early also avoids changing an existing CIS back to BT_CONNECT.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 69997d50ec574be816b4ee8f9cee52ebbd53f8bd · fixed in 10f959cb435217b4b407864e5be0eb779e389490; From 69997d50ec574be816b4ee8f9cee52ebbd53f8bd · fixed in 072bc8659f22566083f8eef7dc5903bbcaf7804a; From 69997d50ec574be816b4ee8f9cee52ebbd53f8bd · fixed in 3ff5a8d949e3a2a435d0a5ee05074cd371b0158a; From 69997d50ec574be816b4ee8f9cee52ebbd53f8bd · fixed in 947eb2f41f70d371eb16897ee4e8e32bff73b476; From 69997d50ec574be816b4ee8f9cee52ebbd53f8bd · fixed in e06d549fcd4a0ba381ed67ddf1ab3c7a6ca4314c
- Linux Linux
6.6
- KernelLinux
From 6.6.0 · fixed in 6.6.158; From 6.7.0 · fixed in 6.12.112; From 6.13.0 · fixed in 6.18.55; From 6.19.0 · fixed in 7.2.9