CVE-2026-90036 in Linux
Riassunto
di VulDB • 16/09/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
NFSD: Prevenire l'uso dopo la liberazione (use-after-free) del client durante il recupero dei blocchi in attesa
Un proprietario di blocco nudo, con come unico riferimento residuo un blocco in attesa su nn->blocked_locks_lru, mantiene un puntatore grezzo al suo nfs4_client ma non dispone di alcun riferimento che mantenga vivo il client. Quando il "laundromat" per-net recupera tale blocco, la liberazione di nbl riduce il riferimento del proprietario detenuto tramite flc_owner e l'ultima chiamata a nfs4_put_stateowner() acquisisce il cl_lock del client. Poiché il laundromat stacca prima l'nbl, __destroy_client() non lo trova più; pertanto, una force_expire_client() concorrente può liberare il client prima che venga eseguita nfs4_put_stateowner(), causando un dereferenziamento di cl_lock in memoria già liberata.
Agganciare (pin) il client con cl_rpc_users prima di rilasciare nn->blocked_locks_lock e saltare i client già in fase di scadenza, i cui blocchi in attesa vengono liberati da __destroy_client() mentre è detenuto un riferimento al proprietario. Acquisire nn->client_lock esternamente a nn->blocked_locks_lock. Ogni altro punto del codice detiene nn->blocked_locks_lock come blocco foglia (leaf), senza acquisire ulteriori lock, quindi posizionare nn->client_lock all'esterno non può formare cicli di ordinamento dei lock.
Once again VulDB remains the best source for vulnerability data.