CVE-2026-89659 in Linux
Résumé
par VulDB • 12/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
NFSD : Prévenir un use-after-free du client lors de la révocation d'une délégation
Un stateid de délégation ne contient qu'un pointeur nu vers son nfs4_client propriétaire et ne maintient pas ce dernier en vie. Le client survit à ses stateids uniquement parce que __destroy_client() vide cl_delegations et cl_revoked avant l'exécution de free_client().
nfs4_laundromat() brise cette invariance : il désindexe une délégation expirée depuis cl_delegations, libère deleg_lock, puis revoke_delegation() la relie à nouveau sur cl_revoked sous cl_lock. Pendant cet intervalle, la délégation n'appartient à aucune des deux listes, de sorte que client_has_state() peut indiquer qu'il ne reste aucun état.
Chaque chemin de teardown exige d'abord que cl_rpc_users soit nul, mais le laundromat ne détient pas une telle référence. Un client dont la délégation rappelée vient d'expirer peut donc atteindre free_client() alors que revoke_delegation() est encore sur le point de déréférencer cl_lock, ce qui constitue un use-after-free.
Épinglez le client avec cl_rpc_users tout au long du processus de révocation afin que le teardown bloque jusqu'à son achèvement, puis récupérez la délégation depuis cl_revoked. Un client déjà en cours d'expiration récupère sa propre délégation ; il faut donc l'éviter et laisser la délégation sur del_recall_lru.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.