CVE-2026-68086
NieznaneStreszczenie
W jądrze Linux wykryto podatność w mechanizmie khugepaged, która może prowadzić do utraty danych. W szczególności, gdy plik jest zapisywany, zamykany, a następnie poddawany operacji MADV_COLLAPSE, a później ponownie otwierany do zapisu, brudne strony (dirty folios) mogą zostać bezpowrotnie usunięte. Problem dotyczy sytuacji, gdy khugepaged koliduje z wcześniejszymi zapisami, co skutkuje utratą danych.
Ocena ryzyka
Organizacja może doświadczyć nieoczekiwanej utraty danych w systemach plików, gdy używane są duże strony (THP) i operacje zapisu/odczytu plików. Atakujący lokalny może potencjalnie wykorzystać tę podatność do celowego usunięcia danych, co może prowadzić do naruszenia integralności danych.
Rekomendacja
Zaleca się natychmiastowe zastosowanie poprawek jądra Linux, które rozwiązują ten problem, jeśli są dostępne. W międzyczasie należy rozważyć wyłączenie funkcji khugepaged dla systemów plików, gdzie ryzyko utraty danych jest nieakceptowalne.
Inne podatności w Linux kernel
Zobacz wszystkie- CVE-2026-98432Nieznane
W jądrze Linux występuje podatność use-after-free w obsłudze opcji IPv4 dla gniazd TCP. Opcje ireq_opt są zwalniane zwykłym kfree(), mimo że inne wątki mogą ich jeszcze używać w ramach RCU (np. przy budowaniu SYNACK lub tworzeniu gniazda potomnego), co prowadzi do użycia zwolnionej pamięci w ip_options_build(). Problem dotyczy również migracji gniazd żądań (tcp_migrate_req).
- CVE-2026-98431Nieznane
W jądrze Linux występuje zakleszczenie (deadlock) typu ABBA pomiędzy blokadami mmap_lock i disassociation_lock w podsystemie RDMA/uverbs. Wątek wykonujący mmap/fork zakłada blokady w kolejności mmap_lock → disassociation_lock, natomiast wątek wykonujący uverbs_user_mmap_disassociate() w kolejności odwrotnej, co prowadzi do możliwego zakleszczenia. Problem został rozwiązany poprzez usunięcie disassociation_lock i użycie istniejącej blokady hw_destroy_rwsem.
- CVE-2026-98430Nieznane
W jądrze Linux w sterowniku RDMA/efa procedura obsługi przerwania zarządzającego uzyskuje dostęp zarówno do kolejki ukończeń administracyjnych, jak i do kolejki zdarzeń asynchronicznych. Sterownik rejestrował przerwanie przed utworzeniem tych kolejek i niszczył je przed zwolnieniem przerwania, przez co czas życia procedury obsługi nie był ograniczony przez zasoby, do których się odwołuje. Poprawka inicjalizuje kolejki z zamaskowanymi przerwaniami, rejestruje przerwanie, a następnie przełącza w tryb przerwań, a przy usuwaniu resetuje urządzenie i zwalnia przerwanie przed zniszczeniem kolejek.
- CVE-2026-98429Nieznane
W jądrze Linux w sterowniku RDMA/efa procedura obsługi przerwania ukończeń uzyskuje dostęp do stanu EQ i bufora DMA. Jej przerwanie było rejestrowane przed zainicjalizowaniem tego stanu, a demontaż zwalniał bufor przed free_irq() synchronizującym procedurę obsługi. Poprawka inicjalizuje EQ bez uzbrajania go, rejestruje przerwanie, a następnie je uzbraja, a przy demontażu zwalnia przerwanie przed zniszczeniem EQ.
- CVE-2026-98428Nieznane
W jądrze Linux sterownik USB 6fire używa URB osadzonych w różnych strukturach dla PCM, MIDI i komunikacji, co jest wadliwą implementacją; ponieważ URB jest zarządzany przez licznik referencji, może to prowadzić do użycia zwolnionej pamięci (UAF), gdy URB jest zwalniany asynchronicznie. Poprawka konwertuje te osadzone URB na alokowane przez usb_alloc_urb(), zamieniając każde osadzone struct urb na wskaźnik i aktualizując wywołania; zasoby są zwalniane w wspólnych destruktorach wywoływanych zarówno przy błędzie inicjalizacji, jak i przy odłączeniu.
- CVE-2026-98427Nieznane
W jądrze Linux w kodzie algorytmu CoDel (net/sched) pętla odrzucania w codel_dequeue() mogła nie przesuwać się do przodu przy bardzo małych wartościach interwału, co prowadziło do opróżnienia całego backlogu pod blokadą qdisc w jednym wywołaniu. Nieuprzywilejowany użytkownik mógł w ten sposób wywołać soft lockup. Poprawka ogranicza krok pętli do co najmniej 1 ticka oraz maksymalnie 256 odrzuceń na wywołanie codel_dequeue().
- CVE-2026-98426Nieznane
W jądrze Linux w sterowniku wifi mwifiex funkcja mwifiex_pcie_request_irq() rejestruje każdy wektor MSI-X z dev_id dla danego indeksu (&card->msix_ctx[i]). Przy błędzie request_irq() pętla czyszcząca "for (j = 0; j < i; j++)" zwalnia msix_entries[j].vector, ale przekazuje &card->msix_ctx[i] z nieudanego indeksu jako dev_id. Ponieważ free_irq() dopasowuje po (irq, dev_id), nie znajduje akcji zarejestrowanej z &card->msix_ctx[j]: już zarejestrowane przerwanie j nie jest zwalniane (wyciek), a free_irq() ostrzega o zwalnianiu nieistniejącego przerwania. Poprawka używa &card->msix_ctx[j].
- CVE-2026-98425Nieznane
W jądrze Linux funkcja ieee80211_request_ibss_scan() w module mac80211 wywołuje ostrzeżenie, gdy regdomain nie pozostawia żadnego dozwolonego kanału do skanowania. Sytuacja ta może wystąpić, ponieważ regdomain może się zmienić podczas pracy interfejsu IBSS, który może działać jeszcze przez 60-sekundowy okres karencji przed wyłączeniem. Poprawka usuwa to ostrzeżenie.
- CVE-2026-98424Nieznane
W jądrze Linux funkcja cfg80211_switch_netns() w module cfg80211 przenosi interfejsy, a następnie przenosi samo wiphy, ustawiając jego przestrzeń nazw sieci i zmieniając nazwę, co powoduje przeniesienie w sysfs. Zmiana nazwy może się nie powieść (tylko przy błędach alokacji), pozostawiając niespójny stan i wywołując ostrzeżenie. Poprawka cofa przeniesienie i pozwala operacji zakończyć się niepowodzeniem, a jeśli cofnięcie się nie powiedzie, wywołuje WARN.
- CVE-2026-98423Nieznane
W jądrze Linux moduł mac80211_hwsim sprawdza pole ->started dla ramek pochodzących z wmediumd, ale radio może zostać zatrzymane po sprawdzeniu, a przed dostarczeniem ramki, co powoduje wywołanie WARN_ON(!local->started) w mac80211. Poprawka rozszerza zakres blokady mutex i synchronizuje się z nią przy zatrzymywaniu radia, a także usuwa zbędny komunikat błędu.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: mm/khugepaged: write all dirty file folios when collapsing [There is no upstream commit, as this code was removed by upstream commit 044925f9b565 ("mm: fs: remove filemap_nr_thps*() functions and their users")] As-is, khugepaged and writable-file opening exclude each other. A file cannot be open writeable and have THPs (because the filesystem is not aware of them). khugepaged will never collapse file pages for files that are opened writeable. On an open(O_RDWR/O_WRONLY), the page cache for that particular file is dropped. This is fine because nothing could've been dirtied. However, there is an edge-case: collapse_file() might not be able to coexist with concurrent writers, but it can coexist with dirty folios (from previous writers). Therefore, the following can happen: open(file, O_RDWR) write(file) close(file) madvise(file_mapping, MADV_COLLAPSE, some non-dirty range) open(file, O_RDWR) nr_thps > 0 truncate_inode_pages() /* THPs are cleared out, but so are the dirty folios */ When this edge-case happens, there is data loss, as the dirty folios are fully discarded. Fix it by fully writing back the page cache (and waiting) when collapsing file THPs. Doing so provides the guarantee that no dirty folio will be observed while there are active THPs. To fully ensure this is safe, the invalidate_lock needs to be held while doing the writeout, so that do_dentry_open()'s page cache truncation excludes this write-and-wait. As a side effect, move the nr_thps counter bumping outside the i_pages lock. This is correct since the counter itself is an atomic_t and the producer <-> consumer correctness is provided by a full memory barrier: smp_mb() in collapse_file()/memory barrier implied by full ordering in get_write_access() -> atomic_inc_unless_negative().
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

