Bluetooth: L2CAP: fix UAF in l2cap_le_connect_rsp
- 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 5.10.265, 5.15.216, 6.1.183, 6.6.151, 6.12.103, and 2 more
- 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: L2CAP: fix UAF in l2cap_le_connect_rsp l2cap_le_connect_rsp() obtains a channel via __l2cap_get_chan_by_ident() but neither holds a reference nor uses l2cap_chan_hold_unless_zero() before locking and operating on it. A concurrent l2cap_chan_del() triggered by a remote disconnect can free the channel between the lookup and l2cap_chan_lock(), causing a use-after-free. The BR/EDR counterpart l2cap_connect_rsp() and the sibling handler l2cap_le_command_rej() already use l2cap_chan_hold_unless_zero() to safely hold a reference, but l2cap_le_connect_rsp() was left unprotected. Fix by adding l2cap_chan_hold_unless_zero() after the ident lookup and l2cap_chan_put() on the exit path, consistent with other L2CAP response handlers.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From f1496dee9cbde2a62821f4441dadb0d3360f60c3 · fixed in 15d6c2367217a6a20b1abae9f38ded716bf620f1; From f1496dee9cbde2a62821f4441dadb0d3360f60c3 · fixed in 1818180fe12d6cec7a437bc59cde8efdf6b10250; From f1496dee9cbde2a62821f4441dadb0d3360f60c3 · fixed in 8325eafb38c3dee5af329266393763693d17381b; From f1496dee9cbde2a62821f4441dadb0d3360f60c3 · fixed in fd4c1e301bdec60a40728ea37de531cbccda501a; From f1496dee9cbde2a62821f4441dadb0d3360f60c3 · fixed in 522b730c62c53a1981604fd73524697fd347830d; From f1496dee9cbde2a62821f4441dadb0d3360f60c3 · fixed in 58e3c5289ad230a7e24ae4b0c7b43f5ee6e32136; From f1496dee9cbde2a62821f4441dadb0d3360f60c3 · fixed in 09f447accc2570751e7d17f0dc0788b40d3edade; From f1496dee9cbde2a62821f4441dadb0d3360f60c3 · fixed in c4740e7f23ff9a8210198d8b4703259e21b9f69d
- Linux Linux
3.14
- KernelLinux
From 3.14.0 · fixed in 5.10.265; From 5.11.0 · fixed in 5.15.216; From 5.16.0 · fixed in 6.1.183; From 6.2.0 · fixed in 6.6.151; From 6.7.0 · fixed in 6.12.103; From 6.13.0 · fixed in 6.18.44; From 6.19.0 · fixed in 7.1.8
References 8
git.kernel.org
- stable/c/15d6c2367217a6a20b1abae9f38ded716bf620f1
- stable/c/1818180fe12d6cec7a437bc59cde8efdf6b10250
- stable/c/8325eafb38c3dee5af329266393763693d17381b
- stable/c/fd4c1e301bdec60a40728ea37de531cbccda501a
- stable/c/522b730c62c53a1981604fd73524697fd347830d
- stable/c/58e3c5289ad230a7e24ae4b0c7b43f5ee6e32136
- stable/c/09f447accc2570751e7d17f0dc0788b40d3edade
- stable/c/c4740e7f23ff9a8210198d8b4703259e21b9f69d