net/iucv: take a reference on the socket found in afiucv_hs_rcv()
- 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.148, 6.12.101, 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: net/iucv: take a reference on the socket found in afiucv_hs_rcv() afiucv_hs_rcv() looks up the destination socket under iucv_sk_list.lock, drops the lock, and then passes the socket to the afiucv_hs_callback_*() handlers without holding a reference. AF_IUCV sockets are not RCU-protected and are freed synchronously by iucv_sock_kill() -> sock_put(), so a concurrent close can free the socket in the window between read_unlock() and the handler, which then dereferences freed memory (for example sk->sk_data_ready() in afiucv_hs_callback_syn()). Take a reference with sock_hold() while the socket is still on the list and release it with sock_put() once the handler has run.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 3881ac441f642d56503818123446f7298442236b · fixed in 5739be5c19495d709d902a2912c9102ce78740d5; From 3881ac441f642d56503818123446f7298442236b · fixed in bc6c6e546ffff8865daaeb622ef348c2d481e80f; From 3881ac441f642d56503818123446f7298442236b · fixed in e3e0679fc950191aff8f27fa78abcfc2462cff4a; From 3881ac441f642d56503818123446f7298442236b · fixed in 4dc0e63abf8bc7ba8892e617c1fb8b204361e022; From 3881ac441f642d56503818123446f7298442236b · fixed in 1801cb20a5025a787d6853e19c38db138344b4b4; From 3881ac441f642d56503818123446f7298442236b · fixed in c75a950e77356e526672cba4584080c6c8b793b6; From 3881ac441f642d56503818123446f7298442236b · fixed in 5595ea59cdf29182cf6a270cacc1426c57b603de; From 3881ac441f642d56503818123446f7298442236b · fixed in 4fa349156043dc119721d067329714179f501749
- Linux Linux
3.2
- KernelLinux
From 3.2.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.148; From 6.7.0 · fixed in 6.12.101; From 6.13.0 · fixed in 6.18.42; From 6.19.0 · fixed in 7.1.6
References 8
git.kernel.org
- stable/c/5739be5c19495d709d902a2912c9102ce78740d5
- stable/c/bc6c6e546ffff8865daaeb622ef348c2d481e80f
- stable/c/e3e0679fc950191aff8f27fa78abcfc2462cff4a
- stable/c/4dc0e63abf8bc7ba8892e617c1fb8b204361e022
- stable/c/1801cb20a5025a787d6853e19c38db138344b4b4
- stable/c/c75a950e77356e526672cba4584080c6c8b793b6
- stable/c/5595ea59cdf29182cf6a270cacc1426c57b603de
- stable/c/4fa349156043dc119721d067329714179f501749