Look up another CVE · open CVE-2026-74561 in the interactive tracker
CVE-2026-74561
nexthop: avoid unlocked f6i_list walk in nh_rt_cache_flush
Published 2026-08-15 (2 months ago) by the Linux kernel CNA. Subsystem net/ipv4. Debian urgency: unimportant.
What to do, per Debian release
Debian's own status for CVE-2026-74561 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source
| Release | Status | Version | What this means |
|---|---|---|---|
| Debian 12bookworm | not affected | 6.1.190-1 | Nothing to do. bookworm never shipped the vulnerable code. |
| Debian 13trixie | not affected | 6.12.113-1 | Nothing to do. trixie never shipped the vulnerable code. |
| Debian 14forky | fixed | 7.1.8-1 | Update the kernel and reboot. Fixed in 7.1.8-1. A running kernel keeps the old code until the machine restarts. |
| Debian unstablesid | fixed | 7.1.8-1 | Update the kernel and reboot. Fixed in 7.1.8-1. A running kernel keeps the old code until the machine restarts. |
The vulnerability
What the bug is
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.
Where it lives
The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.
net/ipv4/nexthop.c
- What this is
- NETWORKING [IPv4/IPv6]MAINTAINERS section matched on net/ipv4/nexthop.c · netdev@vger.kernel.org · Maintained
Check it on the machine
grep -w CONFIG_INET /boot/config-$(uname -r)Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.
Show whether Debian builds this, per release
Debian builds this code. Every release below compiles the affected file into the kernels it ships.
- bookworm, trixie, forky, sidy
- y
- built into the kernel image on every flavour - only a patch removes it
- Build switch
- CONFIG_INET
From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages
Signals
- Published
- 2026-08-15 (2 months ago)source
- CVSS
- 8.8 high
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:Hsource recompute it - Attack vector
- local (AV:L)source
- EPSS
- 0.17%, higher than 5.8% of all CVEssource
- CISA KEV
- not listedthe KEV catalogue
- Debian urgency
- unimportantsource
- Subsystem
- net/ipv4
Upstream fixes
The versions the CNA records as introducing and fixing this, and the commit for each. source
| Introduced | Fixed in | Commit |
|---|---|---|
| 6.16 | 6.18.57 | f97fae992155 |
| 6.16 | 7.1.8 | 44f53e4331a3 |
| 6.16 | 7.2 | 4787a6d2629b |
Why the CNA scored it this way
Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source
- AV:LAttack vector, local
- The slab use-after-free is reached only via local RTNETLINK on AF_NETLINK sockets: RTM_NEWNEXTHOP with NLM_F_REPLACE drives replace_nexthop()->nh_rt_cache_flush(), racing concurrent RTM_NEWROUTE/RTM_DELROUTE IPv6 route changes; it is not triggered by remote packet processing.
- AC:LAttack complexity, low
- The race is attacker-controlled: one thread replaces a nexthop under rtnl_net_lock while another concurrently adds/deletes IPv6 routes via unlocked inet6_rtm_newroute/inet6_rtm_delroute handlers; Microsoft reproduced reliable KASAN slab-use-after-free with this pattern.
- PR:LPrivileges required, low
- rtnetlink_rcv_msg() requires CAP_NET_ADMIN via netlink_net_capable() for all non-GET handlers; unprivileged local users obtain this inside a user/network namespace (unshare -Urn), not only init-namespace root.
- UI:NUser interaction, none
- No victim interaction is required; exploitation is fully attacker-driven through coordinated local netlink nexthop replace and IPv6 route add/delete commands from attacker-controlled processes.
- S:CScope, changed
- A successful UAF from CAP_NET_ADMIN inside an unprivileged user/network namespace corrupts host kernel slab memory and can escape the namespace/container sandbox to compromise the host system, crossing the container-to-host security boundary.
- C:HConfidentiality impact, high
- The unlocked nh->f6i_list walk dereferences freed fib6_info objects (KASAN read of size 8 at nh_rt_cache_flush), enabling arbitrary kernel memory disclosure via slab heap reuse of attacker-groomed objects.
- I:HIntegrity impact, high
- Beyond the UAF read, fib6_update_sernum_upto_root() writes fn_sernum through stale fib6_info/fib6_table pointers; slab UAF on fib6_info provides memory corruption primitives for arbitrary kernel writes and local privilege escalation.
- A:HAvailability impact, high
- The confirmed KASAN slab-use-after-free in nh_rt_cache_flush during nexthop replace causes kernel oops/panic; UAF list walks are inherently crash-prone and can be triggered repeatedly for denial of service.