CVE-2026-89633
NieznaneStreszczenie
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.
Ocena ryzyka
Możliwy odczyt lub zapis poza zakresem sterty wywołany przez złośliwy lub błędnie działający serwer SMB, co może prowadzić do uszkodzenia pamięci jądra lub eskalacji uprawnień.
Rekomendacja
Zaktualizować jądro Linux do wersji zawierającej poprawkę dodającą sprawdzenia dolnej i górnej granicy dla obu wskaźników danych przed memcpy i przed modyfikacją pól nagłówka.
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-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-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 OOB read/write from unvalidated DataOffset in coalesce_t2() coalesce_t2() computes data pointers directly from server-supplied DataOffset fields with no validation against buffer bounds: data_area_of_tgt = (char *)&pSMBt->hdr.Protocol + get_unaligned_le16(&pSMBt->t2_rsp.DataOffset); data_area_of_src = (char *)&pSMBs->hdr.Protocol + get_unaligned_le16(&pSMBs->t2_rsp.DataOffset); data_area_of_tgt += total_in_tgt; ... memcpy(data_area_of_tgt, data_area_of_src, total_in_src); A small DataOffset can push a pointer below the actual byte area, overwriting header fields; a large one can push it past the buffer end, causing out-of-bounds heap reads (source) or writes (target). The BCC overflow guard does not prevent this: BCC reflects how much data is present, while DataOffset controls where in the buffer it starts. The "validate target area" comment present since the function was first written in 2005 was a placeholder that was never implemented. Add lower- and upper-bound checks for both data pointers before the memcpy, and before any target header fields are modified.

