CVE-2026-98357
WysokieCVSS 8.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 28 - wyżej niż 28% wszystkich znanych CVE
Streszczenie
W jądrze Linux występuje luka use-after-free w module IB/isert. Funkcja isert_send_done() przekazuje obsługę zakończeń niektórych PDU sterujących do kolejki roboczej isert_comp_wq, ale nie ma gwarancji, że zadanie to zakończy się przed zwolnieniem połączenia przez isert_wait_conn() i iscsit_close_connection(). W efekcie zadanie w kolejce może odwołać się do zwolnionej pamięci.
Ocena ryzyka
Może prowadzić do uszkodzenia pamięci jądra, awarii systemu (panic) lub potencjalnego wykorzystania przez atakującego do eskalacji uprawnień. Ryzyko dotyczy systemów używających iSCSI target z IB/isert w warunkach wyścigu przy zamykaniu połączenia.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę, która zlicza odroczone zakończenia PDU sterujących i czeka na nie w isert_wait_conn() przed zwolnieniem połączenia. Jeśli aktualizacja nie jest możliwa, ogranicz dostęp do usług iSCSI target lub monitoruj systemy pod kątem awarii związanych z isert.
Inne podatności w Linux kernel
Zobacz wszystkie- CVE-2026-99087Nieznane
W jądrze Linux w dm-integrity występuje błąd, który powoduje dereferencję wskaźnika NULL, gdy urządzenie ma ustawioną flagę SB_FLAG_DIRTY_BITMAP i jest aktywowane w trybie 'R'. Funkcja dm_integrity_resume próbuje odczytać dziennik zawierający bitmapę, co prowadzi do awarii. Poprawka pomija zapisy do urządzenia w trybie 'R' podczas wznawiania.
- CVE-2026-99086Nieznane
W jądrze Linux dm-integrity nie waliduje superbloku podczas wznawiania urządzenia, co pozwala użytkownikowi zmodyfikować superblok na nośniku podczas zawieszenia urządzenia. Może to prowadzić do niezgodności rozmiarów struktur w pamięci i zapisu poza dziennik, w tym zapisu 512 bajtów przez wskaźnik NULL. Poprawka zapisuje zwalidowany superblok w konstruktorze i odmawia wznowienia, jeśli geometria na dysku uległa zmianie.
- CVE-2026-99085Nieznane
W jądrze Linux naprawiono błąd w schedulerze sched_ext, który powodował zawieszenie przy wyłączaniu CPU, gdy zadania wygasającego procesora pozostawały w kolejce BPF schedulera. Zadania te były nadal liczone w runqueue, ale nieaktywny CPU nie wywoływał ops.dispatch() i nie mógł ich przejąć, co blokowało wątek hotplug i cpu_down() trzymający cpu_hotplug_lock. Poprawka ponownie kolejkuje zadania z offline'owanego rq na lokalny DSQ, aby balance_push() mógł je przenieść.
- CVE-2026-99084Nieznane
W jądrze Linux naprawiono problem w iterate_dir(), gdzie blokada i_rwsem katalogu była trzymana podczas odczytu katalogu, nawet jeśli katalog jest niezmienny i nigdy nie jest usuwany. Dla katalogu instancji nullfs (współdzielonego przez wiele przestrzeni nazw montowania i wątków jądra) złośliwy czytelnik mógł zablokować tę blokadę na dowolnie długo, blokując operacje mkdir, wyszukiwania i montowania dla innych użytkowników. Dodano flagę FOP_IMMUTABLE, która pozwala pominąć blokadę dla takich katalogów.
- CVE-2026-99083Nieznane
W jądrze Linux serwer ksmbd ma błąd zapisu poza granice sterty w funkcji krb5_authenticate(). Gdy SMB2_SESSION_SETUP jest przetwarzane jako niepierwszy element złożonego żądania SMB2, obliczenie out_len pomija work->next_smb2_rsp_hdr_off, co zawyża dostępne miejsce w buforze i pozwala memcpy() zapisać blob AP-REP poza response_buf. Poprawka odejmuje tę wartość przy obliczaniu out_len.
- CVE-2026-99082Nieznane
W jądrze Linux naprawiono błąd w KVM na architekturze x86 dotyczący pamięci podręcznej MMIO dla poszczególnych vCPU. Cache był oznaczany generacją memslotów, ale zarówno przy wypełnianiu, jak i walidacji używano kvm_memslots() wybierającego bezwarunkowo przestrzeń adresową 0, nawet gdy vCPU działał w trybie SMM i korzystał z przestrzeni adresowej 1. W rezultacie aktualizacja memslotów SMM mogła pozostawić pozornie ważny wpis z dawnej przestrzeni SMM po powrocie vCPU do normalnej przestrzeni adresowej, co pozwalało gościowi wymusić wyjście KVM_EXIT_MMIO dla prawidłowego RAM.
- CVE-2026-99080Nieznane
W jądrze Linux w funkcji clear_inode() występuje wyciek węzłów xarray, który można wywołać m.in. przez madvise. Zamiast naprawiać wycieki w miejscach ich powstawania, poprawka wywołuje xa_destroy(), co dodatkowo cyklicznie zwalnia i pobiera blokadę i_pages.
- CVE-2026-99079Nieznane
W jądrze Linux sterownik net/mlx5e może zwolnić nieaktualny bufor XSK podczas ponownej próby uzupełnienia w legacy cyclic RQ. Gdy uzupełnienie powiedzie się tylko częściowo, WQE bez zamiennika zachowuje stary wskaźnik do bufora, który może zostać przydzielony innemu WQE, co prowadzi do zwolnienia aktywnego bufora i podwójnego opublikowania tej samej ramki UMEM. Poprawka oznacza WQE jako zwolniony natychmiast po zwolnieniu po stronie sterownika.
- CVE-2026-99078Nieznane
W jądrze Linux sterownik net/mlx5e może zwolnić nieaktualny bufor XSK podczas ponownej próby uzupełnienia MPWQE w striding RQ. Gdy alokacja XSK zwróci -ENOMEM, actual_wq_head nie jest przesuwany, a późniejsza próba NAPI może ponownie wywołać xsk_buff_free() przez nieaktualne wskaźniki po zwróceniu ramek do puli XSK. Poprawka ustawia wszystkie bity skip_release_bitmap w ścieżce błędu mlx5e_xsk_alloc_rx_mpwqe().
- CVE-2026-99077Nieznane
W jądrze Linux naprawiono podatność w obsłudze protokołu IPv4/UDP, która pozwalała atakującemu spoza ścieżki na przeprowadzenie ataku side-channel na cache wyjątków FIB (FNHE). Poprzednio wyjątek był tworzony tylko wtedy, gdy pakiet UDP można było dopasować do istniejącego gniazda, co umożliwiało odkrycie efemerycznego portu używanego przez połączone gniazdo UDP. Poprawka polega na zawsze tworzeniu FNHE przed próbą dopasowania gniazda.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: IB/isert: wait for deferred control PDU completions before releasing the connection isert_send_done() hands ISTATE_SEND_TASKMGTRSP, ISTATE_SEND_REJECT and ISTATE_SEND_TEXTRSP completions off to isert_comp_wq and returns. The work item then runs isert_completion_put() -> isert_put_cmd(), which reads isert_conn->conn and takes conn->cmd_lock. Nothing orders that work item against teardown. isert_wait_conn() queues isert_release_work, which frees isert_conn, and iscsit_close_connection() frees the iscsit_conn right after it returns, so the queued work can run against freed memory. Count the deferred control PDU completions per connection and let isert_wait_conn() wait for them before the release work is queued. ISTATE_SEND_LOGOUTRSP is deliberately not counted: that branch runs iscsit_logout_post_handler(), which ends up waiting for conn->conn_wait_comp, and that completion is only sent by iscsit_close_connection() after it has called iscsit_wait_conn(). Waiting for it here would deadlock. Its wait stays the existing isert_wait4logout(). The splat below is from a kernel with tracing printk()s and an msleep(200) injected into isert_do_control_comp() to widen the window: BUG: KASAN: slab-use-after-free in isert_put_cmd+0x53d/0x620 Read of size 8 at addr ffff8881054f1038 by task kworker/u17:1/182 CPU: 0 UID: 0 PID: 182 Comm: kworker/u17:1 Tainted: G B 7.2.0-rc5-TWIDE-gb8babf08acc7 #1 PREEMPT(lazy) Tainted: [B]=BAD_PAGE Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Workqueue: isert_comp_wq isert_do_control_comp Call Trace: <TASK> dump_stack_lvl+0x53/0x70 print_report+0xd0/0x630 ? __pfx__raw_spin_lock_irqsave+0x10/0x10 ? _raw_spin_unlock_irqrestore+0x3e/0x70 ? isert_put_cmd+0x53d/0x620 kasan_report+0xce/0x100 ? isert_put_cmd+0x53d/0x620 isert_put_cmd+0x53d/0x620 ? isert_completion_put+0x305/0x330 ? isert_do_control_comp+0x2ef/0x310 process_one_work+0x633/0x1030 ? assign_work+0x11d/0x370 worker_thread+0x45b/0xd10 ? __pfx_worker_thread+0x10/0x10 ? __pfx_worker_thread+0x10/0x10 kthread+0x2c6/0x3b0 ? recalc_sigpending+0x15c/0x1e0 ? __pfx_kthread+0x10/0x10 ret_from_fork+0x36e/0x5a0 ? __pfx_ret_from_fork+0x10/0x10 ? __switch_to+0x572/0xdd0 ? __pfx_kthread+0x10/0x10 ret_from_fork_asm+0x1a/0x30 </TASK> Allocated by task 48: kasan_save_stack+0x33/0x60 kasan_save_track+0x14/0x30 __kasan_kmalloc+0x8f/0xa0 __kmalloc_cache_noprof+0x158/0x370 isert_cma_handler+0x1e3/0x2ae0 cma_cm_event_handler+0x3e/0x240 cma_ib_req_handler+0x17d9/0x4490 cm_process_work+0x41/0x330 cm_work_handler+0x5727/0xc160 process_one_work+0x633/0x1030 worker_thread+0x45b/0xd10 kthread+0x2c6/0x3b0 ret_from_fork+0x36e/0x5a0 ret_from_fork_asm+0x1a/0x30 Freed by task 184: kasan_save_stack+0x33/0x60 kasan_save_track+0x14/0x30 kasan_save_free_info+0x3b/0x60 __kasan_slab_free+0x43/0x70 kfree+0x121/0x380 iscsit_close_connection+0x7cf/0x1e60 iscsit_take_action_for_connection_exit+0x1b6/0x360 iscsi_target_tx_thread+0x472/0x690 kthread+0x2c6/0x3b0 ret_from_fork+0x36e/0x5a0 ret_from_fork_asm+0x1a/0x30
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

