CVE-2026-89675
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 6 - wyżej niż 6% wszystkich znanych CVE
Streszczenie
W jądrze Linux naprawiono podatność use-after-free (UAF) w mechanizmie asynchronicznego kopiowania NFS (nfsd). Wyścig między wątkiem kopiującym a procedurami zamykania (OFFLOAD_CANCEL, nfsd4_shutdown_copy, nfsd4_cancel_copy_by_sb) mógł prowadzić do zwolnienia lub użycia zwolnionej struktury kopii, podwójnego zwolnienia nfsd_file oraz odwołań do zwolnionego task_struct.
Ocena ryzyka
Podatność może prowadzić do uszkodzenia pamięci jądra, awarii systemu (panic) lub potencjalnego wykonania kodu w kontekście jądra. Dotyczy serwerów NFS z włączoną obsługą asynchronicznego kopiowania (offload), co może zostać wykorzystane przez lokalnego lub zdalnego atakującego do destabilizacji systemu.
Rekomendacja
Zaktualizuj jądro Linux do wersji zawierającej poprawkę dla CVE-2026-89675. Jeśli aktualizacja nie jest możliwa, rozważ wyłączenie funkcji asynchronicznego kopiowania NFS (offload) do czasu wdrożenia poprawki.
Inne podatności w Linux kernel
Zobacz wszystkie- CVE-2026-80923Nieznane
W jądrze Linuxa w sterowniku xhci: dbgtty, jeśli tty_register_driver() zakończy się niepowodzeniem, zwalnia referencję, ale nie ustawia globalnego wskaźnika dbc_tty_driver na NULL, co powoduje ponowne wywołanie unregister podczas wyjścia z modułu. Prowadzi to do użycia po zwolnieniu (use-after-free).
- CVE-2026-80922Nieznane
W jądrze Linuxa w module crypto: qcom-rng, generator liczb losowych nie zezwala na wygenerowanie zera jako wyniku, co czyni jego wyjście odróżnialnym od prawdziwie losowego. Zero jest poprawną liczbą losową i powinno być dozwolone.
- CVE-2026-80920Nieznane
W jądrze Linuxa w io_uring, sygnalizacja eventfd jest wykonywana inline, gdy dodawany jest pierwszy wpis do listy pracy, co może prowadzić do problemów, gdy dodanie następuje z kontekstu wakeup handlera. Poprawka dodaje flagę IOU_F_TWQ_IN_WAKE, aby wymusić odroczenie sygnalizacji przez call_rcu_hurry() zamiast sygnalizacji inline.
- CVE-2026-80919Nieznane
W jądrze Linux w sterowniku amdgpu wykryto podatność polegającą na rekurencyjnym blokowaniu mutexu w funkcji amdgpu_devcoredump_format(). Podczas zrzutu zawartości IB z zawieszonego zadania dochodzi do podwójnego zablokowania tego samego obiektu synchronizującego, co może prowadzić do zakleszczenia systemu. Problem został naprawiony przez przeniesienie operacji do osobnej funkcji używającej jednego kontekstu drm_exec.
- CVE-2026-80918Nieznane
W jądrze Linuxa w HID: core, występuje pomyłka typu liczby i wskaźnika dla długich elementów. Gdy fetch_item() jest wywoływany przez hid_scan_report() na elemencie z HID_ITEM_TAG_LONG, przechowuje wskaźnik do danych w item->data.longdata zamiast wartości. Funkcje item_udata() i item_sdata() błędnie zakładają format krótki, co prowadzi do ujawnienia dolnej części wskaźnika jądra jako liczby w dmesg.
- CVE-2026-80917Nieznane
W jądrze Linux wykryto podatność prowadzącą do wyłuskania wskaźnika NULL w sterowniku PCI host-generic na 32-bitowych systemach używających trybu CAM. Podczas skanowania magistrali PCI pierwszy odczyt konfiguracji używa niezainicjalizowanego mapowania, co powoduje awarię systemu (kernel panic). Problem dotyczy braku wywołań zwrotnych add_bus/remove_bus w operacjach CAM, które są wymagane do poprawnego mapowania przestrzeni konfiguracyjnej.
- CVE-2026-80916Nieznane
W jądrze Linux wykryto podatność w mechanizmie KCOV, powodującą uszkodzenie danych i wyścigi na systemach z włączonym PREEMPT_RT. Problem wynika z przechowywania tymczasowych danych stanu KCOV w obszarze per-CPU, co przy zagnieżdżonym przełączaniu kontekstu przez softirq prowadzi do nadpisania stanu. Dodatkowo, w pewnych warunkach inicjalizacji może dojść do awarii jądra lub wycieku pamięci.
- CVE-2026-80915Nieznane
W jądrze Linux w sterowniku drm/xe naprawiono ścieżki alokacji DPT. Usunięto mechanizm awaryjnego przełączania z pamięci VRAM na pamięć systemową, ponieważ nie działał poprawnie i powodował czarny ekran z błędami potoku. Dodatkowo uniknięto używania pamięci stolen ze względu na opóźnienia i ryzyko losowych zawieszeń systemu pod obciążeniem.
- CVE-2026-80886Nieznane
W jądrze Linux naprawiono podatność w sterowniku szeregowym msm, polegającą na wyłączeniu DMA dla konsoli UART. Jednoczesne zapisy z przestrzeni użytkownika i jądra mogą powodować wyścig, prowadzący do nieskończonej pętli drukowania tych samych komunikatów. Poprawka wyłącza DMA dla konsoli UART, aby zapewnić niezawodną ścieżkę wyjścia.
- CVE-2026-80885Nieznane
W jądrze Linux naprawiono problem w AFS dotyczący nieanulowanego handlera komunikatów OOB rxrpc. Poprawka anuluje przetwarzanie komunikatów OOB (zwykle w odpowiedzi na wyzwania bezpieczeństwa) oraz przenosi to przetwarzanie do kolejki afs_wq, aby było ono oczekiwane. Handler OOB zwraca teraz, jeśli przestrzeń nazw sieci nie jest już aktywna.
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: nfsd: fix UAF in async copy cancel and shutdown An async copy could be freed or used after free while a teardown caller (OFFLOAD_CANCEL, nfsd4_shutdown_copy, nfsd4_cancel_copy_by_sb) raced the copy kthread: - find_async_copy() bumped copy->refcount but left the copy on clp->async_copies, so the reaper's cleanup_async_copy() could run release_copy_files() concurrently with a cancel/shutdown caller. Both put and NULL nf_src/nf_dst without a common lock, double-putting the nfsd_file and freeing it early. - nfsd4_do_async_copy() set NFSD4_COPY_F_STOPPED before its final uses of the copy (nfsd_update_cmtime_attr() on copy->nf_dst, nfsd4_send_cb_offload()). nfsd4_stop_copy() treats a set STOPPED bit as "kthread done, skip kthread_stop()", so a teardown caller ran release_copy_files() -- which puts and NULLs nf_dst -- while the kthread still dereferenced it (NULL/UAF). - copy->copy_task was never pinned. The one-shot kthread self-reaps on return, so kthread_stop()'s get_task_struct() could touch a freed task_struct. - co_cb is embedded in the copy, but nfsd4_send_cb_offload() held a reference only on the client, so a concurrent teardown could free the copy while the CB_OFFLOAD callback was in flight. Fix the teardown lifetime as a whole: - find_async_copy() unlinks the copy (clear cp_clp, list_del_init) under async_lock; the cancel, shutdown, and sb-cancel paths drop the list-membership reference via nfs4_put_copy() after nfsd4_stop_copy(). Drop the now-redundant list_del fixup from cleanup_async_copy(). - Because unlinking hides the copy from the reaper, its cleanup_async_copy() can no longer remove the copy's s2s_cp_stateids entry; the cancel/shutdown/sb-cancel paths now call nfs4_free_copy_state() themselves (while cp_clp is still valid) so the entry does not dangle at freed memory for the laundromat and manage_cpntf_state() to dereference. - Give the kthread its own reference, taken in nfsd4_copy() before wake_up_process() and dropped at the end of nfsd4_do_async_copy(); call wake_up_process() before list_add(). - Pin the task_struct with get_task_struct() in nfsd4_copy(), released in nfs4_put_copy(), so kthread_stop() is safe whenever the kthread exits. Set NFSD4_COPY_F_STOPPED only in nfsd4_stop_copy(), which now always kthread_stop()s before release_copy_files(); completion is still reported via NFSD4_COPY_F_COMPLETED, so nfsd4_has_active_async_copies() is unaffected. Each teardown caller removes the copy from clp->async_copies first, so kthread_stop() runs exactly once. - Take a copy reference in nfsd4_send_cb_offload(), dropped in nfsd4_cb_offload_release(). The kthread still holds its own reference there, so the refcount_inc() cannot race the final free. - Read cp_clp with smp_load_acquire() to pair with the unordered set_bit()/clear_bit() writers (Documentation/atomic_bitops.rst).

