CVE-2026-90156
Niskie ryzyko· EPSS 11%Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 11 - wyżej niż 11% wszystkich znanych CVE
Streszczenie
W module ksmbd jądra Linux występuje błąd kolejności operacji przy odkładaniu blokad plików. Gdy vfs_lock_file() odroczy blokadę, ksmbd_lock trafia na listę rollback_list przed zarejestrowaniem asynchronicznej pracy, a przy niepowodzeniu tego kroku następuje dereferencja NULL oraz zwolnienie blokady wciąż powiązanej ze stanem VFS.
Ocena ryzyka
Może prowadzić do awarii jądra (panic/oops) lub uszkodzenia pamięci na serwerze plików SMB, co oznacza przerwę w działaniu usługi i potencjalne ryzyko dalszej eksploatacji.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę dla ksmbd (odroczenie dodania blokady do rollback_list do momentu udanej konfiguracji asynchronicznej).
Inne podatności w Linux kernel (ksmbd)
Zobacz wszystkie- CVE-2026-99279Nieznane
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.
- 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.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: ksmbd: safely discard unregistered deferred locks When vfs_lock_file() defers a lock, smb2_lock() puts its ksmbd_lock on rollback_list before allocating and registering the asynchronous work. If either operation fails, rollback assumes that smb_lock->conn is initialized and dereferences NULL. The deferred file_lock also remains linked into the VFS blocked-lock state while it is freed. Keep the lock off rollback_list until async setup succeeds. On setup failures, explicitly unblock and wake the deferred lock before freeing it and its ksmbd wrapper.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

