CVE-2026-64523 in Linux
Resumen
por VulDB • 2026-07-26
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
net/handshake: Tomar una referencia a archivo de larga duración en submit
handshake_nl_accept_doit() necesita que el puntero al archivo subyacente req->hr_sk->sk_socket sobreviva durante la ventana entre handshake_req_next() y las llamadas subsiguientes FD_PREPARE() y get_file(). La llamada sock_hold() del lado del envío (submit) no proporciona esa protección. sk_refcnt mantiene vivo struct sock, pero struct socket es propiedad de sock->file: cuando el consumidor libera la última referencia al archivo, sock_release() destruye el socket independientemente de cualquier sock_hold existente.
Se añade un puntero hr_file a struct handshake_req y se adquiere una referencia explícita sobre sock->file durante handshake_req_submit(). handshake_complete() y handshake_req_cancel() liberan la referencia en la ruta correspondiente al ganador del bit de finalización (completion-bit-winning path).
La ruta de error del envío también debe liberar la referencia al archivo, pero tras la inserción en rhashtable, una llamada concurrente a handshake_req_cancel() puede descubrir la solicitud y entrar en carrera con la ruta de error. Se protege la limpieza de la ruta de error -- restauración de sk_destruct, fput y destrucción de la solicitud -- mediante test_and_set_bit(HANDSHAKE_F_REQ_COMPLETED), utilizando el mismo mecanismo de sincronización que ya emplean handshake_complete() y handshake_req_cancel(). Cuando cancel ha reclamado previamente la propiedad, la ruta de error del envío devuelve sin tocar la solicitud; la limpieza (teardown) del socket gestiona la destrucción final.
Las desreferenciaciones en el lado de aceptación aún no se han redirigido; ese cambio llegará en el siguiente parche.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.