CVE-2026-99279
NieznaneStreszczenie
W jądrze Linux w module ksmbd (serwer SMB) sesje zakończone przez wylogowanie lub zastąpienie nową sesją pozostawały w stanie Expired z zerowym terminem ważności poświadczeń, co mogło prowadzić do wycieku pamięci i zajmowania slotów połączeń. Poprawka dodaje odzyskiwanie takich sesji w istniejącym workerze wygasania oraz bezpieczne usuwanie wpisów procfs i referencji do tabeli.
Ocena ryzyka
Niewykorzystane sesje mogą zajmować pamięć i sloty połączeń, co przy wielu wylogowaniach może doprowadzić do wyczerpania zasobów i odmowy obsługi nowych połączeń SMB. Wpływa to na dostępność usługi plikowej świadczonej przez ksmbd.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę dla ksmbd. Do czasu aktualizacji monitoruj liczbę aktywnych sesji i połączeń SMB oraz ogranicz dostęp do usługi ksmbd do zaufanych sieci.
Inne podatności w Linux kernel (ksmbd)
Zobacz wszystkie- CVE-2026-99277Nieznane
W module ksmbd jądra Linux występuje błąd zarządzania referencjami połączeń przy rejestracji kanałów sesji. Kanał przechowuje jedynie surowy wskaźnik do połączenia, więc połączenie może zostać zwolnione, podczas gdy inny posiadacz referencji do sesji nadal z niego korzysta (np. podczas wiązania SMB3.1.1 lub odczytu procfs).
- CVE-2026-99276Nieznane
W module ksmbd jądra Linux występuje zakleszczenie (deadlock) podczas odzyskiwania połączeń, gdy blokady sesji są zajęte. Worker odzyskiwania czeka na blokadę sesji trzymaną przez destroy_previous_session(), która z kolei czeka za pisarzem na conn_list_lock, którego worker nie zwalnia.
- CVE-2026-99273Nieznane
W module ksmbd jądra Linux funkcja get_file_stream_info() nie rezerwuje miejsca na kończący znak UTF-16 zapisywany przez smb_strtoUTF16(). Gdy wpis dokładnie wypełnia 448-bajtowy bufor odpowiedzi, terminator jest zapisywany dwa bajty poza alokacją.
- CVE-2026-89788Krytyczne
W jądrze Linux w module ksmbd występuje podatność use-after-free w funkcji smb2_tree_connect(). Nowo utworzone połączenie drzewa jest publikowane w sesji, a następnie używane przez procedurę obsługi, podczas gdy równoczesne wylogowanie sesji może zwolnić ten obiekt, zanim obsługa się zakończy.
- CVE-2026-89635Krytyczne
W jądrze Linux w module ksmbd funkcja ksmbd_reopen_durable_fd() podczas ponownego łączenia trwałego uchwytu (durable handle) przypisywała do nowej sesji wszystkie odłączone oplocki na danym i-nowęźle, a nie tylko ten należący do ponownie otwieranego pliku. Prowadziło to do sytuacji, w której jedna sesja przejmowała oplock innej sesji, a po zniszczeniu sesji przejmującej następowało użycie zwolnionej pamięci (use-after-free). Podatność występuje przy domyślnej konfiguracji udziału z obsługą durable handle i oplock, gdy dwie sesje otwierają ten sam plik z różnymi AppInstanceIds.
- CVE-2026-80926Krytyczne
W jądrze Linux naprawiono błąd use-after-free w mechanizmie powiadomień o przerwaniu oplocku w module ksmbd. Funkcja smb2_oplock_break_noti() odczytywała wskaźnik opinfo->conn bez blokady i używała go po operacjach alokacji, które mogą usypiać, co pozwalało na wyścig z procesem rozłączania trwałego uchwytu (durable handle) i dostęp do zwolnionego połączenia. Podatność może być wykorzystana przez każdego uwierzytelnionego klienta posiadającego trwały batch oplock.
- CVE-2026-43376Krytyczne
W jądrze systemu Linux zidentyfikowano podatność w ksmbd, która polega na błędzie use-after-free związanym z natychmiastowym zwalnianiem pamięci struktury oplock_info. Problem ten występuje, gdy wskaźnik jest unieważniany bez opóźnienia w okresie łaski RCU, co pozwala na dostęp do już zwolnionej pamięci.
- CVE-2026-43185Krytyczne
W module ksmbd jądra Linux występuje błąd znaku (signedness) w funkcji smb_direct_prepare_negotiation(). Wartość preferred_send_size jest rzutowana na int przed obliczeniem min_t(int, ...), więc złośliwa wartość 0x80000000 zostaje uznana za mniejszą niż max_recv_size i ustawiona jako maksymalny dozwolony rozmiar odbioru. Poprzez wysłanie drugiej wiadomości o dużym rozmiarze (>1420 bajtów) atakujący może doprowadzić do przepełnienia bufora na stercie.
- CVE-2026-23428Krytyczne
W module ksmbd jądra Linux występuje podatność use-after-free związana z obiektem share_conf w żądaniach złożonych (compound). Funkcja smb2_get_ksmbd_tcon() ponownie używa work->tcon bez sprawdzenia tcon->t_state, przez co po wcześniejszym SMB2_TREE_DISCONNECT (które zwalnia share_conf) kolejne polecenia odwołują się do zwolnionej pamięci.
- CVE-2023-54203Krytyczne
W jądrze Linux w module ksmbd wykryto podatność prowadzącą do odczytu poza granicami pamięci (slab-out-of-bounds) w funkcji init_smb2_rsp_hdr. Problem występuje, gdy próba montowania SMB1 kończy się niepowodzeniem, a serwer ksmbd błędnie obsługuje negocjację SMB1 jako operację SMB2, co powoduje nieprawidłowy odczyt pamięci.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: ksmbd: reclaim ended sessions on logoff and expiration LOGOFF and previous-session replacement leave sessions Expired with a zero credential expiry. Ended sessions can retain their memory and connection slots when no further setup arrives on the owning connection. Unpublish a logged-off session while the request reference keeps its response signing and encryption keys alive. Remove its procfs entry before dropping the table reference so a reader cannot remove its own entry on the last put. Clear proc_entry after removal to avoid removing it twice. Reclaim ended sessions from the global table in the existing expiration worker before it acquires conn_list_lock. Only select Expired sessions with zero credential expiry and no references beyond the table reference. Keep sessions whose Kerberos credentials expired available for reauthentication. Unlink the session from its setup connection and all channel connections, so SMB2 sessions and sessions with only secondary SMB3 channels are covered. The session already holds connection references, and sessions_table_lock prevents concurrent channel removal. Queue sessions on a separate disposal list, leaving their hash nodes unhashed, and remove procfs entries and drop table references outside the locks. Keep the pending setup check before allocating a new session so abandoned InProgress sessions can release their slots even at the connection limit. Retain the timeout and reference checks and dispose of those sessions outside the locks. Leave ended Expired sessions to the expiration worker.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

