Cloudanix VulnDB

CVE-2025-39980

None

CVSS

—

EPSS

0.2%

Published

Oct 15, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A flaw in the Linux kernel's network routing code can let an administrator accidentally create a bad configuration that crashes the whole system.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Moderate
Impact
Denial Of Service
Component
OS kernel
Class
Improper Input Validation
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Allows modification of a nexthop's FDB flag while the nexthop remains a member of an existing group, producing an inconsistent internal state in which FDB nexthops lack an associated device; subsequent route lookups dereference a NULL pointer in fib_lookup_good_nhc.

Why it matters to the business

Kernel crashes and denial of service on systems that perform nexthop configuration changes under load or that later exercise routes using the affected groups; requires local administrative privileges.

How an attack unfolds

An attacker with CAP_NET_ADMIN creates a non-FDB nexthop, adds it to a group, then replaces the nexthop with the FDB flag set; any subsequent route lookup or connect operation through that group triggers the NULL dereference and kernel oops.

How to fix it

Upgrade the Linux kernel to a version containing commit e1e87ac0daacd51f522ecd1645cd76b5809303ed or later; apply the equivalent stable-branch patch if running a distribution kernel.

How to confirm the fix worked

Verify the kernel contains the fix commit; confirm that the ip nexthop replace command now returns "Error: Cannot change nexthop FDB status while in a group" instead of succeeding; run regression tests that exercise grouped FDB nexthops.

Typical attack path

  1. Obtain CAP_NET_ADMIN on the target host
  2. Create a non-FDB nexthop and place it inside a nexthop group
  3. Replace the nexthop, setting the FDB flag while it remains grouped
  4. Add or use a route that references the group
  5. Trigger packet processing or a connect syscall to cause lookup

How to detect it

Search kernel logs and dmesg for Oops messages referencing fib_lookup_good_nhc, NULL pointer dereference at address 00000000000003c0, and call traces containing fib_table_lookup or ip_route_output_key_hash; correlate with preceding ip nexthop replace operations that alter FDB status on grouped objects.

  • BUG: kernel NULL pointer dereference, address: 00000000000003c0
  • RIP: 0010:fib_lookup_good_nhc+0x1e/0x80
  • fib_table_lookup+0x541/0x650
  • Error: Cannot change nexthop FDB status while in a group

What your security team should do

  • Patch kernels to the fixed commit on all affected hosts within the next maintenance window
  • Audit scripts and automation that manipulate nexthop objects for FDB/group combinations
  • Monitor for kernel oops containing fib_lookup_good_nhc after any nexthop configuration change
  • Restrict CAP_NET_ADMIN to trusted processes only

The record

In the Linux kernel, the following vulnerability has been resolved: nexthop: Forbid FDB status change while nexthop is in a group The kernel forbids the creation of non-FDB nexthop groups with FDB nexthops: # ip nexthop add id 1 via 192.0.2.1 fdb # ip nexthop add id 2 group 1 Error: Non FDB nexthop group cannot have fdb nexthops. And vice versa: # ip nexthop add id 3 via 192.0.2.2 dev dummy1 # ip nexthop add id 4 group 3 fdb Error: FDB nexthop group can only have fdb nexthops. However, as long as no routes are pointing to a non-FDB nexthop group, the kernel allows changing the type of a nexthop from FDB to non-FDB and vice versa: # ip nexthop add id 5 via 192.0.2.2 dev dummy1 # ip nexthop add id 6 group 5 # ip nexthop replace id 5 via 192.0.2.2 fdb # echo $? 0 This configuration is invalid and can result in a NPD [1] since FDB nexthops are not associated with a nexthop device: # ip route add 198.51.100.1/32 nhid 6 # ping 198.51.100.1 Fix by preventing nexthop FDB status change while the nexthop is in a group: # ip nexthop add id 7 via 192.0.2.2 dev dummy1 # ip nexthop add id 8 group 7 # ip nexthop replace id 7 via 192.0.2.2 fdb Error: Cannot change nexthop FDB status while in a group. [1] BUG: kernel NULL pointer dereference, address: 00000000000003c0 [...] Oops: Oops: 0000 [#1] SMP CPU: 6 UID: 0 PID: 367 Comm: ping Not tainted 6.17.0-rc6-virtme-gb65678cacc03 #1 PREEMPT(voluntary) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-4.fc41 04/01/2014 RIP: 0010:fib_lookup_good_nhc+0x1e/0x80 [...] Call Trace: <TASK> fib_table_lookup+0x541/0x650 ip_route_output_key_hash_rcu+0x2ea/0x970 ip_route_output_key_hash+0x55/0x80 __ip4_datagram_connect+0x250/0x330 udp_connect+0x2b/0x60 __sys_connect+0x9c/0xd0 __x64_sys_connect+0x18/0x20 do_syscall_64+0xa4/0x2a0 entry_SYSCALL_64_after_hwframe+0x4b/0x53

