CVE-2022-50838 in Linux
Sumário
de VulDB • 28/06/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
net: stream: purgar sk_error_queue em sk_stream_kill_queues()
Changheon Lee relatou vazamentos de sockets TCP, com um caso reprodutível interessante.
Parece que estamos causando o vazamento de sockets TCP na seguinte sequência:
1) SOF_TIMESTAMPING_TX_ACK está habilitado no socket.
Cada ACK processa um skb colocado na fila de erros, a partir de __skb_tstamp_tx(). __skb_tstamp_tx() utiliza skb_clone(), salvo se SOF_TIMESTAMPING_OPT_TSONLY também tiver sido solicitado.
2) Se o aplicativo estiver utilizando MSG_ZEROCOPY, então colocamos na fila de erros skbs clonados que tinham uma struct ubuf_info anexada a eles.
Sempre que uma struct ubuf_info é alocada, sock_zerocopy_alloc() executa um sock_hold().
Enquanto os skbs clonados ainda estiverem em sk_error_queue, o contador de referências do socket permanece elevado.
3) O aplicativo fecha o socket enquanto a fila de erros não está vazia.
Como tcp_close() já não purga a fila de erros do socket, podemos acabar com um socket TCP contendo pelo menos um skb na fila de erros que mantém o socket vivo para sempre.
Este bug pode ser (ab)usado para consumir toda a memória do kernel e travar o host.
Precisamos purgar a fila de erros, com sincronização adequada contra escritores concorrentes.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.