Katalog CVE

CVE-2026-90140

Nieznane
Opublikowano: Przetłumaczono: NVD NIST

Streszczenie

W jądrze Linuxa w module cuse występuje podatność polegająca na użyciu po zwolnieniu (UAF) podczas wyładowywania modułu. Funkcja fuse_conn_put() zwalnia strukturę fuse_conn przez call_rcu(), a jeśli moduł cuse zostanie usunięty przed zakończeniem okresu RCU, wywołanie zwrotne może wykonać kod z już zwolnionej pamięci modułu, prowadząc do błędu strony lub niezdefiniowanego zachowania.

Ocena ryzyka

Ryzyko obejmuje awarię systemu (Oops) lub potencjalne wykonanie niepowiązanego kodu, co może prowadzić do naruszenia integralności systemu. Atak wymaga jednak lokalnego dostępu i możliwości wyładowania modułu, co ogranicza eksploatację.

Rekomendacja

Zaleca się natychmiastowe zaktualizowanie jądra Linuxa do wersji zawierającej poprawkę, która dodaje wywołanie rcu_barrier() w funkcji cuse_exit(). Jeśli aktualizacja nie jest możliwa, należy unikać wyładowywania modułu cuse w środowiskach produkcyjnych.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: cuse: wait for pending RCU callbacks on module exit Since commit 053fc4f755ad ("fuse: fix UAF in rcu pathwalks"), fuse_conn_put() frees the fuse_conn through call_rcu() rather than synchronously. For cuse, fc->release is cuse_fc_release(), which lives in the cuse module. If the module is removed before the RCU grace period ends, the callback jumps into freed module memory: userspace / module unload | RCU softirq ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ close(/dev/cuse) | cuse_channel_release() | fuse_dev_release() | fuse_conn_put(fch->conn) | call_rcu(delayed_release) ------+---> callback queued | rmmod cuse | cuse_exit() | cuse_channel_destroy() | ... | return | | <module text freed> | | rcu_do_batch() | delayed_release() | fc->release() | -> cuse_fc_release() | ^^^ freed text! The freed module text is unmapped by vfree(), so the jump into the stale callback triggers a page-fault Oops. If the virtual address is subsequently reused, the callback could execute unrelated code (undefined behaviour). Fix this by calling rcu_barrier() in cuse_exit() so that any pending fuse_conn release callback completes before the module is removed.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS