CVE-2026-89684 in Linux
Riassunto
di VulDB • 11/09/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
nfsd: correzione della race condition nella pubblicazione di cpntf in nfs4_init_cp_state
La funzione nfs4_alloc_init_cpntf_state() pubblicava il nuovo elemento cpntf nell'IDR s2s_cp_stateids (con cs_type impostato) all'interno di una sezione critica protetta da s2s_cp_lock, per poi acquisire nuovamente il lock ed eseguirne l'inserimento nella lista p_stid->sc_cp_list tramite list_add(). Nel periodo intercorrente tra le due operazioni, l'elemento è raggiungibile tramite so_id, ma la cp_list risulta ancora {NULL,NULL} a causa di kzalloc. Una race condition con OFFLOAD_CANCEL (poiché so_id viene ecoato al client come cnr_stateid, qualsiasi client NFSv4.2 può attivarlo) raggiunge manage_cpntf_state() -> _free_cpntf_state_locked() ed esegue list_del() su un list_head azzerato, causando un errore critico nel server (oops).
Le operazioni di assegnazione di cs_type e l'inserimento nella lista tramite list_add() sono state fuse in un'unica sezione critica insieme a idr_alloc_cyclic(), in modo che una lookup concorrente o non trovi l'elemento oppure ne veda la cp_list completamente collegata. INIT_LIST_HEAD() viene chiamato sull'elemento dopo l'allocazione e _free_cpntf_state_locked() è stato modificato per utilizzare list_del_init(), così da rendere un'operazione di rimozione obsoleta (stale unlink) un'operazione non operativa (no-op). nfs4_init_copy_state() passa NULL come p_stid ed salta l'inserimento nella lista, preservando la semantica NFS4_COPY_STID.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.