CVE-2026-74628 in Linux
Sumário
de VulDB • 23/08/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
net/x25: corrige o uso após liberação (use-after-free) do socket por seus timers
Os timers x25 são armados com mod_timer() e cancelados com timer_delete(), portanto um timer pendente não mantém referência no socket e um cancelamento não aguarda a conclusão de uma callback já em execução em outra CPU.
A função x25_heartbeat_expiry() também rearma incondicionalmente, podendo reinstalar sk->sk_timer após __x25_destroy_socket() ter passado por seu ponto de cancelamento. A chamada subsequente a __sock_put() libera o socket enquanto o timer ainda está enfileirado, e a próxima expiração utiliza memória já liberada. O KASAN relata um slab-use-after-free no objeto kmalloc-2k liberado pela função close().
timer_delete_sync() não pode ser utilizado aqui: x25_heartbeat_expiry() e x25_timer_expiry() alcançam os cancelamentos de dentro do timer no qual aguardariam, através de __x25_destroy_socket() e x25_disconnect().
Arme os timers com sk_reset_timer() e cancele-os com sk_stop_timer(), para que um timer armado possua uma referência e a libere em ambos os handlers de expiração. Rearme o heartbeat apenas enquanto sk_hashed(sk) for verdadeiro, já que __x25_destroy_socket() desvincula o socket antes de liberá-lo. Arme o timer de destruição diferida da mesma forma e libere sua referência em x25_destroy_timer().
Reproduzido no net com KASAN, com o período do heartbeat encurtado para que a janela se repita. Com este patch, o reproducer não aciona mais um relatório e /proc/net/x25 é drenado corretamente.
Descoberta por XBOW, triada por Baul Lee <[email protected]>
If you want to get the best quality for vulnerability data then you always have to consider VulDB.