Skip to main content

Linux Kernel CVE-2025-68241

HIGH
2025-12-16 416baaa9-dc9f-4396-8d5f-8c081fb06d67
7.5
CVSS 3.1 · Vendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Share

Severity by source

Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67) PRIMARY
7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI
5.9 MEDIUM

Network-triggerable via tunnel traffic (AV:N) with no auth (PR:N), but a narrow RCU race under heavy load makes it AC:H; impact is availability-only (A:H), no C/I effect.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE
5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Red Hat
4.7 MEDIUM
qualitative

Primary rating from Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67).

CVSS VectorVendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Analysis Generated
Jul 30, 2026 - 07:19 vuln.today
CVE Published
Dec 16, 2025 - 15:15 cve.org
HIGH 7.5

DescriptionCVE.org

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

ipv4: route: Prevent rt_bind_exception() from rebinding stale fnhe

The sit driver's packet transmission path calls: sit_tunnel_xmit() -> update_or_create_fnhe(), which lead to fnhe_remove_oldest() being called to delete entries exceeding FNHE_RECLAIM_DEPTH+random.

The race window is between fnhe_remove_oldest() selecting fnheX for deletion and the subsequent kfree_rcu(). During this time, the concurrent path's __mkroute_output() -> find_exception() can fetch the soon-to-be-deleted fnheX, and rt_bind_exception() then binds it with a new dst using a dst_hold(). When the original fnheX is freed via RCU, the dst reference remains permanently leaked.

CPU 0 CPU 1 __mkroute_output() find_exception() [fnheX] update_or_create_fnhe() fnhe_remove_oldest() [fnheX] rt_bind_exception() [bind dst] RCU callback [fnheX freed, dst leak]

This issue manifests as a device reference count leak and a warning in dmesg when unregistering the net device:

unregister_netdevice: waiting for sitX to become free. Usage count = N

Ido Schimmel provided the simple test validation method [1].

The fix clears 'oldest->fnhe_daddr' before calling fnhe_flush_routes(). Since rt_bind_exception() checks this field, setting it to zero prevents the stale fnhe from being reused and bound to a new dst just before it is freed.

[1] ip netns add ns1 ip -n ns1 link set dev lo up ip -n ns1 address add 192.0.2.1/32 dev lo ip -n ns1 link add name dummy1 up type dummy ip -n ns1 route add 192.0.2.2/32 dev dummy1 ip -n ns1 link add name gretap1 up arp off type gretap \ local 192.0.2.1 remote 192.0.2.2 ip -n ns1 route add 198.51.0.0/16 dev gretap1 taskset -c 0 ip netns exec ns1 mausezahn gretap1 \ -A 198.51.100.1 -B 198.51.0.0/16 -t udp -p 1000 -c 0 -q & taskset -c 2 ip netns exec ns1 mausezahn gretap1 \ -A 198.51.100.1 -B 198.51.0.0/16 -t udp -p 1000 -c 0 -q & sleep 10 ip netns pids ns1 | xargs kill ip netns del ns1

AnalysisAI

Denial of service in the Linux kernel IPv4 routing subsystem allows a permanent device reference-count leak through a race condition in FIB next-hop exception (fnhe) handling. On systems using tunnel drivers such as sit or gretap, concurrent transmit paths can bind a soon-to-be-freed fnhe to a new dst, leaking the dst and its device reference so the interface can never be unregistered (visible as 'unregister_netdevice: waiting for sitX to become free'). This is availability-only, has no public exploit identified at time of analysis, and carries a low EPSS score of 0.17%.

Technical ContextAI

