Katalog podatności CVE
Przetłumaczone opisy podatności z bazy NVD NIST - w języku polskim
Przeglądaj podatności według pakietuKatalog CISA KEV zaktualizowany: (v2026.11.04)
Cotygodniowy digest CVE
Jeden mail w tygodniu z nowo opublikowanymi podatnościami, o których warto wiedzieć. Bez zakładania konta.
Digest dotyczy ogólnie nowych podatności, nie Twoich serwerów. Jeśli chcesz wiedzieć, które z nich faktycznie działają w Twojej infrastrukturze, tym zajmuje się Secvalis : skanuje Twoje maszyny i zgłasza wyłącznie to, co ich dotyczy.
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.
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.
W jądrze Linux naprawiono podatność use-after-free (UAF) w module AppArmor, związaną z funkcją begin_current_label_crit_section(). Funkcja ta mogła bezpośrednio podmieniać wskaźniki poświadczeń (struct cred) w trakcie wywołania hooka LSM, co prowadziło do niespójności między task->cred a task->real_cred i w konsekwencji do zwolnienia pamięci poświadczeń, do których nadal odwoływały się inne zadania.
W jądrze Linux naprawiono błąd zapisu poza granicami bufora w funkcji aa_vec_unique() w module AppArmor. Gdy wszystkie komponenty etykiety są unikalne, terminator NULL trafia do vec[n], ale vec_setup() nie rezerwuje miejsca na ten dodatkowy wpis, co powoduje zapis jednego elementu poza końcem tablicy lokalnej lub alokacji. Podatność może być wywołana przez nieuprzywilejowanego użytkownika piszącego do /proc/self/attr/apparmor/current lub przez lsm_set_self_attr(2), a także przez plik .access w securityfs z uprawnieniami 0666.
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.
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.
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().
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

