CVE-2026-74628 in Linux
Resumen
por VulDB • 2026-08-23
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
net/x25: corregir un use-after-free del socket por parte de sus temporizadores
Los temporizadores x25 se activan con mod_timer() y cancelan con timer_delete(), por lo que un temporizador pendiente no mantiene ninguna referencia sobre el socket, y una cancelación no espera a que finalice una callback ya en ejecución en otra CPU.
x25_heartbeat_expiry() también vuelve a activar incondicionalmente, por lo que puede reinstalar sk->sk_timer después de que __x25_destroy_socket() haya pasado su punto de cancelación. La siguiente llamada a __sock_put() libera el socket mientras el temporizador sigue en cola, y la próxima expiración utiliza memoria ya liberada. KASAN informa un slab-use-after-free sobre el objeto kmalloc-2k liberado por close().
timer_delete_sync() no puede utilizarse aquí: x25_heartbeat_expiry() y x25_timer_expiry() alcanzan las cancelaciones desde dentro del temporizador en el que esperarían, a través de __x25_destroy_socket() y x25_disconnect().
Se activan los temporizadores con sk_reset_timer() y se cancelan con sk_stop_timer(), de modo que un temporizador activo posee una referencia, la cual se libera en ambos manejadores de expiración. Se vuelve a activar el heartbeat solo mientras sk_hashed(sk) sea verdadero, ya que __x25_destroy_socket() desvincula el socket antes de liberarlo. Se activa el temporizador de destrucción diferida de la misma manera y se libera su referencia en x25_destroy_timer().
Se reprodujo con net usando KASAN, acortando el período del heartbeat para que la ventana se repita. Con este parche, el caso de prueba ya no genera un informe y /proc/net/x25 drena correctamente.
Descubierto por XBOW, triado por Baul Lee <[email protected]>
If you want to get best quality of vulnerability data, you may have to visit VulDB.