CVE-2026-74581Memory corruption in Linux kernel IPv6 stack
In the Linux kernel, the following vulnerability has been resolved: net: ipv6: clear suppressed fib6 rule result fib6_rule_suppress() drops a suppressed route with ip6_rt_put_flags(), but leaves res->rt6 pointing at the released rt6_info. If no later rule supplies a replacement, fib6_rule_lookup() still sees res.rt6 and returns that stale dst to its caller. A suppressing rule can therefore leak a released route back to rt6_lookup(), and the next put hits rcuref_put_slowpath() from dst_release(). Clear res->rt6 when suppressing the route so suppressed lookups fall through to the null dst instead of reusing the released one.
View on NVDAnalysis
A critical vulnerability was found in the Linux kernel IPv6 routing stack. A stale pointer in the routing rule suppression logic can lead to a use-after-free condition, potentially allowing for system crashes or arbitrary code execution via network-triggered routing lookups.
Relevant roles
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HEPSS
Technical description
In the Linux kernel, the following vulnerability has been resolved: net: ipv6: clear suppressed fib6 rule result fib6_rule_suppress() drops a suppressed route with ip6_rt_put_flags(), but leaves res->rt6 pointing at the released rt6_info. If no later rule supplies a replacement, fib6_rule_lookup() still sees res.rt6 and returns that stale dst to its caller. A suppressing rule can therefore leak a released route back to rt6_lookup(), and the next put hits rcuref_put_slowpath() from dst_release(). Clear res->rt6 when suppressing the route so suppressed lookups fall through to the null dst instead of reusing the released one.
References
- https://git.kernel.org/stable/c/354db6243eca59e9d187ffbf8b7955b044ce84dc
- https://git.kernel.org/stable/c/5d29b286c9de0b309e94b9ed083aa1a2f429434f
- https://git.kernel.org/stable/c/6aea62e433fe1b586202a5fee8b5807ce635e1d7
- https://git.kernel.org/stable/c/6d98c70fe0ba8c7708bfd5b2a5174d2086775daa
- https://git.kernel.org/stable/c/90c57310e266eb94e4a80d6b15a9ca131d2e82cb
- https://git.kernel.org/stable/c/9bad152c42b37499162367fe47867411e62fffa3
- https://git.kernel.org/stable/c/a341c091ca0bfae377747b1b59a3bd8ebe18a937
- https://git.kernel.org/stable/c/dc3ab04220667f254f4348572b2a0b3febff89fb