Cloudanix VulnDB

CVE-2025-22005

None

CVSS

—

EPSS

0.2%

Published

Apr 3, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A coding mistake in the Linux kernel's IPv6 routing code can slowly leak small amounts of memory when certain network setup operations fail, which over time could exhaust resources on affected machines.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Moderate
Impact
Denial Of Service
Component
OS kernel
Class
Memory Corruption
Remediation
Patch
Effort
Medium
Patch risk
Low

What it actually does

Memory leak of nhc_pcpu_rth_output percpu allocation in fib6_nh_init() error path when fib6_nh->rt6i_pcpu allocation fails after fib_nh_common_init() has run, because fib_check_nh_v6_gw() assumes complete cleanup on failure.

Why it matters to the business

Gradual kernel memory exhaustion on systems performing IPv6 route lookups or gateway configuration under failure conditions, potentially leading to resource starvation and service disruption in high-traffic or dynamic routing environments; low EPSS and no KEV listing reduce immediate urgency despite 573 days since publication.

How an attack unfolds

An attacker with ability to trigger IPv6 route or gateway configuration failures (for example via repeated invalid route additions or during interface events) can cause the kernel to leak percpu memory on each failed fib6_nh_init() call without corresponding release, amplifying the leak through sustained triggering; listed threat actors associated with other Linux kernel privilege-escalation CVEs may seek to chain this for denial-of-service.

How to fix it

Apply the upstream fix commit 16267a5036173d0173377545b4b6021b081d0933 or later; for Red Hat Enterprise Linux 8 appstream packages update to the listed fixed versions such as dotnet-runtime-3.1-0:3.1.15-1.el8_4 and dotnet-sdk-3.1-0:3.1.115-1.el8_4; rebuild and reboot into the patched kernel; remove the erroneous fib6_nh_release() call in nh_create_ipv6() when rebasing to net-next.

How to confirm the fix worked

Verify the presence of the commit 16267a5036173d0173377545b4b6021b081d0933 in the running kernel source or package changelog; exercise fib_check_nh_v6_gw() failure paths under memory pressure and confirm no growth in percpu allocations via /proc/meminfo or slabinfo; confirm fixed dotnet package versions are installed via rpm -q.

Typical attack path

  1. Obtain local or network-adjacent access sufficient to influence IPv6 routing tables or trigger fib_check_nh_v6_gw() calls
  2. Craft repeated route or gateway operations that force fib6_nh_init() to reach the rt6i_pcpu allocation failure after nhc_pcpu_rth_output has been initialized
  3. Repeat the failure-inducing sequence to accumulate leaked percpu memory until kernel resources are depleted

How to detect it

Review kernel slab allocator statistics and percpu memory counters for unexpected growth tied to fib6_nh or nhc_pcpu_rth_output objects; inspect system logs for repeated IPv6 route configuration failures around the time of suspected leaks; no public exploit artifacts are known.

What your security team should do

  • Prioritize kernel updates on all IPv6-enabled systems within change windows given the long publication window
  • Monitor memory usage trends on routers and hosts handling dynamic IPv6 routes
  • Include the fix in next planned kernel or dotnet runtime patching cycle even though EPSS remains low

The record

In the Linux kernel, the following vulnerability has been resolved: ipv6: Fix memleak of nhc_pcpu_rth_output in fib_check_nh_v6_gw(). fib_check_nh_v6_gw() expects that fib6_nh_init() cleans up everything when it fails. Commit 7dd73168e273 ("ipv6: Always allocate pcpu memory in a fib6_nh") moved fib_nh_common_init() before alloc_percpu_gfp() within fib6_nh_init() but forgot to add cleanup for fib6_nh->nh_common.nhc_pcpu_rth_output in case it fails to allocate fib6_nh->rt6i_pcpu, resulting in memleak. Let's call fib_nh_common_release() and clear nhc_pcpu_rth_output in the error path. Note that we can remove the fib6_nh_release() call in nh_create_ipv6() later in net-next.git.

Affected packages

Ecosystem Package Introduced Fixed
Debian:11 linux 0 No fix
Debian:11 linux-6.1 0 6.1.137-1~deb11u1
Debian:12 linux 0 No fix
Debian:12 linux 0 6.1.133-1
Debian:13 linux 0 No fix
Debian:13 linux 0 6.12.21-1
Linux Kernel 5.3.0 5.4.292
Mageia:9 kernel 0 6.6.88-3.mga9
Mageia:9 kernel-linus 0 6.6.88-1.mga9
Mageia:9 kmod-virtualbox 0 7.0.24-70.mga9
Mageia:9 kmod-xtables-addons 0 3.24-78.mga9
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_11 0 1-150600.1.3.2
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_12 0 1-150600.13.3.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-64kb 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default-base 0 6.4.0-150600.23.53.1.150600.12.24.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-source 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-zfcpdump 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-coco 0 6.4.0-15061.28.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-coco_debug 0 6.4.0-15061.28.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-source-coco 0 6.4.0-15061.28.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-syms-coco 0 6.4.0-15061.28.coco15sp6.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-docs 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-obs-build 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-source 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-syms 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Legacy 15 SP6 kernel-default 0 6.4.0-150600.23.53.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.40.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.40.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.40.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 kernel-default 0 6.4.0-150600.23.53.1
SUSE:Real Time Module 15 SP6 kernel-rt 0 6.4.0-150600.10.39.1
SUSE:Real Time Module 15 SP6 kernel-rt_debug 0 6.4.0-150600.10.39.1
SUSE:Real Time Module 15 SP6 kernel-source-rt 0 6.4.0-150600.10.39.1
SUSE:Real Time Module 15 SP6 kernel-syms-rt 0 6.4.0-150600.10.39.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-azure 0 6.4.0-150600.8.40.1
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-default 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-default-base 0 6.4.0-150600.23.53.1.150600.12.24.1
openSUSE:Leap 15.6 kernel-docs 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-kvmsmall 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-obs-build 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-obs-qa 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-rt 0 6.4.0-150600.10.39.1
openSUSE:Leap 15.6 kernel-rt_debug 0 6.4.0-150600.10.39.1
openSUSE:Leap 15.6 kernel-source 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-source-azure 0 6.4.0-150600.8.40.1
openSUSE:Leap 15.6 kernel-source-rt 0 6.4.0-150600.10.39.1
openSUSE:Leap 15.6 kernel-syms 0 6.4.0-150600.23.53.1
openSUSE:Leap 15.6 kernel-syms-azure 0 6.4.0-150600.8.40.1
openSUSE:Leap 15.6 kernel-syms-rt 0 6.4.0-150600.10.39.1
openSUSE:Leap 15.6 kernel-zfcpdump 0 6.4.0-150600.23.53.1

Related vulnerabilities