Odebrany

CVE-2026-89666

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: odrzuć nsekundy spoza zakresu w NFSv3 SETATTR i utwórz operacje

Klient może wysłać NFSv3 SETATTR, CREATE, MKDIR, SYMLINK lub MKNOD
niosący atime lub mtime, którego pole nsekund jest poza zakresem. The
wartość jest dobrze uformowana na drucie i jest dekodowana w sposób prawidłowy
uint32, ale nie jest to prawidłowy parametr timespec64: tv_nsec musi być mniejszy niż
NSEC_PER_SEC.

Nic w ścieżce setattr tego nie blokuje. notify_change() uruchamia czas
poprzez timestamp_truncate(), która nie zmniejsza poniższej wartości tv_nsec
NSEC_PER_SEC, gdy system plików obsługuje ziarnistość nanosekundową
(s_time_gran == 1), a elementy ustawiające i-węzeł atime/mtime przechowują to dosłownie
(normalizowane jest tylko ctime za pomocą inode_set_ctime_to_ts()). The
nieznormalizowana wartość następnie uszkadza metadane na dysku: ext4
ext4_encode_extra_time() przesuwa tv_nsec w lewo o EXT4_EPOCH_BITS, co
przepełnia 32-bitowe dodatkowe pole i blokuje bity epoki sekund, więc
zapisane sekundy (a tym samym rok) są nieprawidłowe przy odczycie. XFS z
bigtime błędnie przechowuje znacznik czasu z tego samego powodu.

Sprawdź dostarczony przez klienta atime/mtime w procedurach obsługi proc i wróć
NFS3ERR_INVAL zanim cokolwiek zostanie zmienione. RFC 1813 zawiera listę NFS3ERR_INVAL
dla SETATTR i opisuje go jako błąd wartości, którą serwer „może
nie przechowywać… we własnej reprezentacji”; klient mapuje go na EINVAL.

Sprawdzanie procedur obsługi proc, a nie nfsd_setattr(), utrzymuje plik
odrzucenie przed stworzeniem obiektu. Operacje tworzenia tworzą
obiekt przed uruchomieniem nfsd_create_setattr(), więc późna awaria zakończyłaby się
nowy obiekt i zamień nieidempotentne żądanie w przestrzeń nazw
zmiana zgłaszająca awarię. Kontrolę przeprowadza się zatem z góry, np
operacje tworzenia przed utworzeniem obiektu.

tv_nsec jest długi, więc porównanie rzutuje go na unsigned long (to samo
szerokość) zamiast do u32, dopasowując timespec64_valid(). Obsada U32 by to zrobiła
obciąć w wersji 64-bitowej; długie rzutowanie bez znaku również odrzuca wartość, która
stała się ujemna, gdy do a. przypisano nsekundowy przewód u32 spoza zakresu
Długość 32-bitowa.

Sprawdzane są tylko czasy dostarczone przez klienta: żądania SET_TO_SERVER_TIME
nie niosą ze sobą żadnej wartości dla klienta. Czas sattrguard3 celowo pozostawiono w spokoju:
Strażnik znajdujący się poza zasięgiem po prostu nigdy nie odpowiada czasowi i wydajności obiektu
NFS3ERR_NOT_SYNC poprzez istniejące porównanie czasu ochronnego, czyli
wynik zgodny z protokołem, zamiast odrzucać żądanie.

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