CVE-2022-50838
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
30/12/2025
Última modificación:
30/12/2025
Descripción
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
net: stream: purge sk_error_queue in sk_stream_kill_queues()<br />
<br />
Changheon Lee reported TCP socket leaks, with a nice repro.<br />
<br />
It seems we leak TCP sockets with the following sequence:<br />
<br />
1) SOF_TIMESTAMPING_TX_ACK is enabled on the socket.<br />
<br />
Each ACK will cook an skb put in error queue, from __skb_tstamp_tx().<br />
__skb_tstamp_tx() is using skb_clone(), unless<br />
SOF_TIMESTAMPING_OPT_TSONLY was also requested.<br />
<br />
2) If the application is also using MSG_ZEROCOPY, then we put in the<br />
error queue cloned skbs that had a struct ubuf_info attached to them.<br />
<br />
Whenever an struct ubuf_info is allocated, sock_zerocopy_alloc()<br />
does a sock_hold().<br />
<br />
As long as the cloned skbs are still in sk_error_queue,<br />
socket refcount is kept elevated.<br />
<br />
3) Application closes the socket, while error queue is not empty.<br />
<br />
Since tcp_close() no longer purges the socket error queue,<br />
we might end up with a TCP socket with at least one skb in<br />
error queue keeping the socket alive forever.<br />
<br />
This bug can be (ab)used to consume all kernel memory<br />
and freeze the host.<br />
<br />
We need to purge the error queue, with proper synchronization<br />
against concurrent writers.
Impacto
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/4f1d37ff4226eb99d6b69e9f4518e279e1a851bf
- https://git.kernel.org/stable/c/6f00bd0402a1e3d2d556afba57c045bd7931e4d3
- https://git.kernel.org/stable/c/8c330c36b3970d0917f48827fa6c7a9c75aa4602
- https://git.kernel.org/stable/c/9062493811676ee0efe6c74d98f00ca38c4e17d4
- https://git.kernel.org/stable/c/9da204cd67c4fe97e8aa465d10d5c2e7076f7f42
- https://git.kernel.org/stable/c/b458d349f8753f666233828ebd30df6f100cf7d5
- https://git.kernel.org/stable/c/bab542cf56fc174c8447c00b73be99ffd66d2d39
- https://git.kernel.org/stable/c/c8c1eec578a9ae2dc8f14a1846942a0b7bf29d1d
- https://git.kernel.org/stable/c/e0c8bccd40fc1c19e1d246c39bcf79e357e1ada3



