CVE-2026-89783
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 11 - wyżej niż 11% wszystkich znanych CVE
Streszczenie
W jądrze Linux w funkcji xfrm6_input_addr() występuje zapis poza zakresem (out-of-bounds write) z powodu błędnego sprawdzenia głębokości. Gdy sp->len osiągnie XFRM_MAX_DEPTH, zapis do sp->xvec[sp->len++] wykracza poza tablicę, co może prowadzić do awarii systemu.
Ocena ryzyka
Zdalny atakujący może wysłać specjalnie spreparowany pakiet IPv6, który wywoła zapis poza zakresem, prowadząc do paniki jądra i niedostępności usług.
Rekomendacja
Zastosuj poprawkę jądra Linux, która zmienia warunek na sp->len >= XFRM_MAX_DEPTH, aby zapobiec zapisowi poza zakresem.
Inne podatności w Linux kernel
Zobacz wszystkie- CVE-2026-90046Wysokie
W jądrze Linux w funkcji free_pages_nolock() na systemach jednoprocesorowych (UP) użyto spin_trylock() w kontekście NMI, co jest niebezpieczne. Błąd dotyczy ścieżki zwalniania stron i może prowadzić do awarii jądra. Podatność może być wykorzystana przez lokalnego atakującego do eskalacji uprawnień.
- CVE-2026-90045Wysokie
W jądrze Linux w sterowniku USB gadget ffs struktura io_data przechowuje wskaźnik do mm_struct zadania, ale nie utrzymuje referencji podczas oczekujących żądań asynchronicznych. Może to prowadzić do użycia po zwolnieniu (use-after-free), jeśli zadanie zakończy się przed obsługą ukończenia. Poprawka polega na pobraniu referencji przez mmgrab() przy kolejkowaniu i zwolnieniu przez mmdrop() przy ukończeniu.
- CVE-2026-90044Wysokie
W jądrze Linux w sterowniku USB gadget f_fs występuje use-after-free w ścieżce błędu AIO. Gdy ffs_epfile_io() zwróci błąd inny niż -EIOCBQUEUED, struktura io_data jest zwalniana, ale funkcja anulowania kiocb pozostaje uzbrojona i wskazuje na zwolniony wskaźnik. Równoległe anulowanie (np. sys_io_cancel()) może spowodować użycie po zwolnieniu. Poprawka polega na bezpiecznym rozbrojeniu anulowania przez kiocb->ki_complete() i zwróceniu -EIOCBQUEUED.
- CVE-2026-90043Wysokie
W jądrze Linux w module zram bit blokady slotu jest ustawiany w niewłaściwej pozycji na systemach 64-bitowych big-endian. Zamiast w polu flags trafia w pole ac_time, co przy włączonym ZRAM_TRACK_ENTRY_ACTIME powoduje kasowanie blokady i pozwala innemu CPU przejąć ten sam slot. Wartość czasu dostępu z ustawionym bitem może sprawić, że slot pozostanie zablokowany na zawsze. Poprawka przenosi bit blokady do połowy flags na big-endian 64-bit.
- CVE-2026-90041Wysokie
W jądrze Linux sterownik HID sony nie usuwa kontrolera z listy urządzeń, gdy rejestracja urządzenia wejściowego w HID core zakończy się niepowodzeniem. Struktura sony_sc jest zwalniana przez devres, ale jej węzeł listy pozostaje podłączony, co prowadzi do użycia zwolnionej pamięci przy obsłudze kolejnego kontrolera.
- CVE-2026-90039Nieznane
W jądrze Linux funkcje NFSD odwołujące stan administracyjny (unlock_filesystem, NFSD_CMD_UNLOCK_FILESYSTEM, NFSD_CMD_UNLOCK_EXPORT) sprawdzają tylko nn->nfsd_serv, który jest ustawiany przed alokacją tablicy nn->conf_id_hashtbl. Prowadzi to do dereferencji NULL, gdy serwer nie został jeszcze uruchomiony.
- CVE-2026-90035Nieznane
W jądrze Linux funkcja get_estimated_bw() w sterowniku drm/amd/display dzieli przez bw_granularity, które jest zerowane i wypełniane dopiero po obsłużeniu DP_TUNNELING_BW_ALLOC_CAP_CHANGED. Jeśli urządzenie USB4/DPIA zgłosi zmianę szacowanej przepustowości przed zmianą możliwości, w obsłudze przerwania DPCD dochodzi do dzielenia przez zero.
- CVE-2026-90034Nieznane
W jądrze Linux sterownik usb image mdc800 używa kmalloc() do buforów irq_urb_buffer i download_urb_buffer w usb_mdc800_init(). Przy krótszej wiadomości w mdc800_usb_irq() lub mdc800_usb_download_notify() może dojść do wycieku danych ze stosu.
- CVE-2026-90033Nieznane
W jądrze Linux funkcja snd_usbmidi_us122l_output() w ALSA usb-audio wybiera rozmiar 2 dla prędkości niższej niż high speed, nie odnosząc go do ep->max_transfer. Przy urządzeniu z jednobajtowym endpointem bulk memset oblicza 1 - 2 w int i zawija do SIZE_MAX, powodując zapis poza buforem.
- CVE-2026-90024Nieznane
W jądrze Linux występuje podatność polegająca na dereferencji wskaźnika NULL w funkcji f_midi2_free_ep_reqs() w module USB gadget MIDI 2.0. Gdy konfiguruje się gadget MIDI 2.0 przez configfs z kierunkiem bloku ustawionym na SNDRV_UMP_DIR_INPUT, endpoint midi1_ep_out nie jest inicjalizowany, a jego pole usb_ep->card pozostaje NULL. Późniejsza zmiana alternate setting przez hosta powoduje wywołanie f_midi2_free_ep_reqs() dla niezainicjalizowanego endpointu i crash jądra.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: xfrm6: fix out-of-bounds write in xfrm6_input_addr() when secpath is full The depth check in xfrm6_input_addr() is off by one: if (1 + sp->len == XFRM_MAX_DEPTH) goto drop; ... sp->xvec[sp->len++] = x; xfrm_input() can leave sp->len == XFRM_MAX_DEPTH, and the transport-mode receive path re-enters IPv6 input via xfrm_trans_reinject() with that secpath preserved. If the inner packet carries a destination-options HAO option or a type-2 routing header, xfrm6_input_addr() is called with sp->len == XFRM_MAX_DEPTH; the check (1 + 6 == 6) is false, so sp->xvec[sp->len++] writes one slot past the 6-element xvec[]. The write stays within the sec_path allocation (invisible to KASAN); UBSAN_BOUNDS flags it and panics under panic_on_warn. Use "sp->len >= XFRM_MAX_DEPTH", matching xfrm_input(). This also restores one chain level the old check rejected at sp->len == 5. UBSAN: array-index-out-of-bounds in net/ipv6/xfrm6_input.c:309:10 index 6 is out of range for type 'xfrm_state *[6]'

