CVE-2026-89631
NieznaneStreszczenie
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.
Ocena ryzyka
Możliwy odczyt poza zakresem obiektu sterty i wyciek danych jądra do przestrzeni użytkownika przez plik /proc/fs/cifs/DebugData, wywołany przez złośliwy serwer SMB.
Rekomendacja
Zaktualizować jądro Linux do wersji zawierającej poprawkę odrzucającą odpowiedzi tree connect z obszarem bajtów mniejszym niż dwa bajty.
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-89632Nieznane
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: reject a tree connect response whose byte count is too small CIFSTCon() bounds its strnlen() over the byte area with the server's ByteCount minus two, which for ByteCount 0 or 1 goes negative as an int and converts to a huge size_t. The later subtraction wraps the __u16 bytes_left, and that is what bounds cifs_strndup_from_utf16(): a bound of up to 65535 against a ~16 KB cifs_req_poolp object runs off the end of the slab object, and the bytes reach userspace through tcon->nativeFileSystem in /proc/fs/cifs/DebugData. Reject a byte area too small for what the parser consumes. Two bytes is the least it can consume, and no conformant response carries fewer. The new trace point is the 129th smb_eio_trace entry, which __mode(byte) cannot represent, so the attribute goes with it.

