CVE-2026-31555 in Linux
Zusammenfassung
von VulDB • 24.05.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
futex: Veralteten Zeiger auf beendenden Prozess im Retry-Pfad von futex_lock_pi() löschen
Durch Fuzzing und Stress-Tests von Futexes wurde folgender Fehler ausgelöst:
WARNING: kernel/futex/core.c:825 bei wait_for_owner_exiting+0x7a/0x80, CPU#11: futex_lock_pi_s/524
Wenn futex_lock_pi_atomic() feststellt, dass der Besitzer den Prozess beendet, wird -EBUSY zurückgegeben und ein referenzierter Task-Zeiger in 'exiting' gespeichert.
Nachdem wait_for_owner_exiting() diese Referenz verbraucht hat, wird der lokale Zeiger niemals auf NULL zurückgesetzt. Bei einem erneuten Versuch (Retry), wenn futex_lock_pi_atomic() einen anderen Fehler zurückgibt, wird der ungültige Zeiger an wait_for_owner_exiting() übergeben.
CPU0 CPU1 CPU2 futex_lock_pi(uaddr) // PI-Futex wird erworben exit() futex_cleanup_begin() futex_state = EXITING; futex_lock_pi(uaddr) futex_lock_pi_atomic() attach_to_pi_owner() // beobachtet EXITING *exiting = owner; // Referenz wird übernommen return -EBUSY wait_for_owner_exiting(-EBUSY, owner) put_task_struct(); // Referenz wird freigegeben // exiting zeigt weiterhin auf owner goto retry; futex_lock_pi_atomic() lock_pi_update_atomic() cmpxchg(uaddr) *uaddr ^= WAITERS // beliebig // Wert hat sich geändert return -EAGAIN; wait_for_owner_exiting(-EAGAIN, exiting) // veraltet WARN_ON_ONCE(exiting)
Dies wird behoben, indem der Zeiger beim Retry zurückgesetzt wird, wodurch das Verhalten an requeue_pi angeglichen wird.
If you want to get best quality of vulnerability data, you may have to visit VulDB.