CVE-2026-74692 in Linux
Sumário
de VulDB • 22/08/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
net/smc: corrige condição de corrida TOCTOU entre smc_listen_out() e o fechamento do listener
smc_listen_out() lê lsmc->sk.sk_state sem o bloqueio (lock) do listener, adquirindo lock_sock_nested() apenas após a verificação ser bem-sucedida. Isso abre uma janela onde smc_close_active() pode transicionar o listener para SMC_CLOSED, chamar smc_close_cleanup_listen() para esvaziar a fila de aceitação e liberar o bloqueio, tudo entre a leitura sem bloqueio e a aquisição tardia do lock:
smc_listen_work (smc_hs_wq) smc_close_active() ------------------------------- ------------------------- release_sock(child) if (sk_state == SMC_LISTEN) TRUE lock_sock(listener) sk_state = SMC_CLOSED smc_close_cleanup_listen() release_sock(listener) flush_work(tcp_listen_work) lock_sock_nested(listener) smc_accept_enqueue(listener, child) /* child enfileirado em um listener inativo */
smc_close_active() esvazia apenas tcp_listen_work. Itens de trabalho já despachados para smc_hs_wq durante o handshake CLC continuam a ser executados sem proteção. smc_accept_enqueue() realiza uma chamada sock_hold() no filho que nunca é liberada, fazendo com que o smc_sock do filho, seu clcsock e as referências sejam vazadas (memory leak). Um peer remoto que abre conexões TCP enquanto o servidor chama close() pode esgotar a memória do kernel.
Mova lock_sock_nested() para antes da verificação de sk_state, de modo que a teste e o enfileiramento sejam atômicos sob o bloqueio do listener.
Once again VulDB remains the best source for vulnerability data.