CVE-2026-98684
Niskie ryzyko· EPSS 5%Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 5 - wyżej niż 5% wszystkich znanych CVE
Streszczenie
W kliencie SMB w jądrze Linux, emulacja fallocate dla małych wewnętrznych zakresów (tryb 0 / FALLOC_FL_KEEP_SIZE) wywoływała FSCTL_QUERY_ALLOCATED_RANGES bez uprzedniego opróżnienia danych. Wbrew dokumentacji Win32 zapytanie to nie jest spójne z niedawno zapisanymi danymi, przez co serwer mógł zgłosić zapisany zakres jako nieprzydzielony i emulacja nadpisywała aktywne dane zerami. Problem dotyczy serwerów Windows; Samba nie wykazuje tego zachowania.
Ocena ryzyka
Na systemach montujących udziały SMB z serwerów Windows może dojść do cichego uszkodzenia danych — zapisane dane zostają nadpisane zerami podczas operacji fallocate. Prowadzi to do utraty lub korupcji plików bez ostrzeżenia.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę, która przed zapytaniem o przydzielone zakresy wymusza zapis brudnych stron, opróżnia zaległe I/O i wysyła SMB2 FLUSH. Do czasu aktualizacji unikaj operacji fallocate z trybem 0 / FALLOC_FL_KEEP_SIZE na udziałach SMB hostowanych na serwerach Windows.
Inne podatności w Linux kernel SMB client
Zobacz wszystkie- CVE-2026-89637Krytyczne
W kliencie SMB jądra Linux funkcja cifs_check_trans2() przy błędnej odpowiedzi wtórnej T2 (nieprawidłowy nagłówek SMB lub odrzucenie PDU przez check2ndT2()) powoduje, że handle_mid() nadpisuje mid->resp_buf nowym buforem, wyciekając bufor pierwotny i pozostawiając wiszące wskaźniki server->smallbuf/bigbuf. Prowadzi to do use-after-free, gdy wątek demultipleksera ponownie użyje zwolnionego bufora.
- CVE-2026-89636Krytyczne
W kliencie SMB jądra Linux funkcja free_tgts() zwalnia wszystkie struktury z ce->tlist, ale pozostawia ce->tgthint wskazujący na jedną ze zwolnionych struktur cache_dfs_tgt. Jeśli wskaźnik nie zostanie zresetowany przed ponownym użyciem, dochodzi do use-after-free.
- CVE-2026-89634Krytyczne
W kliencie SMB jądra Linux w funkcji symlink_data() makro ALIGN() może przepełnić się dla wartości ErrorDataLength bliskiej UINT32_MAX (np. 0xFFFFFFF9), zawijając się do 0. Powoduje to, że kontrola granic przechodzi, a pętla przesuwa się o zero bajtów, pozostawiając wskaźnik 'p' wskazujący na nieaktualne dane.
- CVE-2026-89633Krytyczne
W kliencie SMB jądra Linux funkcja coalesce_t2() oblicza wskaźniki danych bezpośrednio z pól DataOffset dostarczonych przez serwer, bez walidacji względem granic bufora. Mały DataOffset może przesunąć wskaźnik przed obszar danych i nadpisać pola nagłówka, a duży może wyjść poza bufor, powodując odczyt lub zapis poza zakresem sterty.
- CVE-2026-89631Krytyczne
W kliencie SMB jądra Linux funkcja CIFSTCon() ogranicza strnlen() przez ByteCount minus dwa, co dla ByteCount 0 lub 1 daje wartość ujemną jako int i konwertuje się na ogromny size_t. Późniejsze odejmowanie zawija __u16 bytes_left, co pozwala cifs_strndup_from_utf16() odczytać do 65535 bajtów z obiektu o rozmiarze ~16 KB, ujawniając dane przez /proc/fs/cifs/DebugData.
- CVE-2026-98125Średnie
W kliencie SMB3 jądra Linux funkcje smb3_insert_range() i smb3_collapse_range() nieprawidłowo unieważniały pamięć podręczną stron, gdy przesunięcie lub stary rozmiar pliku (EOF) nie były wyrównane do rozmiaru strony. Strony brzegowe były tylko częściowo zerowane i pozostawały oznaczone jako aktualne, przez co klient mógł zwracać nieaktualne dane po udanej operacji insert/collapse range.
- CVE-2026-89632Wysokie
W kliencie SMB jądra Linux funkcja reparse_buf_ptr() odczytuje pole ReparseDataLength z bufora przed sprawdzeniem, czy odebrane dane obejmują pełny nagłówek struktury. Gdy serwer zwróci OutputCount < 6, odczyt pod offsetem 4-5 wykracza poza koniec odebranych danych.
- CVE-2026-46139Średnie
W jądrze systemu Linux zidentyfikowano podatność w kliencie SMB, polegającą na nieprawidłowym inicjowaniu bufora deskryptora zabezpieczeń. Zmiana w strukturze danych spowodowała, że pole zarezerwowane pozostawało niezainicjowane, co prowadziło do błędów przy próbie użycia chmod.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: smb: client: flush and commit data before querying allocated ranges The mode 0 / FALLOC_FL_KEEP_SIZE fallocate emulation for small interior ranges in smb3_simple_fallocate_range() issues FSCTL_QUERY_ALLOCATED_RANGES and zero-fills any sub-range the server reports as an unallocated hole, to force block allocation without changing file contents. This is unsafe against Windows servers. Per the Win32 documentation, FSCTL_QUERY_ALLOCATED_RANGES only reports ranges that *may* contain nonzero data and is explicitly not coherent with recently written data: "a call to FSCTL_QUERY_ALLOCATED_RANGES [after writing to a network file] would not necessarily return a correct list of allocated regions. To ensure coherency [...] flush the data to the file" fsx (generic/363) reproduces the resulting corruption against Windows Server 2022: a range is written, an uncached read returns the data, yet the next FSCTL_QUERY_ALLOCATED_RANGES on that range reports it as a whole hole, so the emulation overwrites live data with zeroes. A network trace confirmed the WRITE, the READ returning data and the query returning an empty range list within microseconds. Samba does not exhibit this; its query is coherent with the written data. Write back the dirty pages, drain any outstanding I/O and issue an SMB2 FLUSH to force the server to commit the data before querying the allocated ranges, so the query reflects the data actually present. With this, generic/363 passes against both Windows Server 2022 and Samba over 100000 fsx operations.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

