Katalog CVE

CVE-2026-31555

ŚrednieCVSS 5.5
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.12%

Percentyl 2 - wyżej niż 2% wszystkich znanych CVE

Streszczenie

W jądrze Linux wykryto błąd w mechanizmie futex_lock_pi(), gdzie po ponownej próbie blokady nie był zerowany lokalny wskaźnik do wychodzącego wątku. Prowadziło to do ostrzeżenia WARN_ON_ONCE() przy przekazaniu nieaktualnego wskaźnika do wait_for_owner_exiting().

Ocena ryzyka

Podatność może powodować fałszywe alarmy (warning) i potencjalnie destabilizować system, utrudniając diagnostykę problemów z synchronizacją w aplikacjach wielowątkowych.

Rekomendacja

Zaleca się natychmiastową aktualizację jądra Linux do wersji zawierającej poprawkę resetującą wskaźnik 'exiting' przy ponownej próbie w futex_lock_pi().

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

In the Linux kernel, the following vulnerability has been resolved: futex: Clear stale exiting pointer in futex_lock_pi() retry path Fuzzying/stressing futexes triggered: WARNING: kernel/futex/core.c:825 at wait_for_owner_exiting+0x7a/0x80, CPU#11: futex_lock_pi_s/524 When futex_lock_pi_atomic() sees the owner is exiting, it returns -EBUSY and stores a refcounted task pointer in 'exiting'. After wait_for_owner_exiting() consumes that reference, the local pointer is never reset to nil. Upon a retry, if futex_lock_pi_atomic() returns a different error, the bogus pointer is passed to wait_for_owner_exiting(). CPU0 CPU1 CPU2 futex_lock_pi(uaddr) // acquires the PI futex exit() futex_cleanup_begin() futex_state = EXITING; futex_lock_pi(uaddr) futex_lock_pi_atomic() attach_to_pi_owner() // observes EXITING *exiting = owner; // takes ref return -EBUSY wait_for_owner_exiting(-EBUSY, owner) put_task_struct(); // drops ref // exiting still points to owner goto retry; futex_lock_pi_atomic() lock_pi_update_atomic() cmpxchg(uaddr) *uaddr ^= WAITERS // whatever // value changed return -EAGAIN; wait_for_owner_exiting(-EAGAIN, exiting) // stale WARN_ON_ONCE(exiting) Fix this by resetting upon retry, essentially aligning it with requeue_pi.

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