Odebrany

CVE-2026-89689

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: nie zwalniaj slotów sesji, które są nadal w użyciu

nfsd4_sequence() może zwolnić właśnie ten slot, który aktualnie przetwarza.
Kiedy zmniejszacz sesji zredukował se_target_maxslots poniżej
se_fchannel.maxreqs, ścieżka zmniejszania sprawdza wcześniej trzy warunki
wywołując free_session_slots():

1. se_target_maxslots < maxreqs (reklamowano zmniejszenie)
2. slot->sl_generacja == se_slot_gen (slot jest aktualny)
3. seq->maxslots <= se_target_maxslots (klient potwierdza)

Jednak seq->slotid nigdy nie jest sprawdzany względem se_target_maxslots.
Klient korzystający ze slotu z zakresu [se_target_maxslots, maxreqs) może
spełniają wszystkie trzy warunki: jego gniazdo ma obecną generację
(ustawiony przez poprzednią SEKWENCJĘ) i wysyła sa_highest_slotid <=
se_target_maxslots, aby potwierdzić redukcję.

free_session_slots() następnie k zwalnia każdy slot o indeksie >=
se_target_maxslots, w tym własny slot dzwoniącego. Funkcja
kontynuuje zapisywanie sl_seqid, sl_flags, sl_generacja i zapisuje
zwisający wskaźnik w cstate->slot. Później nfsd4_store_cache_entry()
kopiuje do pliku maxresp_cached bajty odpowiedzi złożonej do pliku freed
sl_data[] tablicę, uszkadzając dowolny obiekt płyty, który ją teraz zajmuje
adres.

Dodatkowo współbieżne przetwarzanie wątków SEQUENCE na innym
gniazdo o wyższym numerze może zostać zwolnione spod niego.
NFSD4_SLOT_INUSE jest ustawione w nn->client_lock przed zablokowaniem
zwolniony, więc każdy współbieżny wątek po SEQUENCE będzie miał swoje miejsce
zaznaczone. Jednak free_session_slots() nie sprawdza NFSD4_SLOT_INUSE
przed uwolnieniem.

Napraw oba problemy w następujący sposób:
1. Sprawdzanie, czy slotid bieżącego żądania jest poniżej wartości zmniejszającej
granica.
2. Skanowanie szczelin w zakresie do zwolnienia dla NFSD4_SLOT_INUSE i
odroczenie zmniejszania, jeśli którekolwiek są aktywne.

>_ 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