Bluetooth: ISO: fix UAF in iso_recv_frame
- 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.1.176, 6.6.143, 6.12.93, 6.18.35, 7.0.12
- 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 UAF in iso_recv_frame iso_recv_frame reads conn->sk under iso_conn_lock but releases the lock before using sk, with no reference held. A concurrent iso_sock_kill() can free sk in that window, causing use-after-free on sk->sk_state and sock_queue_rcv_skb(). Fix by replacing the bare pointer read with iso_sock_hold(conn), which calls sock_hold() while the spinlock is held, atomically elevating the refcount before the lock drops. Add a drop_put label so sock_put() is called on all exit paths where the hold succeeded.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From ccf74f2390d60a2f9a75ef496d2564abb478f46a · fixed in c57ea90f203c8b8b41a474f19a09000d0f841436; From ccf74f2390d60a2f9a75ef496d2564abb478f46a · fixed in 119fb6f80c44dc1c65d604cf28e64c56bd9b6568; From ccf74f2390d60a2f9a75ef496d2564abb478f46a · fixed in b04ec131325baf4ea4577d6c6e6b86cf092e3731; From ccf74f2390d60a2f9a75ef496d2564abb478f46a · fixed in c318aa51830a3d2cc1229968fe521441c97356cd; From ccf74f2390d60a2f9a75ef496d2564abb478f46a · fixed in 1a6b803b00ccdd7666506adbe01ddae1c72d1ca9; From ccf74f2390d60a2f9a75ef496d2564abb478f46a · fixed in 47f23a259517abbdb8032c057a1e8a6bf3734878
- Linux Linux
6.0
- KernelLinux
From 6.0.0 · fixed in 6.1.176; From 6.2.0 · fixed in 6.6.143; From 6.7.0 · fixed in 6.12.93; From 6.13.0 · fixed in 6.18.35; From 6.19.0 · fixed in 7.0.12