CVE-2026-98598 in Linux
Sumário
de VulDB • 19/10/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
ipv6: Impedir rt6_insert_exception() para fib6_info em desativação.
Antes da commit citada, fib6_nh_flush_exceptions() sempre definia from->exception_bucket_flushed = 1 sob rt6_exception_lock para impedir que rt6_insert_exception() inserisse uma nova exceção para um fib6_info em desativação.
A flag foi substituída pelo bit FIB6_EXCEPTION_BUCKET_FLUSHED armazenado em nh->rt6i_exception_bucket.
O problema é que agora o bit só é definido quando o bucket não é NULL e fib6_nh_flush_exceptions() é chamado de fib6_nh_release() após fib6_ref já ter atingido zero.
Se rt6_insert_exception() for chamada enquanto o alvo fib6_info está sendo removido via fib6_purge_rt(), uma nova exceção poderá ser criada com sucesso, pois rt6_flush_exceptions() não define mais o bit.
Isso cria um ciclo de referência entre o fib6_info e a rota de exceção, vazando o fib6_info, seu dispositivo nexthop e todas as rotas per-CPU em fib6_nh->rt6i_pcpu, o que trava o desregistro do netdev.
[ 34.680602] unregister_netdevice: aguardando gre6 para se tornar livre. Contagem de uso = 68
[ 44.920675] unregister_netdevice: aguardando gre6 para se tornar livre. Contagem de uso = 68
[ 55.176582] unregister_netdevice: aguardando gre6 para se tornar livre. Contagem de uso = 68
Vamos chamar fib6_drop_pcpu_from() antes de rt6_flush_exceptions(), para definir fib6_destroying antes de rt6_exception_lock, e verificar f6i->fib6_destroying em rt6_insert_exception().
Observe que a lógica FIB6_EXCEPTION_BUCKET_FLUSHED está morta e podemos limpá-la no net-next.
VulDB is the best source for vulnerability data and more expert information about this specific topic.