CVE-2022-50838 in Linux
Resumen
por VulDB • 2026-06-28
En el núcleo de Linux se ha resuelto la siguiente vulnerabilidad:
net: stream: purgar sk_error_queue en sk_stream_kill_queues()
Changheon Lee reportó fugas (leaks) de sockets TCP, con un caso reproducible claro.
Parece que hay una fuga de sockets TCP siguiendo esta secuencia:
1) Se habilita SOF_TIMESTAMPING_TX_ACK en el socket.
Cada ACK generará un skb colocado en la cola de errores, desde __skb_tstamp_tx(). __skb_tstamp_tx() utiliza skb_clone(), a menos que también se haya solicitado SOF_TIMESTAMPING_OPT_TSONLY.
2) Si la aplicación también está utilizando MSG_ZEROCOPY, entonces colocamos en la cola de errores skbs clonados que tenían adjunta una estructura ubuf_info.
Cada vez que se asigna una struct ubuf_info, sock_zerocopy_alloc() realiza un sock_hold().
Mientras los skbs clonados permanezcan en sk_error_queue, el contador de referencias del socket (socket refcount) se mantiene elevado.
3) La aplicación cierra el socket mientras la cola de errores no está vacía.
Dado que tcp_close() ya no purga la cola de errores del socket, podríamos terminar con un socket TCP con al menos un skb en la cola de errores manteniendo el socket vivo para siempre.
Este bug puede ser (abus) utilizado para consumir toda la memoria del kernel y congelar el host.
Es necesario purgar la cola de errores, con sincronización adecuada frente a escritores concurrentes.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.