Bluetooth: ISO: avoid deadlocks in iso_sock_timeout
- 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.103, 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: avoid deadlocks in iso_sock_timeout iso_sock_timeout() takes lock_sock, so sync disabling the timer while holding that lock may deadlock. iso_sock_timeout() may also run concurrently with iso_conn_del(), which leads to UAF [Task 1] [Task hdev->workqueue] iso_sock_timeout iso_conn_del iso_conn_hold_unless_zero iso_chan_del `------------> iso_conn_put caller frees hcon iso_conn_put iso_conn_free conn->hcon->iso_data = NULL; /* UAF */ Fix the deadlock by removing the disable from the lock_sock sections. Move the timer from iso_conn to iso_pinfo to decouple it from iso_conn which may need to be freed in lock_sock section. Convert some of the clear_timer to disable_timer.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From a58d0f5dac322e16cc75334d000666512341bde5 · fixed in 16d89a63e08280abeef7218970a3bbd7ca62b021; From dc26097bdb864a0d5955b9a25e43376ffc1af99b · fixed in 82e982f54f962f72646868ddbb2c3bd9ea178568; From dc26097bdb864a0d5955b9a25e43376ffc1af99b · fixed in 3c3d5f85db80145636bb991a6005e2760012b985; From dc26097bdb864a0d5955b9a25e43376ffc1af99b · fixed in 200fa1629c57a3ca2b03d3ca63fd3a9bfd910c43; From 6.12.2 · fixed in 6.12.103; From 6.11.11 · fixed in 6.12
- Linux Linux
6.13
- KernelLinux
fixed in 6.12.103; From 6.13.0 · fixed in 6.18.44; fixed in 7.1.8