Bluetooth: ISO: release unused CIS holds after channel attach
- 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.12.113, 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: ISO: release unused CIS holds after channel attach hci_bind_cis() and hci_connect_cis() return one hci_conn hold for the ISO layer. A new channel association consumes that hold, which is eventually released by iso_conn_free(). There are two cases where iso_chan_add() does not create an association: it returns success when the socket is already attached to the same iso_conn, and it returns -EBUSY when another socket is attached. The hold returned for the current call is unused in both cases. This occurs when deferred setup calls iso_connect_cis() again for its existing socket, or when another socket attempts to reuse the CIS. Detect the idempotent case while the connection is locked and release the unused hold after iso_chan_add(). Also release it on -EBUSY. Do not drop it for other errors: a newly allocated iso_conn releases the transferred hold when its last temporary reference is put.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 69997d50ec574be816b4ee8f9cee52ebbd53f8bd · fixed in e0e8b70207eaf27aee0a05ec5bf2d1b6bcb004d1; From 69997d50ec574be816b4ee8f9cee52ebbd53f8bd · fixed in ed4c026cc4094dfb7a329b9d8df0ddd0be1b2458; From 69997d50ec574be816b4ee8f9cee52ebbd53f8bd · fixed in e5fcca51177f224604e3a8c926ffd5edbeb58b09; From 69997d50ec574be816b4ee8f9cee52ebbd53f8bd · fixed in 0fcd4dad555c96e0bd3a1b8c569f989be85c7341
- Linux Linux
6.6
- KernelLinux
From 6.6.0 · fixed in 6.12.113; From 6.13.0 · fixed in 6.18.55; From 6.19.0 · fixed in 7.2.9