Affected packages

Ecosystem Package Introduced Fixed
Linux Kernel 5.8.0 5.10.245
Mageia:9 kernel 0 6.6.116-1.mga9
Mageia:9 kernel-linus 0 6.6.116-1.mga9
Mageia:9 kmod-virtualbox 0 7.1.14-13.mga9
Mageia:9 kmod-xtables-addons 0 3.24-87.mga9
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.81.3
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.81.3
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_18 0 1-150600.1.3.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_18 0 1-150600.13.3.3
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-64kb 0 6.4.0-150600.23.81.3
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default 0 6.4.0-150600.23.81.3
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default-base 0 6.4.0-150600.23.81.3.150600.12.36.3
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-source 0 6.4.0-150600.23.81.2
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-zfcpdump 0 6.4.0-150600.23.81.3
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-docs 0 6.4.0-150600.23.81.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-obs-build 0 6.4.0-150600.23.81.3
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-source 0 6.4.0-150600.23.81.2
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-syms 0 6.4.0-150600.23.81.1
SUSE:Linux Enterprise Module for Legacy 15 SP6 kernel-default 0 6.4.0-150600.23.81.3
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.58.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.58.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.58.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 kernel-default 0 6.4.0-150600.23.81.3
SUSE:Real Time Module 15 SP6 kernel-rt 0 6.4.0-150600.10.61.1
SUSE:Real Time Module 15 SP6 kernel-rt_debug 0 6.4.0-150600.10.61.1
SUSE:Real Time Module 15 SP6 kernel-source-rt 0 6.4.0-150600.10.61.1
SUSE:Real Time Module 15 SP6 kernel-syms-rt 0 6.4.0-150600.10.61.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.81.1
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.81.3
openSUSE:Leap 15.6 kernel-azure 0 6.4.0-150600.8.58.1
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.81.3
openSUSE:Leap 15.6 kernel-default 0 6.4.0-150600.23.81.3
openSUSE:Leap 15.6 kernel-default-base 0 6.4.0-150600.23.81.3.150600.12.36.3
openSUSE:Leap 15.6 kernel-docs 0 6.4.0-150600.23.81.1
openSUSE:Leap 15.6 kernel-kvmsmall 0 6.4.0-150600.23.81.3
openSUSE:Leap 15.6 kernel-obs-build 0 6.4.0-150600.23.81.3
openSUSE:Leap 15.6 kernel-obs-qa 0 6.4.0-150600.23.81.1
openSUSE:Leap 15.6 kernel-rt 0 6.4.0-150600.10.61.1
openSUSE:Leap 15.6 kernel-rt_debug 0 6.4.0-150600.10.61.1
openSUSE:Leap 15.6 kernel-source 0 6.4.0-150600.23.81.2
openSUSE:Leap 15.6 kernel-source-azure 0 6.4.0-150600.8.58.1
openSUSE:Leap 15.6 kernel-source-rt 0 6.4.0-150600.10.61.1
openSUSE:Leap 15.6 kernel-syms 0 6.4.0-150600.23.81.1
openSUSE:Leap 15.6 kernel-syms-azure 0 6.4.0-150600.8.58.1
openSUSE:Leap 15.6 kernel-syms-rt 0 6.4.0-150600.10.61.1
openSUSE:Leap 15.6 kernel-zfcpdump 0 6.4.0-150600.23.81.3
openSUSE:Leap 16.0 dtb-aarch64 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-64kb 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-default 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-default-base 0 6.12.0-160000.8.1.160000.2.5
openSUSE:Leap 16.0 kernel-docs 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-kvmsmall 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-obs-build 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-obs-qa 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-rt 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-source 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-syms 0 6.12.0-160000.8.1
openSUSE:Leap 16.0 kernel-zfcpdump 0 6.12.0-160000.8.1

Related vulnerabilities