CVE-2026-89632
NieznaneStreszczenie
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.
Ocena ryzyka
Możliwy odczyt poza zakresem odebranego bufora podczas przetwarzania odpowiedzi serwera SMB, co może prowadzić do ujawnienia danych lub niestabilności jądra.
Rekomendacja
Zaktualizować jądro Linux do wersji zawierającej poprawkę, która najpierw sprawdza count >= sizeof(*buf), a następnie weryfikuje pokrycie obszaru danych.
Inne podatności w Linux kernel (SMB client)
Zobacz wszystkie- CVE-2026-89637Nieznane
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-89636Nieznane
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-89634Nieznane
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-89633Nieznane
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-89631Nieznane
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-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: fix use-before-check of ReparseDataLength in reparse_buf_ptr() reparse_buf_ptr() reads buf->ReparseDataLength before checking that count covers the full fixed header: buf = (struct reparse_data_buffer *)((u8 *)io + off); len = sizeof(*buf); /* 8 bytes */ rdlen = le16_to_cpu(buf->ReparseDataLength); /* offset 4, 2 bytes */ if (count < len || count < rdlen + len) /* check comes after */ struct reparse_data_buffer has ReparseDataLength at offset 4. If a server returns OutputCount < 6, the read at offset 4-5 reaches past the end of the received data. The off+count bounds against iov_len were already validated, but that does not protect against count being smaller than sizeof(*buf). Split the check: verify count >= sizeof(*buf) before reading ReparseDataLength, then verify count covers the data region.

