Podatności Linux kernel
7564 znanych podatności CVE w Linux kernel, przetłumaczonych i ocenionych.
- CVE-2026-89777Wysokie
W jądrze Linux w podsystemie vfio/pci funkcja vfio_msi_cap_len() przy błędzie inicjalizacji zwalniała pamięć vdev->msi_perm, ale nie zerowała wskaźnika. Prowadziło to do użycia zwolnionej pamięci (use-after-free) przy kolejnym otwarciu urządzenia oraz do podwójnego zwolnienia (double free) przy jego zamykaniu, co może skutkować paniką jądra.
- CVE-2026-89773Niskie ryzyko· EPSS 7%
W jądrze Linux rozwiązano podatność w module drm/amd/display polegającą na pominięciu konfiguracji HDCP w stanie przejściowym. Stan przejściowy nie posiada prawidłowego dm_stream_ctx, więc konfiguracja HDCP powinna być pominięta — procedura jest prawidłowa tylko wtedy, gdy utworzono prawidłowy strumień.
- CVE-2026-89771Wysokie
W jądrze Linux rozwiązano wyścig w ring-buffer podczas zmiany rozmiaru subbufora przez czytelników. trace_buffer subbuf_size jest odczytywany bez blokady w ring_buffer_read_page() i ring_buffer_read_start(), podczas gdy może być jednocześnie zmieniany przez ring_buffer_subbuf_order_set(). Poprawka używa bpage::order zamiast trace_buffer::subbuf_size oraz dodaje blokadę mutex w ring_buffer_read_start().
- CVE-2026-89770Niskie ryzyko· EPSS 4%
W jądrze Linux rozwiązano problem w iomap polegający na zwalnianiu nieistniejącego ładunku integralności. fs_bio_integrity_alloc może nie przydzielić ładunku integralności bio, jeśli weryfikacja PI jest wyłączona na urządzeniu blokowym — poprawka sprawdza ten przypadek przed wywołaniem fs_bio_integrity_free w iomap_bio_read_folio_range_sync, aby uniknąć dereferencji wskaźnika NULL.
- CVE-2026-89769Wysokie
W jądrze Linux rozwiązano wyciek IRQ na ścieżce błędu cpuhp_setup_state w sterowniku clocksource nxp-pit. Gdy cpuhp_setup_state zawiedzie po pomyślnym wywołaniu request_irq przez pit_clockevent_per_cpu_init, obsługa błędu pomija zwolnienie zarejestrowanego IRQ, co prowadzi do wycieku linii przerwania i pozostawienia wiszącego wskaźnika jako dev_id, potencjalnie powodując use-after-free.
- CVE-2026-89768Niskie ryzyko· EPSS 8%
W jądrze Linux naprawiono błąd w funkcji backing_file_open(), która wyznaczała ścieżkę zapisywaną w nowym pliku backingowym na podstawie user_file->f_path. Przy zagnieżdżonych systemach plików (np. overlayfs na overlayfs) prowadziło to do zapisania nieprawidłowej, wewnętrznej ścieżki warstwy pośredniej zamiast ścieżki widocznej dla użytkownika. W efekcie pliki mapowane przez zagnieżdżony overlayfs pokazywały błędną ścieżkę w /proc/<pid>/maps oraz w rekordach mmap perf/ftrace.
- CVE-2026-89766Niskie ryzyko· EPSS 8%
W jądrze Linux ioctl PIDFD_GET_*_NAMESPACE w pidfd_ioctl() wykonuje sprawdzenie dostępu ptrace na podstawie poświadczeń, ale w przeciwieństwie do ścieżek procfs nie utrzymuje blokady exec_update_lock docelowego zadania. Pozwala to wywołującemu przejść sprawdzenie na starych poświadczeniach, a następnie odczytać przestrzeń nazw po tym, jak cel wykona execve() na binarce setuid i ustanowi nowe poświadczenia. Poprawka polega na trzymaniu exec_update_lock dla odczytu wokół sprawdzenia ptrace i wyszukania przestrzeni nazw.
- CVE-2026-89765Niskie ryzyko· EPSS 8%
W jądrze Linux na natywnej architekturze sparc64 struktura __kernel_old_timeval zawiera czterobajtową lukę po tv_usec, ponieważ tv_sec jest 64-bitowe, a __kernel_suseconds_t 32-bitowe. Funkcja put_itimerval() wypełnia tylko nazwane pola i kopiuje cały obiekt do przestrzeni użytkownika, przez co getitimer() może ujawnić dwa bajty wypełnienia ze stosu jądra. Poprawka zeruje całą strukturę przed przypisaniem pól.
- CVE-2026-89764Wysokie
W jądrze Linux w warstwie Rust devres występuje wyścig, gdy dwie ścieżki jednocześnie unieważniają Devres. devres_release_all() wywołuje Revocable::revoke() przez callback zwalniający, a Devres::drop() wywołuje revoke_nosync() na innym CPU. Unieważniający, który nie zdobędzie zamiany is_available, wraca natychmiast, ale drugi może wciąż wykonywać drop_in_place() na danych wewnętrznych, co prowadzi do use-after-free. Poprawka dodaje Completion, na które Devres::drop() czeka, gdy przegra zamianę is_available.
- CVE-2026-89763Wysokie
W jądrze Linux występuje błąd use-after-free w module trusted keys (KEYS: trusted) związany z kolejnością zwalniania zasobów TPM. Funkcja trusted_tpm_exit() zwalnia referencję do układu TPM oraz tablicę digestów przed wyrejestrowaniem typu klucza, co pozwala równoległej operacji na kluczu odwołać się do już zwolnionej pamięci.
- CVE-2026-89760Wysokie
W jądrze Linux występuje błąd w zarządzaniu pamięcią wymiany (swap), dotyczący zwalniania slotów hibernacji. Funkcja swap_free_hibernation_slot() zwalnia slot nawet gdy znajduje się w nim folio w swap cache, co prowadzi do usunięcia wpisu spod tego folio i późniejszego nadpisania wpisu w tablicy swap należącego do innego procesu. Błąd może powodować cichą korupcję pamięci, awarie procesów lub niestabilność danych w niepowiązanych aplikacjach, szczególnie podczas przygotowywania obrazu hibernacji przez uswsusp.
- CVE-2026-89759Niskie ryzyko· EPSS 8%
W jądrze Linux naprawiono podatność w module kmemleak, gdzie funkcja kmemleak_scan() skanowała stosy wszystkich wątków w jednej sekcji krytycznej RCU bez punktu przeplanowania. Na hostach z bardzo dużą liczbą wątków mogło to doprowadzić do zablokowania CPU i wyzwolenia watchdoga soft lockup. Poprawka polega na iterowaniu po zadaniach za pomocą find_ge_pid() i zwalnianiu blokady RCU między zadaniami.
- CVE-2026-89758Wysokie
W jądrze Linux występuje luka w funkcji queue_folios_pmd() w mm/mempolicy, która nie pomija nieobecnych wpisów PMD (np. device-private) przed wywołaniem pmd_folio(). Może to prowadzić do VM_BUG_ON() na jądrach debugowych, oopsa na błędnym wskaźniku vmemmap lub cichego odizolowania niepowiązanego folio z LRU. Problem występuje, gdy sterownik GPU oparty na HMM migruje anonimowe folio THP do pamięci urządzenia, a następnie użytkownik wywołuje mbind(), migrate_pages() lub set_mempolicy_home_node().
- CVE-2026-89757Niskie ryzyko· EPSS 8%
W jądrze Linux w mechanizmie mglru funkcja sort_folio() zawierała błędną optymalizację dla stron (folios), które przestały być usuwalne z pamięci (unevictable). Błąd powodował, że pole mlock_count mogło przyjąć wartość 0x122 (290) z powodu nadpisania przez LIST_POISON2, co prowadziło do nieprawidłowego liczenia stron zablokowanych w pamięci (Mlocked) i pozostawania ich jako unevictable aż do zwolnienia. Dodatkowo skrót operował flagami LRU w niewłaściwej kolejności, co mogło powodować nieoczekiwane zachowanie przy równoczesnej izolacji stron.
- CVE-2026-89756Niskie ryzyko· EPSS 8%
W jądrze Linux funkcja migrate_pages_batch() odmapowuje kolejne folio, co na hostach KVM wywołuje kosztowne operacje MMU notifier, długo zajmując CPU. Pętla wywołuje tylko cond_resched(), które na jądrach z PREEMPTION nic nie robi, więc zadanie migrujące (np. kcompactd) nigdy nie zgłasza stanu quiescent dla Tasks-RCU i blokuje grace period RCU na wiele minut.
- CVE-2026-89755Wysokie
W jądrze Linux funkcja __migrate_device_pages() odczytuje mapowanie folio przed wywołaniem folio_free_swap(). Po udanym usunięciu z swapcache zapisane mapowanie nadal wskazuje na swap_space, co prowadzi do użycia nieaktualnego mapowania i błędnego rozliczania referencji, a w konsekwencji do BUG związanego z licznikiem referencji folio.
- CVE-2026-89754Wysokie
W jądrze Linux występuje błąd w mechanizmie mm/pagewalk, gdzie nieprawidłowo ustawiona wartość walk->action (ACTION_AGAIN) nie jest resetowana po wyczyszczeniu wpisu PMD. Prowadzi to do wielokrotnego wywoływania callbacków i w konsekwencji do zapisu poza zakresem pamięci (out-of-bounds write), co zostało wykryte przez KASAN w funkcji __mincore_unmapped_range.
- CVE-2026-89753Niskie ryzyko· EPSS 6%
W jądrze Linux pętla skanująca w shrink_lruvec() wywołuje jedynie cond_resched(), które na jądrach z PREEMPTION jest no-opem. W efekcie zadanie odzyskujące pamięć nigdy nie zgłasza stanu quiescent dla Tasks-RCU i staje się holdoutem, powodując stalle rcu_tasks podczas reclaimu.
- CVE-2026-89752Niskie ryzyko· EPSS 6%
W jądrze Linux kernfs serializuje operacje na plikach tylko per otwarty plik, więc równoległe zapisy do memory.high lub memory.max mogą się nakładać. Jeśli inny zapisujący podniesie lub usunie limit, pierwszy zapisujący może kontynuować reclaim do nieaktualnego celu, a w przypadku memory.max pętlić się w nieskończoność i wielokrotnie zwiększać licznik zdarzeń OOM.
- CVE-2026-89751Niskie ryzyko· EPSS 6%
W architekturze x86 obsługa I/O portów w TDX (funkcje handle_in() i handle_out()) używa maski GENMASK(BITS_PER_BYTE * size, 0), która zawiera bit górny. Dla size=1 daje to 9-bitową maskę 0x1FF zamiast 8-bitowej 0xFF, przez co maska jest o jeden bit za szeroka dla wszystkich rozmiarów I/O.
- CVE-2026-89750Wysokie
W jądrze Linux funkcja dup_task_struct() kopiuje user_event_mm z rodzica do dziecka bez pobrania referencji. Jeśli user_event_mm_alloc() zawiedzie, user_event_mm_dup() pozostawia skopiowany wskaźnik, a przy zakończeniu dziecka user_event_mm_remove() zmniejsza referencję, której dziecko nigdy nie posiadało, co prowadzi do use-after-free (UAF).
- CVE-2026-89749Niskie ryzyko· EPSS 10%
W jądrze Linux funkcja event_test_stuff() wywołuje kthread_run() i bezwarunkowo przekazuje zwrócony wskaźnik task_struct do kthread_stop(). Gdy utworzenie wątku zawiedzie (np. przy braku pamięci podczas autotestu przy starcie), kthread_run() zwraca wskaźnik błędu ERR_PTR(-ENOMEM), a kthread_stop() dereferencjonuje nieprawidłowy wskaźnik, powodując awarię jądra.
- CVE-2026-89748Wysokie
W jądrze Linux funkcja simple_ring_buffer_swap_reader_page() rozpoczyna z retry równym 8 i zmniejsza je dopiero po nieudanej wymianie linku. Na ostatniej próbie udana wymiana pozostawia retry na zero, a nieudana na -1, przez co test !retry odwraca oba wyniki i może uszkodzić ring buffer.
- CVE-2026-89747Wysokie
W jądrze Linux zapis do buffer_subbuf_size_kb wywołuje ring_buffer_subbuf_order_set(), która zwalnia wszystkie podbufory ring buffera, w tym stronę czytnika. Czytelnicy trace_pipe trzymają wskaźniki do tych stron, a ring_buffer_peek() zwraca wskaźnik zdarzenia po zwolnieniu blokady, co przy zmianie kolejności podbufora w tym oknie prowadzi do use-after-free.
- CVE-2026-89746Wysokie
W jądrze Linux występuje podatność use-after-free w mechanizmie śledzenia (tracing) przy rejestrowaniu dwóch triggerów hist o tej samej nazwie (name=) na różnych zdarzeniach. Drugi trigger ponownie wykorzystuje pierwszy jako named_data, ale jego wpis w liście tr->hist_vars nie jest usuwany, co pozostawia wiszący wskaźnik do zwolnionej struktury hist_data. Późniejsze użycie zmiennej w kolejnym triggerze hist powoduje dereferencję zwolnionej pamięci i panikę jądra.
- CVE-2026-89745Niskie ryzyko· EPSS 5%
W jądrze Linux mechanizm blokady integralności (lockdown) w debugfs nie obejmował operacji mmap_prepare, a jedynie mmap. W efekcie pliki korzystające z mmap_prepare mogły omijać blokadę, gdy jądro pracowało w trybie integralności.
- CVE-2026-89744Wysokie
W jądrze Linux funkcja fwnode_for_each_child_node() może wejść w nieskończoną pętlę, gdy iteruje po dzieciach fwnode posiadającego drugorzędny fwnode z więcej niż jednym dzieckiem. Powoduje to wielokrotne zwracanie tych samych węzłów zamiast zakończenia iteracji.
- CVE-2026-89743Wysokie
W jądrze Linux funkcja nsm_sendrecv_msg_locked() zapisuje długość raportowaną przez urządzenie NSM bez ograniczenia jej do rozmiaru bufora odpowiedzi. Złośliwe lub błędne urządzenie może zgłosić zbyt dużą długość, co prowadzi do odczytu poza zakresem bufora i ujawnienia sąsiedniej pamięci sterty jądra.
- CVE-2026-89742Wysokie
W jądrze Linux funkcja dma_req_free() w RapidIO mport_cdev zwalnia referencję do mapowania przez kref_put(), a następnie ponownie używa wskaźnika req->map do odblokowania mutexa. Jeśli kref_put() zwolni ostatnią referencję, obiekt zostaje zwolniony i następuje użycie po zwolnieniu (use-after-free).
- CVE-2026-89741Wysokie
W jądrze Linux wycofano wcześniejszą poprawkę obsługi błędów w __video_register_device(), ponieważ powodowała podwójne zwolnienie pamięci. Interfejs V4L2 wymaga wywołania video_device_release() po niepowodzeniu rejestracji, ale put_device() już zwalniał strukturę.
- CVE-2026-89740Niskie ryzyko· EPSS 10%
W jądrze Linux sterownik serial: imx publikuje port w tablicy imx_uart_ports[] przed uart_add_one_port(), a wpis nie jest czyszczony przy niepowodzeniu dodania lub po usunięciu. Powstaje wiszący wskaźnik, przez który sąsiedni probe może zarejestrować współdzieloną konsolę.
- CVE-2026-89739Niskie ryzyko· EPSS 10%
W jądrze Linux występuje podatność use-after-free w sterowniku USB dwc3 (tryb gadget). Funkcja dwc3_gadget_free_endpoints zwalnia pamięć struktury dep, podczas gdy zakolejkowana praca opóźniona nostream_work może nadal być w trakcie wykonywania i odwoływać się do zwolnionej pamięci. Problem rozwiązano poprzez anulowanie pracy opóźnionej przed zwolnieniem pamięci.
- CVE-2026-89738Wysokie
W jądrze Linux w sterowniku USB gadget at91_udc, w trybie odpytywanego VBUS, timer i powiązany work item nie były zatrzymywane przed zwolnieniem struktury udc. Prowadziło to do użycia zwolnionej pamięci (use-after-free) podczas normalnego odłączenia sterownika lub błędu probe.
- CVE-2026-89737Niskie ryzyko· EPSS 6%
W jądrze Linux funkcja tbt_altmode_remove() zwalnia referencje plug i cable bez wstrzymania tbt->work. Funkcja robocza używa tych referencji i może się ponownie zakolejkować, a callbacki VDM mogą kolejkować ten sam element pracy.
- CVE-2026-89736Wysokie
W jądrze Linux w funkcji g_audio_cleanup() sterownika USB gadget u_audio występuje use-after-free. Funkcja snd_card_free_when_closed() zwraca asynchronicznie, a struktura snd_uac_chip jest zwalniana natychmiast, podczas gdy uchwyty ALSA (kctls) pozostają otwarte w przestrzeni użytkownika. Dostęp do tych uchwytów powoduje dereferencję zwolnionej pamięci.
- CVE-2026-89735Niskie ryzyko· EPSS 6%
W jądrze Linux w sterowniku USB gadget midi2 funkcja f_midi2_alloc_inst() tworzy domyślne grupy configfs, ale podczas demontażu funkcji lub czyszczenia EP nie jest wywoływane configfs_remove_default_groups(). Prowadzi to do wycieku pamięci struktur f_midi2_ep_opts i f_midi2_block_opts.
- CVE-2026-89734Niskie ryzyko· EPSS 6%
W jądrze Linux w sterowniku USB gadget uvc funkcja uvcg_video_init() przy niepowodzeniu kthread_run_worker() loguje błąd używając wskaźnika video->uvc, który nie jest jeszcze przypisany. Powoduje to dereferencję null pointera.
- CVE-2026-89733Wysokie
W jądrze Linux w sterowniku USB gadget uvc funkcje uvc_function_bind() i uvc_function_unbind() pozostawiają wiszące wskaźniki uvc->control_req i uvc->control_buf po zwolnieniu. Prowadzi to do use-after-free.
- CVE-2026-89732Niskie ryzyko· EPSS 12%
W jądrze Linux w funkcji ffs_ep0_read() interfejsu USB gadget FunctionFS występował zakleszczenie (deadlock). Funkcja zasypiała z trzymanym muteksem ffs->mutex, co przy jednoczesnym demontażu gadżetu przez configfs (np. echo "" > UDC) i pętli read() demona przestrzeni użytkownika prowadziło do trwałego zakleszczenia. Poprawka zwalnia muteks przed snem i używa wait_event_interruptible_exclusive().
- CVE-2026-89731Wysokie
W jądrze Linux funkcja cxl_rch_get_aer_info() odczytuje rejestry AER poza mapowanym blokiem, ponieważ sizeof(struct aer_capability_regs) jest większy niż fizyczny rozmiar możliwości AER. Nadmiarowy odczyt może dodatkowo spowodować drugi out-of-bounds w pcie_print_tlp_log().
- CVE-2026-89730Niskie ryzyko· EPSS 10%
W jądrze Linux w sterowniku fpga altera-cvp funkcja altera_cvp_send_block() dereferencjonuje wskaźnik u32 nawet gdy w buforze pozostaje tylko 1-3 bajty. Może to spowodować odczyt poza zakresem, jeśli bufor kończy się na granicy strony lub scatterlist.
- CVE-2026-89729Wysokie
W jądrze Linux w sterowniku HID sensor-hub funkcja sensor_hub_get_feature() ogranicza wartość zwracaną, ale pętla kopiowania nadal kopiuje field->report_size / 8 bajtów na wartość. Złośliwy deskryptor HID może spowodować out-of-bounds write, gdy wywołujący IIO dostarczy mały bufor.
- CVE-2026-89728Niskie ryzyko· EPSS 5%
W jądrze Linux w sterowniku i3c renesas funkcja obliczająca maskę nowo wykrytych urządzeń nie uwzględnia przypadku pustej magistrali. Gdy magistrala jest pusta, pole długości danych zawiera maksymalną liczbę urządzeń (8), co prowadzi do dostępu poza zakresem.
- CVE-2026-89727Niskie ryzyko· EPSS 5%
W jądrze Linux w KVM arm64 GICv2 funkcja vgic_v2_deactivate() przekazuje INTID zapisany przez gościa do GICV_DIR bezpośrednio do vgic_get_vcpu_irq() i traktuje nieudane wyszukanie jako niemożliwe, wywołując WARN_ON_ONCE(). Gość może to wywołać dowolnie, powodując panikę hosta z panic_on_warn.
- CVE-2026-89726Niskie ryzyko· EPSS 6%
W jądrze Linux funkcja ucs2_strnlen() w lib/ucs2_string.c sprawdza bieżący znak przed sprawdzeniem, czy osiągnięto maksymalną długość podaną przez wywołującego. Jeśli dane wejściowe nie są zakończone znakiem NUL w tym zakresie, pętla może odczytać jeden element ucs2_char_t poza limitem, powodując odczyt poza granicami bufora o jeden bajt.
- CVE-2026-89725Wysokie
W jądrze Linux sterownik media: cec: stm32 w funkcji stm32_rx_done() dopisuje każdy odebrany bajt CEC do rx_msg.msg[] używając rx_msg.len jako indeksu, bez sprawdzania go względem rozmiaru bufora. Bufor rx_msg.msg[] ma stały rozmiar CEC_MAX_MSG_SIZE (16) bajtów, a liczba bajtów przed RXEND jest kontrolowana przez zdalne urządzenie CEC, co pozwala na zapis poza granicami bufora.
- CVE-2026-89724Wysokie
W jądrze Linux sterownik media: vicodec w funkcji fwht_encode_frame() koduje jedną płaszczyznę na komponent, a niekompresowalna płaszczyzna trafia na ścieżkę FWHT_FRAME_UNENCODED kopiując płaszczyznę dosłownie. Dla formatu 4-komponentowego wszystkie cztery płaszczyzny są w pełnej rozdzielczości, więc ramka wymuszająca fallback zapisuje więcej bajtów niż rozmiar bufora, powodując zapis poza granicami o coded_w * coded_h.
- CVE-2026-89723Wysokie
W jądrze Linux naprawiono błąd przepełnienia bufora (slab-out-of-bounds) w funkcji nilfs_direct_propagate() systemu plików nilfs2. Po obcięciu pliku blok węzła B-drzewa pozostawał w pamięci podręcznej w stanie zabrudzonym, a następnie był błędnie przetwarzany jako wpis mapowania bezpośredniego, co powodowało nieprawidłowy dostęp do pamięci. Problem rozwiązano poprzez dodanie operacji nilfs_btree_discard() usuwającej osierocony blok węzła podczas konwersji mapowania.
- CVE-2026-89722Niskie ryzyko· EPSS 10%
W jądrze Linux naprawiono podatność w funkcji pci_write_legacy_io() w podsystemie PCI/sysfs. Funkcja odczytywała bezwarunkowo 4 bajty z bufora zapisu kernfs, nawet gdy użytkownik zapisał tylko 1 lub 2 bajty, co powodowało odczyt poza granicami przydzielonej pamięci (slab-out-of-bounds). Dodatkowo na platformie PowerPC (little-endian, POWER8 i nowsze) przesunięcia bajtów powodowały zapis nieprawidłowego bajtu poza zakresem.
- CVE-2026-89721Niskie ryzyko· EPSS 10%
W jądrze Linux sterownik phy: rockchip-samsung-dcphy ma nieprawidłową wartość max_register ustawioną na 0x10000, podczas gdy blok rejestrów PHY ma 64KB, więc ostatni dostępny rejestr znajduje się pod offsetem 0xfffc. Zrzut rejestrów przez regmap debugfs odczytuje poza zmapowany region i powoduje oops na niezmapowanej stronie.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

