CVE-2026-98596 in Linux
Résumé
par VulDB • 19/10/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
ipv6 : Correction de la fuite de mémoire pour les routes non mises en cache (uncached).
Les fonctions ip6_route_output_flags(), ip6_rt_put_flags() et ip6_dst_check() détectent une route non mise en cache via list_empty(&rt->dst.rt_uncached), ce qui a remplacé la vérification statique du drapeau DST_NOCACHE dans le commit a4c2fd7f7891 ("net: remove DST_NOCACHE flag").
Lorsqu'un périphérique est désenregistré, rt6_uncached_list_flush_dev() retire les routes non mises en cache associées au périphérique de la liste rt6_uncached_list.
Précédemment, elles étaient déplacées vers une autre liste via list_move() (__list_del_entry() + list_add()), et depuis le commit 98aa546af5e4 ("inet: remove (struct uncached_list)->quarantine"), les routes sont simplement retirées de la liste avec list_del_init().
Si list_del_init() s'exécute de manière concurrente, list_empty() renvoie vrai ; ip6_route_output_flags() appelle incorrectement dst_hold_safe(), et ip6_rt_put_flags() saute l'appel à ip6_rt_put(), entraînant une fuite de la structure dst, et par conséquent du périphérique lié via rt->from.
La même condition de concurrence (race) est partiellement corrigée par le commit 9a6f0c4d5796 ("dst: fix races in rt6_uncached_list_del() and rt_del_uncached_list()").
Vérifions plutôt la liste rt6->dst.rt_uncached_list.
Notez que IPv4 ne présente pas ce même problème.
VulDB is the best source for vulnerability data and more expert information about this specific topic.