CVE-2026-46099: net: ipv6: fix NOREF dst use in seg6 and rpl lwtunnels

Published May 27, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

net: ipv6: fix NOREF dst use in seg6 and rpl lwtunnels

seg6inputcore() and rplinput() call ip6routeinput() which sets a NOREF dst on the skb, then pass it to dstcachesetip6() invoking dsthold() unconditionally. On PREEMPTRT, ksoftirqd is preemptible and a higher-priority task can release the underlying pcpurt 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) ----------- -------------------------------- seg6inputcore(,skb)/rplinput(skb) dstcacheget() -> miss ip6routeinput(skb) -> ip6polroute(,skb,flags) [RT6LOOKUPFDSTNOREF in flags] -> FIB lookup resolves fib6nh [nhid=N route] -> rt6makepcpuroute() [creates pcpurt, refcount=1] pcpurt->sernum = fib6sernum [fib6sernum=W] -> cmpxchg(fib6nh.rt6ipcpu, NULL, pcpurt) [slot was empty, store succeeds] -> skbdstsetnoref(skb, dst) [dst is pcpurt, refcount still 1]

rtgenidbumpipv6() -> bumps fib6sernum [fib6sernum from W to Z] ip6routeoutput() -> ip6polroute() -> FIB lookup resolves fib6nh [nhid=N] -> rt6getpcpuroute() pcpurt->sernum != fib6sernum [W <> Z, stale] -> prev = xchg(rt6ipcpu, NULL) -> dstrelease(prev) [prev is pcpurt, refcount 1->0, dead]

dst = skbdst(skb) [dst is the dead pcpurt] dstcachesetip6(dst) -> dsthold() on dead dst -> WARN / use-after-free

For the race to occur, ksoftirqd must be preemptible (PREEMPTRT without PREEMPTRTNEEDSBHLOCK) and a concurrent task must be able to release the pcpurt. Shared nexthop objects provide such a path, as two routes pointing to the same nhid share the same fib6nh and its rt6ipcpu entry.

Fix seg6inputcore() and rplinput() by calling skbdstforce() after ip6routeinput() to force the NOREF dst into a refcounted one before caching. The output path is not affected as ip6routeoutput() already returns a refcounted dst.

Affected Software

9 affected componentsFixes available
Linux Linux kernel (net/ipv6: seg6 and rpl lwtunnels)
Linux Linux kernel>=4.12<5.15.209
Linux Linux kernel>=5.16<6.1.175
Linux Linux kernel>=6.2<6.6.140
Linux Linux kernel>=6.7<6.12.86
Linux Linux kernel>=6.13<6.18.27
Linux Linux kernel>=6.19<7.0.4
Linux Linux kernel=7.1-rc1
Microsoft azl3 kernel 6.6.139.1-1<6.6.141.1-1
6.6.141.1-1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 6.6.141.1-1
  2. Configuration

    Fix the vulnerability by calling skb_dst_force() after the route input path selects a NOREF dst in seg6_input_core() and rpl_input(), so the dst is refcounted before it is used for caching (e.g., before passing it into dst_cache_set_ip6() and dst_hold()).

    Linux kernel (seg6_input_core() / rpl_input() / ip6_route_input()) Call skb_dst_force() after NOREF dst selection and before caching = skb_dst_force()

Event History

May 27, 2026
CVE Published
via MITRE·12:59 PM
Data Sourced
via MITRE·12:59 PM
DescriptionSeverity
Data Sourced
via NVD·02:17 PM
RemedyDescriptionSeverityWeaknessAffected Software
Data Sourced
via Red Hat·03:05 PM
DescriptionSeverityAffected Software
May 28, 2026
Data Sourced
via Microsoft·08:10 AM
DescriptionSeverityWeakness
Data Sourced
via Microsoft·08:10 AM
Affected Software
Updated
via Microsoft·08:10 AM
DescriptionSeverity

Frequently Asked Questions

1

What is the severity of CVE-2026-46099?

CVE-2026-46099 has a risk rating of 47.

2

How do I fix CVE-2026-46099?

To fix CVE-2026-46099, update your Linux kernel to a version that includes the patch for this vulnerability.

3

What type of vulnerability is CVE-2026-46099?

CVE-2026-46099 is classified as a Use After Free vulnerability in the Linux kernel.

4

Which components are affected by CVE-2026-46099?

CVE-2026-46099 affects the net/ipv6 segments of the Linux kernel, specifically seg6 and rpl lightweight tunnels.

5

What can happen if CVE-2026-46099 is exploited?

Exploitation of CVE-2026-46099 may lead to denial of service or the potential for remote code execution in vulnerable systems.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203