net/iucv: take a reference on the socket found in afiucv_hs_rcv()
0Vexday Risk Score
No sign of exploitation. No public exploitation artifact known so far.
ssvc Track
exploitation probability
—
observed exploitation
nono source reports it
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.
Affected products
Linux · LinuxReferences
https://git.kernel.org/stable/c/1801cb20a5025a787d6853e19c38db138344b4b4https://git.kernel.org/stable/c/4dc0e63abf8bc7ba8892e617c1fb8b204361e022https://git.kernel.org/stable/c/4fa349156043dc119721d067329714179f501749https://git.kernel.org/stable/c/5595ea59cdf29182cf6a270cacc1426c57b603dehttps://git.kernel.org/stable/c/c75a950e77356e526672cba4584080c6c8b793b6