CVE Catalog

CVE-2026-74561

HighCVSS 8.8
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.11%

2th percentile - higher than 2% of all known CVEs

Summary

In the Linux kernel's nexthop module, there is a race condition in the nh_rt_cache_flush() function, which walks the f6i_list without holding the nh->lock. IPv6 route add/delete operations mutate that list under the lock and can free fib6_info entries, leading to a use-after-free. An attacker could exploit this to escalate privileges or cause a system crash.

Risk Assessment

The vulnerability could allow a local attacker to escalate privileges or cause a denial of service (DoS) by exploiting the race in IPv6 routing operations. However, it requires access to the rtnetlink interface, which is typically available to privileged users.

Recommendation

It is recommended to immediately update the Linux kernel to a version containing the fix that replaces the unsafe list walk with rt_genid_bump_ipv6() for the whole network namespace. Also, restrict access to the rtnetlink interface.

Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: nexthop: avoid unlocked f6i_list walk in nh_rt_cache_flush nh_rt_cache_flush() walks nh->f6i_list during an RTNL-serialized nexthop replace without holding nh->lock, racing the unlocked IPv6 route add/delete that mutate the list under nh->lock and free fib6_info entries (nh_rt_cache_flush() is inlined into rtm_new_nexthop()): BUG: KASAN: slab-use-after-free in nh_rt_cache_flush (net/ipv4/nexthop.c:2243) Read of size 8 at addr ffff888012953e18 by task exploit/146 nh_rt_cache_flush (net/ipv4/nexthop.c:2243) replace_nexthop (net/ipv4/nexthop.c:2610) rtm_new_nexthop (net/ipv4/nexthop.c:3323) rtnetlink_rcv_msg (net/core/rtnetlink.c:7076) Unlike the other f6i_list walks, this one bumps each route's sernum via fib6_update_sernum_upto_root(), which needs tb6_lock; taking nh->lock around it would invert the established tb6_lock -> nh->lock order and deadlock. As the only purpose is to invalidate cached dsts, bump the IPv6 sernum for the whole netns with rt_genid_bump_ipv6() instead, mirroring the rt_cache_flush() already done for IPv4 just above.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS