Cloudanix VulnDB

CVE-2025-21676

Medium · 5.5

CVSS

5.5

EPSS

0.4%

Published

Jan 31, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in the Linux network driver for certain chips can crash the whole computer when memory gets low instead of handling the problem safely.

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

What it actually does

NULL pointer dereference in fec_enet_update_cbd when page_pool_dev_alloc_pages returns NULL under memory pressure, causing kernel crash instead of graceful packet drop.

Why it matters to the business

Unexpected system reboots or hangs on Linux systems using the FEC Ethernet driver during memory pressure, disrupting network connectivity and workloads on affected hardware such as embedded devices.

How an attack unfolds

An attacker or workload induces memory pressure on a system running the vulnerable FEC driver; the driver attempts page allocation, receives NULL, ignores the failure, and dereferences the pointer leading to a crash. No remote unauthenticated exploitation path exists.

How to fix it

Update the Linux kernel to a version containing commit 8a0097db0544b658c159ac787319737712063a23 which adds proper NULL handling and drops the packet on allocation failure.

How to confirm the fix worked

Verify the running kernel contains commit 8a0097db0544b658c159ac787319737712063a23 or later equivalent stable backport; confirm no WARN_ON or crash occurs under simulated memory pressure with FEC traffic.

Typical attack path

  1. Gain local code execution or trigger memory exhaustion conditions on target system
  2. Force network traffic through FEC interface while memory is low
  3. Trigger page_pool_dev_alloc_pages failure path in fec_enet_update_cbd
  4. Kernel panics due to NULL dereference

How to detect it

Inspect kernel logs for oops/panic entries mentioning fec_enet_update_cbd, page_pool_dev_alloc_pages, or NULL pointer dereference in the FEC driver during periods of high memory usage.

  • fec_enet_update_cbd
  • page_pool_dev_alloc_pages
  • WARN_ON(!new_page)

What your security team should do

  • Prioritize kernel upgrade on systems using FEC Ethernet (imx6 and similar) within normal patching cycles
  • Increase vm.min_free_kbytes as a temporary mitigation on affected devices
  • Monitor for kernel oops or panic logs referencing fec or page_pool under memory pressure

The record

In the Linux kernel, the following vulnerability has been resolved: net: fec: handle page_pool_dev_alloc_pages error The fec_enet_update_cbd function calls page_pool_dev_alloc_pages but did not handle the case when it returned NULL. There was a WARN_ON(!new_page) but it would still proceed to use the NULL pointer and then crash. This case does seem somewhat rare but when the system is under memory pressure it can happen. One case where I can duplicate this with some frequency is when writing over a smbd share to a SATA HDD attached to an imx6q. Setting /proc/sys/vm/min_free_kbytes to higher values also seems to solve the problem for my test case. But it still seems wrong that the fec driver ignores the memory allocation error and can crash. This commit handles the allocation error by dropping the current packet.

Affected packages

Ecosystem Package Introduced Fixed
Debian:12 linux 0 No fix
Debian:13 linux 0 6.12.11-1
Linux Kernel 6.1.0 6.6.74
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.38.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.38.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_8 0 1-150600.1.3.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_8 0 1-150600.13.3.2
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-64kb 0 6.4.0-150600.23.38.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default 0 6.4.0-150600.23.38.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default-base 0 6.4.0-150600.23.38.1.150600.12.16.2
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-source 0 6.4.0-150600.23.38.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-zfcpdump 0 6.4.0-150600.23.38.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-coco 0 6.4.0-15061.15.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-coco_debug 0 6.4.0-15061.15.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-source-coco 0 6.4.0-15061.15.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-syms-coco 0 6.4.0-15061.15.coco15sp6.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-docs 0 6.4.0-150600.23.38.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-obs-build 0 6.4.0-150600.23.38.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-source 0 6.4.0-150600.23.38.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-syms 0 6.4.0-150600.23.38.1
SUSE:Linux Enterprise Module for Legacy 15 SP6 kernel-default 0 6.4.0-150600.23.38.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.26.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.26.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.26.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 kernel-default 0 6.4.0-150600.23.38.1
SUSE:Real Time Module 15 SP6 kernel-rt 0 6.4.0-150600.10.26.1
SUSE:Real Time Module 15 SP6 kernel-rt_debug 0 6.4.0-150600.10.26.1
SUSE:Real Time Module 15 SP6 kernel-source-rt 0 6.4.0-150600.10.26.1
SUSE:Real Time Module 15 SP6 kernel-syms-rt 0 6.4.0-150600.10.26.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.38.1
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.38.1
openSUSE:Leap 15.6 kernel-azure 0 6.4.0-150600.8.26.1
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.38.1
openSUSE:Leap 15.6 kernel-default 0 6.4.0-150600.23.38.1
openSUSE:Leap 15.6 kernel-default-base 0 6.4.0-150600.23.38.1.150600.12.16.2
openSUSE:Leap 15.6 kernel-docs 0 6.4.0-150600.23.38.1
openSUSE:Leap 15.6 kernel-kvmsmall 0 6.4.0-150600.23.38.1
openSUSE:Leap 15.6 kernel-obs-build 0 6.4.0-150600.23.38.1
openSUSE:Leap 15.6 kernel-obs-qa 0 6.4.0-150600.23.38.1
openSUSE:Leap 15.6 kernel-rt 0 6.4.0-150600.10.26.1
openSUSE:Leap 15.6 kernel-rt_debug 0 6.4.0-150600.10.26.1
openSUSE:Leap 15.6 kernel-source 0 6.4.0-150600.23.38.1
openSUSE:Leap 15.6 kernel-source-azure 0 6.4.0-150600.8.26.1
openSUSE:Leap 15.6 kernel-source-rt 0 6.4.0-150600.10.26.1
openSUSE:Leap 15.6 kernel-syms 0 6.4.0-150600.23.38.1
openSUSE:Leap 15.6 kernel-syms-azure 0 6.4.0-150600.8.26.1
openSUSE:Leap 15.6 kernel-syms-rt 0 6.4.0-150600.10.26.1
openSUSE:Leap 15.6 kernel-zfcpdump 0 6.4.0-150600.23.38.1

Related vulnerabilities