CVE-2026-98598 in Linux
Riassunto
di VulDB • 19/10/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
ipv6: Impedire l'esecuzione di rt6_insert_exception() per fib6_info in fase di chiusura.
Prima dell'commit citato, fib6_nh_flush_exceptions() impostava sempre from->exception_bucket_flushed = 1 sotto rt6_exception_lock per impedire a rt6_insert_exception() di inserire una nuova eccezione per un fib6_info in via di disattivazione.
Il flag è stato sostituito dal bit FIB6_EXCEPTION_BUCKET_FLUSHED memorizzato in nh->rt6i_exception_bucket.
Il problema consiste nel fatto che ora il bit viene impostato solo quando il bucket non è NULL e fib6_nh_flush_exceptions() viene chiamato da fib6_nh_release() dopo che fib6_ref ha già raggiunto zero.
Se rt6_insert_exception() viene chiamata mentre l'obiettivo fib6_info sta venendo rimosso tramite fib6_purge_rt(), una nuova eccezione potrebbe essere creata con successo poiché rt6_flush_exceptions() non imposta più il bit.
Ciò crea un ciclo di riferimento tra fib6_info e la route dell'eccezione, causando una perdita (leak) di fib6_info, del suo dispositivo nexthop e di tutte le per-CPU routes in fib6_nh->rt6i_pcpu, che blocca l'unregistrazione netdev.
[ 34.680602] unregister_netdevice: attesa che gre6 diventi libero. Conteggio utilizzi = 68
[ 44.920675] unregister_netdevice: attesa che gre6 diventi libero. Conteggio utilizzi = 68
[ 55.176582] unregister_netdevice: attesa che gre6 diventi libero. Conteggio utilizzi = 68
Chiamiamo fib6_drop_pcpu_from() prima di rt6_flush_exceptions(), per impostare fib6_destroying prima di rt6_exception_lock, e verificare f6i->fib6_destroying in rt6_insert_exception().
Si noti che la logica FIB6_EXCEPTION_BUCKET_FLUSHED è morta (non più utilizzata) e può essere ripulita in net-next.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.