The affected code is the kernel's IPv4 route cache exception mechanism (net/ipv4/route.c). FIB next-hop exceptions (fnhe) cache per-destination overrides such as PMTU and ICMP redirects. When a tunnel transmit path (sit_tunnel_xmit -> update_or_create_fnhe) adds entries beyond FNHE_RECLAIM_DEPTH plus a random offset, fnhe_remove_oldest() evicts the oldest entry and frees it via kfree_rcu(). Because eviction and lookup run under RCU on separate CPUs, a concurrent __mkroute_output -> find_exception can retrieve the entry after it has been selected for deletion but before the RCU callback runs; rt_bind_exception() then takes a dst_hold() on it, and once the fnhe is freed the dst reference is never released. Although the CWE is not populated in the feed, the root cause is a concurrency/use-after-free class defect (CWE-362 race condition combined with a CWE-401/CWE-911 reference-count leak). The fix clears oldest->fnhe_daddr before fnhe_flush_routes(), so rt_bind_exception()'s check on that field rejects the stale entry.

Affected ProductsAI

The affected product is the mainline and stable Linux kernel IPv4 routing code, exercised via tunnel drivers (the sit/SIT tunnel driver named in the description, and gretap/GRE per the reproduction script). Exact affected version ranges are not enumerated in the feed and no CPE strings were provided; the eight git.kernel.org/stable commit references indicate the fix was backported across multiple stable branches. Vendor/upstream fix commits include https://git.kernel.org/stable/c/041ab9ca6e80d8f792bb69df28ebf1ef39c06af8 and https://git.kernel.org/stable/c/0fd16ed6dc331636fb2a874c42d2f7d3156f7ff0 among the eight listed. Specific distribution kernel builds affected should be confirmed against each vendor's advisory.

RemediationAI

Upstream fix available (commit/stable backports); a released patched tagged version is not independently confirmed from the feed - update to a distribution kernel that incorporates the referenced stable commits (e.g. https://git.kernel.org/stable/c/041ab9ca6e80d8f792bb69df28ebf1ef39c06af8 and the seven sibling commits) once your vendor ships them. The fix sets oldest->fnhe_daddr to zero before flushing routes so a stale fnhe cannot be rebound. Where immediate patching is not possible, reduce exposure by avoiding or tearing down sit/gretap tunnel interfaces on untrusted paths and limiting the volume of PMTU/redirect-generating traffic those tunnels process, since the bug only manifests under heavy fnhe churn; note this may disable required tunnel connectivity. Monitor dmesg for 'unregister_netdevice: waiting for ... to become free' as an indicator, and schedule reboots to clear leaked references until patched.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
Container suse/sl-micro/6.0/baremetal-os-container:latest Container suse/sl-micro/6.0/toolbox:latest Affected
Container suse/sl-micro/6.0/base-os-container:2.1.3-7.95 Image SL-Micro Image SLE-Micro Image SLE-Micro-Azure Image SLE-Micro-BYOS Image SLE-Micro-BYOS-Azure Image SLE-Micro-BYOS-EC2 Image SLE-Micro-BYOS-GCE Image SLE-Micro-EC2 Image SLE-Micro-GCE Affected
Container suse/sl-micro/6.0/kvm-os-container:2.1.3-6.115 Affected
Container suse/sl-micro/6.0/rt-os-container:2.1.3-7.146 Affected
Container suse/sl-micro/6.1/base-os-container:2.2.1-5.80 Image SL-Micro-Azure Image SL-Micro-BYOS-Azure Image SL-Micro-BYOS-EC2 Image SL-Micro-BYOS-GCE Image SL-Micro-EC2 Image SUSE-Multi-Linux-Manager-Proxy-BYOS-Azure Image SUSE-Multi-Linux-Manager-Proxy-BYOS-EC2 Image SUSE-Multi-Linux-Manager-Proxy-BYOS-GCE Image SUSE-Multi-Linux-Manager-Server-Azure-llc Image SUSE-Multi-Linux-Manager-Server-Azure-ltd Image SUSE-Multi-Linux-Manager-Server-BYOS-Azure Image SUSE-Multi-Linux-Manager-Server-BYOS-EC2 Image SUSE-Multi-Linux-Manager-Server-BYOS-GCE Image SUSE-Multi-Linux-Manager-Server-EC2-llc Image SUSE-Multi-Linux-Manager-Server-EC2-ltd Affected

Share

CVE-2025-68241 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy