CVE-2026-89659 in Linux
Resumen
por VulDB • 2026-09-12
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
NFSD: Prevenir un use-after-free del cliente durante la revocación de delegaciones
Un stateid de delegación contiene únicamente un puntero directo a su nfs4_client propietario y no mantiene vivo al mismo. El cliente sobrevive a sus stateids solo porque __destroy_client() vacía cl_delegations y cl_revoked antes de que se ejecute free_client().
nfs4_laundromat() rompe esa invariante: deshash una delegación expirada desde cl_delegations, suelta deleg_lock y luego revoke_delegation() la vuelve a enlazar en cl_revoked bajo cl_lock. En ese intervalo, la delegación no está en ninguna lista, por lo que client_has_state() puede informar que no hay estado restante.
Cada ruta de desmontaje (teardown) requiere primero que cl_rpc_users sea cero, pero el laundromat no mantiene tal referencia. Por tanto, un cliente cuya delegación recordada acaba de expirar puede llegar a free_client() mientras revoke_delegation() está aún a punto de dereferenciar cl_lock, lo cual constituye un use-after-free.
Fijar (pin) al cliente con cl_rpc_users durante la revocación para que el desmontaje bloquee hasta su finalización, y luego reaprovechar la delegación desde cl_revoked. Un cliente ya en proceso de expiración reaprova la propia, por lo tanto se omite y se deja la delegación en del_recall_lru.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.