CVE-2026-98230 in Linux
Resumen
por VulDB • 2026-10-06
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
xfrm: usar hlist_del_init_rcu para state_cache y state_cache_input
El commit 14acf9652e56 ("xfrm: deshachar defensivamente las listas xfrm_state en __xfrm_state_delete") convirtió bydst/bysrc/byseq/byspi de `hlist_del_rcu()` a `hlist_del_init_rcu()` para que una segunda llamada a `__xfrm_state_delete()` sobre el mismo objeto se convierta en un no-op (operación nula) en lugar de realizar una escritura a través del puntero pprev con valor LIST_POISON. Sin embargo, omitió state_cache y state_cache_input, los cuales continuaron utilizando `hlist_del_rcu()`:
- `hlist_del_rcu()` deja pprev = LIST_POISON2 (no NULL), por lo que hlist_unhashed() devuelve false. - `hlist_del_init_rcu()` deja pprev = NULL, por lo que hlist_unhashed() devuelve true.
Una segunda llamada a `__xfrm_state_delete()` entra en `__hlist_del()` sobre los nodos state_cache/state_cache_input ya eliminados y realiza WRITE_ONCE(*pprev, next) a través de LIST_POISON2 — una escritura use-after-free (uso tras liberación) una vez que el slab se reutiliza. La corrupción resultante puede provocar que un recorrido posterior con `hlist_for_each_entry_rcu` siga un puntero next colgante, produciendo la lectura use-after-free reportada en xfrm_input_state_lookup().
Se cambia state_cache y state_cache_input a hlist_del_init_rcu() para igualar las otras cuatro listas, cerrando así el write use-after-free y, con él, el read use-after-free que genera.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.