Bluetooth: ISO: fix refcounting of iso_conn
- 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.12, 6.18.44, 7.1.8
- 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
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: ISO: fix refcounting of iso_conn iso_conn_del() and iso_chan_del() have a race that results to double-put of iso_conn: [Task hdev->workqueue] [Task 2] iso_conn_del iso_chan_del iso_conn_hold_unless_zero iso_conn_lock iso_conn_lock conn->sk = NULL iso_conn_unlock sk = iso_sock_hold(conn) <---------´ if (!sk) iso_conn_put iso_conn_put iso_conn_put /* UAF */ The extra put for !sk in iso_conn_del() is currently required since failing iso_chan_add() may leave iso_conn not associated with any sk. Fix by having iso_pi(sk)->conn own refcount when non-NULL, so iso_conn_del does not need to put it. Adjust the iso_conn_add() refcounting so that conn is put if it does not get associated with an sk.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From a58d0f5dac322e16cc75334d000666512341bde5 · fixed in 42c8bd6ac81e21200bb90f1eaf43d19352eec6d7; From dc26097bdb864a0d5955b9a25e43376ffc1af99b · fixed in 3b921533e8aa95b77aadcf31737595578e735f3c; From dc26097bdb864a0d5955b9a25e43376ffc1af99b · fixed in 8208b4939afb0a1977fffe902c3ca42fe0f3baaa; From dc26097bdb864a0d5955b9a25e43376ffc1af99b · fixed in fdfde532ab1caa165fcd8985001157ac8b4db365; From 6.12.2 · fixed in 6.12.113; From 6.11.11 · fixed in 6.12
- Linux Linux
6.13
- KernelLinux
fixed in 6.12.113; From 6.13.0 · fixed in 6.18.44; fixed in 7.1.8