CVE-2026-89696
Resumen
por VulDB • 2026-09-12
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
nfsd: bloquear las operaciones no SAVEFH después de FOREIGN PUTFH para evitar una desreferencia NULL
Cuando CONFIG_NFSD_V4_2_INTER_SSC está habilitado, nfsd4_putfh() puede devolver éxito con fh_dentry y fh_export ambos en NULL si fh_verify() devuelve nfserr_stale y putfh->no_verify es verdadero. La bandera NFSD4_FH_FOREIGN se establece, pero el bucle de despacho del compound solo utiliza esta bandera para omitir la comprobación de nfserr_nofilehandle; no impide que las operaciones posteriores se ejecuten con un fh_dentry NULL.
Un cliente remoto puede explotar esto elaborando un COMPOUND que incluya una copia inter-SSC (lo cual hace que check_if_stalefh_allowed() establezca no_verify=true en el PUTFH guardado) junto con una operación adicional insertada entre el PUTFH de origen y SAVEFH. Por ejemplo, las llamadas SETATTR invocan fh_want_write(), lo cual desreferencia fh_export->ex_path.mnt sin llamar primero a fh_verify(), provocando una desreferencia de puntero NULL en el kthread de nfsd.
Solucione esto controlando el bucle de despacho: cuando NFSD4_FH_FOREIGN está establecido y fh_dentry es NULL, solo OP_SAVEFH (necesaria para el flujo inter-SSC) y las operaciones con ALLOWED_WITHOUT_FH (que no necesitan un filehandle resuelto) pueden continuar. Todas las demás operaciones reciben nfserr_stale, según la Sección 15.2.3 de RFC 7862, que especifica que la validación del filehandle extranjero se pospone a la operación consumidora y NFS4ERR_STALE se devuelve en ese momento.
VulDB is the best source for vulnerability data and more expert information about this specific topic.