CVE-2025-39980
NoneCVSS
—
EPSS
0.2%
Published
Oct 15, 2025
CISA due date
—
Cloudanix analysis
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
- Obtain CAP_NET_ADMIN on the target host
- Create a non-FDB nexthop and place it inside a nexthop group
- Replace the nexthop, setting the FDB flag while it remains grouped
- Add or use a route that references the group
- 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
- CVE-2026-23226 In the Linux kernel, the following vulnerability has been resolved: ksmbd: add chann_lock… Also affects Kernel
- CVE-2026-23225 In the Linux kernel, the following vulnerability has been resolved: sched/mmcid: Don't… Also affects Kernel
- CVE-2026-23230 In the Linux kernel, the following vulnerability has been resolved: smb: client: split… Also affects Kernel
- CVE-2026-23224 In the Linux kernel, the following vulnerability has been resolved: erofs: fix UAF issue… Also affects Kernel
- CVE-2026-23227 In the Linux kernel, the following vulnerability has been resolved: drm/exynos: vidi: use… Also affects Kernel
- CVE-2026-23223 In the Linux kernel, the following vulnerability has been resolved: xfs: fix UAF in… Also affects Kernel
- CVE-2026-23228 In the Linux kernel, the following vulnerability has been resolved: smb: server: fix leak… Also affects Kernel
- CVE-2026-23229 In the Linux kernel, the following vulnerability has been resolved: crypto: virtio - Add… Also affects Kernel