CVE-2026-46099·Kernel vulnerability
In the Linux kernel, the following vulnerability has been resolved: net: ipv6: fix NOREF dst use in seg6 and rpl lwtunnels seg6_input_core() and rpl_input() call ip6_route_input() which sets a NOREF dst on the skb, then pass it to dst_cache_set_ip6() invoking dst_hold() unconditionally. On PREEMPT_RT, ksoftirqd is preemptible and a higher-priority task can release the underlying pcpu_rt between the lookup and the caching through a concurrent FIB lookup on a shared nexthop. Simplified race sequence: ksoftirqd/X higher-prio task (same CPU X) ----------- -------------------------------- seg6_input_core(,skb)/rpl_input(skb) dst_cache_get() -> miss ip6_route_input(skb) -> ip6_pol_route(,skb,flags) [RT6_LOOKUP_F_DST_NOREF in flags] -> FIB lookup resolves fib6_nh [nhid=N route] -> rt6_make_pcpu_route() [creates pcpu_rt, refcount=1] pcpu_rt->sernum = fib6_sernum [fib6_sernum=W] -> cmpxchg(fib6_nh.rt6i_pcpu, NULL, pcpu_rt) [slot was empty, store succeeds] -> skb_dst_set_noref(skb, dst) [dst is pcpu_rt, refcount still 1] rt_genid_bump_ipv6() -> bumps fib6_sernum [fib6_sernum from W to Z] ip6_route_output() -> ip6_pol_route() -> FIB lookup resolves fib6_nh [nhid=N] -> rt6_get_pcpu_route() pcpu_rt->sernum != fib6_sernum [W <> Z, stale] -> prev = xchg(rt6i_pcpu, NULL) -> dst_release(prev) [prev is pcpu_rt, refcount 1->0, dead] dst = skb_dst(skb) [dst is the dead pcpu_rt] dst_cache_set_ip6(dst) -> dst_hold() on dead dst -> WARN / use-after-free For the race to occur, ksoftirqd must be preemptible (PREEMPT_RT without PREEMPT_RT_NEEDS_BH_LOCK) and a concurrent task must be able to release the pcpu_rt. Shared nexthop objects provide such a path, as two routes pointing to the same nhid share the same fib6_nh and its rt6i_pcpu entry. Fix seg6_input_core() and rpl_input() by calling skb_dst_force() after ip6_route_input() to force the NOREF dst into a refcounted one before caching. The output path is not affected as ip6_route_output() already returns a refcounted dst.
- Severity
- high
- Software
- Kernel
- Fixed in
- 7.0.4
- Published
- 2026-05-27
Affected versions
From: 6.19
Until: 7.0.4
Fixed in: 7.0.4
How to fix this CVE
Update your Linux kernel to version 7.0.4 or later to resolve a critical race condition in IPv6 segment routing and RPL tunnel handling. This vulnerability affects kernel versions 6.19 through 7.0.3 and can lead to use-after-free conditions when NOREF destinations are improperly cached during concurrent FIB lookups on shared nexthop objects. Immediate patching is recommended for systems running affected kernel versions, particularly those with PREEMPT_RT enabled.
sudo dnf update kernel kernel-develDefensia detects this vulnerability
How to check if you are affected
- Step 1: Check your current kernel version with `uname -r` and confirm if it falls between 6.19 and 7.0.3
- Step 2: Verify if IPv6 segment routing or RPL tunnels are in use by running `cat /proc/net/ipv6_route | grep -E 'seg6|rpl'` or checking active tunnel interfaces with `ip link show | grep -E 'seg6|rpl'`
- Step 3: Search kernel logs for use-after-free or memory-related warnings with `sudo dmesg | grep -i 'use.after.free\|dst_hold\|WARN'` and check system logs with `sudo journalctl -u kernel --since='1 hour ago' | grep -i 'warn\|segfault\|fault'`
- Step 4: After updating the kernel, reboot your system with `sudo reboot` and verify the new version with `uname -r` to confirm it is 7.0.4 or later
FAQ
What is CVE-2026-46099?
CVE-2026-46099 is a race condition vulnerability in the Linux kernel's IPv6 routing code affecting segment routing (seg6) and RPL tunnel implementations. When concurrent FIB lookups occur on shared nexthop objects, a NOREF destination can be released while still being referenced, leading to use-after-free memory corruption.
Is CVE-2026-46099 being actively exploited?
No, this vulnerability is not currently listed as actively exploited according to CISA's Known Exploited Vulnerabilities (KEV) catalog, and no public exploits are available.
What versions of Kernel are affected by CVE-2026-46099?
Kernel versions 6.19 through 7.0.3 are affected. Systems running kernel 7.0.4 or later are not vulnerable to this issue.
How do I check if my server is vulnerable to CVE-2026-46099?
Run `uname -r` to check your kernel version; if the output is between 6.19 and 7.0.3 inclusive, your system is vulnerable. Additionally, confirm IPv6 seg6 or RPL tunnels are active with `ip link show` or `cat /proc/net/ipv6_route`.
Does Defensia detect CVE-2026-46099?
Yes — Defensia's CVE advisory scanner compares installed kernel versions against the NVD database. If Linux kernel is installed on a monitored server running version 6.19 through 7.0.3, CVE-2026-46099 will appear in your dashboard with remediation steps.
Related Kernel CVEs
References
- https://git.kernel.org/stable/c/51fef5a7c4d160839199e941929456ba21ddf73c
- https://git.kernel.org/stable/c/52f9db67f8f35f436366cf4980b4f0a2583d0ef0
- https://git.kernel.org/stable/c/6bd17925bd6866027a6555db17905b9fc073d38d
- https://git.kernel.org/stable/c/9dd5481f960e337b81d7dfe429529495c1c481c0
- https://git.kernel.org/stable/c/b258b849a580285a1692e782ebc902b44c884a71
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2026-46099. Free for 1 server.
Get started free