CVE-2026-99228
NieznaneStreszczenie
W jądrze Linux naprawiono błąd w io_uring/io-wq, w którym sygnał kończący pracę mógł zostać utracony. Gdy wątek kończy działanie, jego io-wq jest zamykane, a pracownicy są budzeni sygnałem, ale pracownik, który nie rozpoczął jeszcze pracy, mógł ten sygnał utracić. Prowadziło to do zawieszenia wątku w do_exit() np. przy IORING_OP_OPENAT na FIFO bez pisarza z IOSQE_ASYNC.
Ocena ryzyka
Podatność może powodować zawieszanie się wątków aplikacji korzystających z io_uring, co prowadzi do niedostępności usługi lub wycieku zasobów. Występuje w sytuacjach otwierania FIFO bez drugiego końca z flagą asynchroniczną.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę. Jeśli nie jest to możliwe, unikaj asynchronicznego otwierania FIFO bez pisarza w aplikacjach korzystających z io_uring.
Inne podatności w Linux kernel
Zobacz wszystkie- CVE-2026-58942Wysokie
W funkcji do_fault_around pliku memory.c występuje możliwe użycie po zwolnieniu (use after free) spowodowane błędem logicznym w kodzie. Może to doprowadzić do lokalnej eskalacji uprawnień bez potrzeby dodatkowych uprawnień wykonawczych.
- CVE-2026-58847Nieznane
W funkcji kvm_vfio_pviommu_attach w pliku vfio.c występuje możliwość podwójnego zwolnienia (double free) wynikająca z błędu logicznego w kodzie. Może to prowadzić do lokalnego podniesienia uprawnień bez konieczności posiadania dodatkowych uprawnień. Do wykorzystania nie jest wymagana interakcja użytkownika.
- CVE-2026-58829Wysokie
W funkcji fuse_backing_mmap pliku backing.c występuje możliwość uszkodzenia pamięci z powodu użycia po zwolnieniu (use after free). Może to prowadzić do lokalnego podniesienia uprawnień bez potrzeby dodatkowych uprawnień wykonawczych.
- CVE-2026-58828Wysokie
W wielu funkcjach pliku base.c występuje możliwość użycia po zwolnieniu (use after free) z powodu warunku wyścigu. Może to prowadzić do lokalnego podniesienia uprawnień bez potrzeby dodatkowych uprawnień wykonawczych.
- CVE-2026-58827Wysokie
W wielu funkcjach pliku dma-buf.c występuje możliwość użycia po zwolnieniu (use after free) z powodu warunku wyścigu. Może to prowadzić do lokalnego podniesienia uprawnień bez potrzeby dodatkowych uprawnień wykonawczych.
- CVE-2026-58826Wysokie
W funkcji ksys_unshare pliku fork.c występuje możliwość uszkodzenia pamięci z powodu użycia po zwolnieniu (use after free). Może to prowadzić do lokalnego podniesienia uprawnień bez potrzeby dodatkowych uprawnień wykonawczych.
- CVE-2026-58825Wysokie
W wielu funkcjach pliku fork.c występuje możliwość użycia po zwolnieniu (use after free) z powodu błędu logicznego w kodzie. Może to prowadzić do lokalnego podniesienia uprawnień bez potrzeby dodatkowych uprawnień wykonawczych.
- CVE-2026-99242Nieznane
W jądrze Linux naprawiono wyścig w systemie plików NTFS między fallocate a odczytami przez mmap. Fallocate brał invalidate_lock tylko dla operacji punch hole, collapse range i insert range, a przy standardowej alokacji nowe klastry były mapowane przed wyzerowaniem, co pozwalało równoległym błędom stron mmap odczytać niezainicjalizowane dane z dysku.
- CVE-2026-99241Nieznane
W jądrze Linux naprawiono brak blokady w ntfs_filemap_page_mkwrite(), która wywoływała iomap_page_mkwrite() bez trzymania mapping->invalidate_lock. Równoległy truncate lub fallocate mógł w tym czasie unieważniać pagecache i przepisywać runlist, powodując wyścig z mapowaniem bloków i zabrudzaniem folio.
- CVE-2026-99240Nieznane
W jądrze Linux w podsystemie DAMON (mm/damon/core) występuje błąd dzielenia przez zero, gdy cel kwoty DAMOS (damos_quota_goal) ma wartość target_value równą zero. Poprawka przenosi obsługę tego przypadku do warstwy rdzeniowej, dodając walidację w funkcji damos_commit_quota_goal(), która teraz zwraca błąd przy zerowej wartości docelowej.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: io_uring/io-wq: don't lose the signal that ends work When a thread exits, only its tracked requests are cancelled. Then its io-wq is torn down. io_wq_exit_workers() signals every worker, to get it out of an interruptible sleep, and waits for all of them to exit. Before they do, they go through the work that is left. Unbounded work is cancelled. Bounded work is run, as it is expected to end by itself. Not all of it does. An open has no file yet, so it counts as bounded, and the open of a FIFO waits for the other end. That is what the signal is for. But the workers are signalled once, and a worker that hasn't started the work by then loses the signal: io_wq_exit_workers() io_worker_handle_work() io_wq_worker_wake() set TIF_NOTIFY_SIGNAL io_assign_current_work() io_run_task_work() clear TIF_NOTIFY_SIGNAL io_wq_submit_work() fifo_open() wait_for_partner() wait_for_completion_timeout() The thread never gets out of do_exit(): IORING_OP_OPENAT of a FIFO without a writer, IOSQE_ASYNC exit of the thread that has submitted it hangs in more than 9 of 10 attempts (4 CPUs, KVM), until the process is killed. Set TIF_NOTIFY_SIGNAL for bounded work that is started with IO_WQ_BIT_EXIT set. The bit is set before the workers are signalled, and it is tested after the flag has been cleared, with clear_notify_signal() providing the barrier. So either the flag stays, or the bit is seen. Work that is started while the io-wq exits is treated like work that is being run at that time: it isn't interrupted unless it waits interruptibly.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

