CVE-2026-89788
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 9 - wyżej niż 9% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Podatność może prowadzić do uszkodzenia pamięci jądra, awarii systemu (panic) lub potencjalnie do wykonania dowolnego kodu przez zdalnego atakującego z dostępem do usługi SMB. Dotyczy serwerów plików z włączonym ksmbd.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę, która pobiera dodatkowe odwołanie po publikacji połączenia drzewa i prawidłowo zarządza cyklem życia obiektu. Jeśli aktualizacja nie jest możliwa, rozważ wyłączenie usługi ksmbd lub ograniczenie dostępu do niej.
Inne podatności w Linux kernel (ksmbd)
Zobacz wszystkie- 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-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.
- CVE-2023-38432Krytyczne
W jądrze Linuxa przed wersją 6.3.10 odkryto problem związany z walidacją rozmiaru ładunku polecenia w ksmbd, co prowadzi do odczytu poza przydzielonym obszarem pamięci.
- CVE-2023-38431Krytyczne
W jądrze Linux przed wersją 6.3.8 odkryto problem związany z brakiem walidacji długości nagłówka NetBIOS w stosunku do rozmiarów nagłówków SMB w ksmbd. To prowadzi do odczytu poza przydzielonym zakresem pamięci.
- CVE-2023-38427Krytyczne
W jądrze Linux przed wersją 6.3.8 odkryto problem związany z podziałem całkowitym i odczytem poza zakresem w funkcji deassemble_neg_contexts w pliku fs/smb/server/smb2pdu.c w ksmbd.
- CVE-2026-31432Wysokie
W jądrze systemu Linux zidentyfikowano podatność, która pozwalała na zapis poza przydzielonym buforem podczas przetwarzania złożonych żądań w ksmbd. Problem występował, gdy pierwsze polecenie w żądaniu zajmowało większość bufora odpowiedzi, co prowadziło do błędów w budowaniu deskryptora zabezpieczeń.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: ksmbd: fix tree connection use-after-free in smb2_tree_connect() ksmbd_tree_conn_connect() publishes a new tree connection in sess->tree_conns with a single reference and returns its pointer to smb2_tree_connect(). The handler continues to initialize the object and build the response after publication. A concurrent session logoff can erase the connection and drop that reference, freeing the object while the handler still uses it. BUG: KASAN: slab-use-after-free in smb2_tree_connect+0xe3d/0xf90 smb2_tree_connect (fs/smb/server/smb2pdu.c:2872) handle_ksmbd_work process_one_work worker_thread kthread After xa_store() succeeds, take a second reference before releasing tree_conns_lock. The original reference belongs to the xarray entry and the second belongs to the creating smb2_tree_connect() handler. Keep the references balanced in every path: - On normal exit or an error after publication, smb2_tree_connect() drops its creator reference. Error cleanup also calls ksmbd_tree_conn_disconnect(), which drops the xarray reference only if it removes the exact entry. - SMB2 TREE_DISCONNECT uses the same helper to remove the entry and drop its xarray reference. The request's existing lookup reference remains owned by the request and is released by the existing cleanup. - Session LOGOFF removes each entry and drops its xarray reference. If it wins the race, later cleanup sees that the entry is gone and does not drop that reference again. To enforce this ownership, claim the disconnected state and erase the exact entry atomically under tree_conns_lock. This guarantees one drop for the xarray reference and one drop by each in-flight user, regardless of which teardown path wins. If logoff removes the entry before initialization completes, fail the connect instead of marking the detached object TREE_CONNECTED.

