Katalog CVE

CVE-2026-98230

WysokieCVSS 7.0
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 podsystemie xfrm jądra Linux listy state_cache i state_cache_input nadal używają hlist_del_rcu() zamiast hlist_del_init_rcu(), przez co po usunięciu pozostawiają pprev = LIST_POISON2 (nie-NULL). Drugie wywołanie __xfrm_state_delete() na tym samym obiekcie wykonuje zapis przez LIST_POISON2, powodując write use-after-free, a w konsekwencji read use-after-free podczas późniejszego przechodzenia listy.

Ocena ryzyka

Może to prowadzić do uszkodzenia pamięci jądra i potencjalnej eskalacji uprawnień lub awarii systemu przy wielokrotnym usuwaniu stanu xfrm.

Rekomendacja

Zaktualizuj jądro Linux do wersji zawierającej poprawkę przełączającą state_cache i state_cache_input na hlist_del_init_rcu().

Powiązane podatności

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

In the Linux kernel, the following vulnerability has been resolved: xfrm: use hlist_del_init_rcu for state_cache and state_cache_input Commit 14acf9652e56 ("xfrm: defensively unhash xfrm_state lists in __xfrm_state_delete") converted bydst/bysrc/byseq/byspi from hlist_del_rcu() to hlist_del_init_rcu() so that a second __xfrm_state_delete() on the same object becomes a no-op rather than a write through LIST_POISON pprev. It missed state_cache and state_cache_input, which kept hlist_del_rcu(): - hlist_del_rcu() leaves pprev = LIST_POISON2 (non-NULL), so hlist_unhashed() returns false. - hlist_del_init_rcu() leaves pprev = NULL, so hlist_unhashed() returns true. A second __xfrm_state_delete() therefore enters __hlist_del() on the already-deleted state_cache/state_cache_input nodes and does WRITE_ONCE(*pprev, next) through LIST_POISON2 — a write use-after-free once the slab is reused. The corruption can in turn cause a subsequent hlist_for_each_entry_rcu traversal to follow a dangling next pointer, producing the read use-after-free reported in xfrm_input_state_lookup(). Switch state_cache and state_cache_input to hlist_del_init_rcu() to match the other four lists, closing the write use-after-free and, with it, the read use-after-free it spawns.

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