← All Advisories
Reported from OT-Advisories.com as of

Linux Kernel IPv6 network stack Improper Update Of Reference Count Rated 8.1 CVSS

Last refreshed2026-10-15

Status: UPDATED  |  Advisory ID: CVE-2026-46099

Key Details

CVECVE-2026-46099
CVSS Score / Version
8.1 (High) / CVSS v3.1
Updated2026-10-15
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS Prose
attack vector is network; attack complexity is high; privileges required is none; user interaction is none; scope is unchanged; confidentiality impact is high; integrity impact is high; availability impact is high.
Affected products
see table below
Classified as
CWE-911 (Improper Update of Reference Count)
Exploitation prediction (EPSS)
0.41% probability of exploitation in the next 30 days (34% percentile) -- FIRST.org's EPSS model.

Affected Products, Subsystems & Sectors

VendorProductAffected VersionsPatch Status
LinuxLinux Kernel
Red HatRed Hat Enterprise Linux 10
Red HatRed Hat Enterprise Linux 10.0 Extended Update Support
Red HatRed Hat Enterprise Linux 9
Red HatRed Hat Enterprise Linux 9.2 Update Services for SAP Solutions
Red HatRed Hat Enterprise Linux 9.6 Extended Update Support
SiemensSIMATIC S7-1500 TM MFP - GNU/Linux subsystem
SubsystemsControllers & Field I/O, OT Supporting Infrastructure
SectorsAll Sectors

What to Know

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. (NVD)

What to Do

Monitor Linux, Red Hat, and Siemens's web pages for any future patch releases.

References

SourceReference
NVDhttps://nvd.nist.gov/vuln/detail/CVE-2026-46099
CVEhttps://www.cve.org/CVERecord?id=CVE-2026-46099
Report compilation © 2026 OT-Advisories.com  ·  CC BY 4.0  ·  Source materials remain the property of their respective publishers as cited.