Odebrany

CVE-2026-89670

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

W jądrze Linuksa usunięto następującą lukę:

nfsd: przytrzymaj rcu przez localio cmpxchg, ponów próbę

obiekty nfsd_file są zwalniane poprzez call_rcu (filecache.c:296) i
nfsd_file_slab jest tworzony bez SLAB_TYPESAFE_BY_RCU
(KMEM_CACHE(nfsd_file, 0) w filecache.c:789), więc strona płyty
kopia zapasowa uwolnionego pliku nfsd_file będzie można swobodnie odzyskać po RCU
upłynie okres karencji.

Ponownie: blok retry w nfsd_open_local_fh() ładuje wskaźnik
cmpxchg, a następnie wywołuje nfsd_file_get(new) (czyli
refcount_inc_not_zero) bez trzymania rcu_read_lock. Jedyny rozmówca
nfs_open_local_fh() usuwa rcu_read_lock przed wywołaniem tego pomocnika,
więc żadna zewnętrzna sekcja krytyczna po stronie czytnika nie pokrywa obciążenia.

Procesor 0 (nfsd_open_local_fh) Procesor 1 (nfsd_file_put_local)
----- -----
nowy = cmpxchg(pnf, NULL, ...)
nf = xchg(pnf, NULL)
nfsd_file_put(nf)
ostatni ref -> call_rcu()
/* upływa okres karencji;
strona płyty z recyklingu */
nfsd_file_get (nowy)
refcount_inc_not_zero(&nowy->nf_ref)
/* działa na pamięci odzyskanej */

Niezerowe słowo w przesunięciu nf_ref obiektu poddanego recyklingowi powoduje, że
Wydaje się, że podbicie refcount zakończyło się sukcesem, a osoba dzwoniąca następnie wyłudza referencje
nowy->nf_net i nowy->nf_file z wolnej pamięci.

Napraw, pobierając rcu_read_lock() bezpośrednio przed cmpxchg i
zwolnienie go na wszystkich trzech wyjściach bloku if (nowy): goto-agane
ponów próbę, ścieżkę czyszczenia utraconego wyścigu i ścieżkę, która zakończyła się pomyślnie instalacją.
nfsd_file_put() i nfsd_net_put() pozostają poza sekcją RCU, więc
mogą swobodnie blokować.

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

This product uses the NVD API but is not endorsed or certified by the NVD.

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org