CVE-2025-21981: Linux Kernel ICE Driver aRFS Memory Leak DoS Risk

  • Thread Author
The Linux kernel’s ICE driver contains a subtle but consequential memory-management bug that can quietly erode system availability: during certain reset-driven reconfiguration paths the driver double‑allocates accelerated Receive Flow Steering (aRFS) data structures without freeing previously allocated memory, producing unreferenced objects that accumulate until system resources are compromised. This issue, tracked as CVE‑2025‑21981 and assigned a CVSS v3.1 base score of 5.5, has been fixed upstream, but it matters because the vulnerability is local‑attackable, affects kernel builds that include the Intel ICE driver, and can lead to sustained or persistent denial‑of‑service conditions if left unpatched.

Neon-lit ICE circuit card in a dark server cabinet.Background​

What the ICE driver does and where aRFS fits​

The ICE driver (drivers/net/ethernet/intel/ice) implements support for a family of Intel Ethernet controllers. Among its performance features is aRFS (accelerated Receive Flow Steering), a kernel‑side mechanism used to steer packet processing to appropriate CPUs for improved throughput and reduced latency on multi‑queue NICs. aRFS maintains internal state and rule objects per VSI (Virtual Station Interface); those objects are allocated during normal probe/initialization and may also be reallocated during reset and reconfiguration operations. When that lifecycle is mishandled, allocations can be lost and never freed — a textbook memory leak in kernel space.

How the bug manifests​

The defect appears when VSI reconfiguration is performed as part of a reset sequence: the code path allocates aRFS objects again without verifying whether previously allocated memory exists and has been released. The kernel’s kmemleak diagnostic can reveal the symptom as “unreferenced object” entries tied to the backtrace containing ice_init_arfs, ice_vsi_cfg_def, and ice_vsi_setup. In practice, repeated resets or reconfiguration cycles — for example during device reprobe, VM live migration events, firmware‑driven resets, or aggressive device‑management workflows — can allow the leak to accumulate until memory exhaustion or degraded performance occurs.

Technical summary and verification​

Verifiable facts​

  • The upstream CVE entry and vulnerability records describe the issue as “ice: fix memory leak in aRFS after reset.” The problem is a missing guard that would detect previously allocated aRFS memory before allocating again during VSI configuration.
  • Kernel backtraces captured in advisories point to ice_init_arfs and the related ice*vsi** routines as the allocation sites. The backtrace signature has been published in vendor advisories and bug tracker entries.
  • Multiple distribution and vulnerability trackers (NVD, OSV, Red Hat, SUSE, Debian trackers and others) have recorded the CVE and aligned on the same basic technical description and remediation path.

Scope and attack surface​

This is a local vulnerability: exploitation requires the ability to trigger driver reconfiguration or reset flows on a host that runs a kernel build containing the ICE driver and aRFS code. The attack vector is therefore Local (AV:L) with Low privileges required (PR:L) under most scoring models, and the impact is Availability (A:H). That means an unprivileged or low‑privilege account capable of instigating repeated resets or causing the driver to reconfigure can cause resource exhaustion over time. The NVD and vendor trackers consistently report the attack vector as local and the primary impact as availability.

Affected code and versions​

Distribution advisories and OSV listings show the issue present in kernels where the ice driver source path contains the vulnerable code (commonly present in many mainstream kernel series and vendor kernels). The exact kernel commits and stable‑tree backports tied to the fix have been merged into the Linux stable trees; distributions have mapped and packaged those fixes differently according to their maintainership and backport policies. Operators must therefore confirm whether their distribution’s kernel packages include the upstream fix or a vendor backport.

Why this matters operationally​

Real‑world impact: availability, persistence, and operational surprises​

A memory leak running in kernel space is not just a nuisance: unlike a userland leak that can often be reclaimed by restarting a process, kernel memory leaks can accumulate system‑wide, degrade memory availability, trigger allocation failures, and cause device or service instability that persists across userland process restarts. The specific signature reported for CVE‑2025‑21981 — unreferenced kmemleak objects attributed to kworker threads and ICE initialization paths — indicates that the leak arises in asynchronous or worker contexts, which makes it easy to miss during routine monitoring unless kmemleak or careful telemetry is enabled. Over time the exhausted memory pressure can lead to allocation failures, dropped packets, or even system instability in heavily loaded or constrained environments.

Who should be worried​

  • Cloud and virtualization hosts that use Intel NICs supported by the ICE driver and that perform frequent reset/reprobe cycles (for instance during VM lifecycle operations, host maintenance, or live migration) should prioritize this CVE.
  • Appliance vendors, edge devices, and specialized systems that rely on vendor kernels built with ICE support must verify package backports and vendor errata.
  • Developers of custom kernels or embedded systems who include the ICE driver in their builds must inspect the driver version and consider rebuilding with upstream fixes if necessary.

Detection and forensic signals​

Detecting exploitation or the leak condition requires focused telemetry and a small checklist of kernel‑level signals. Key indicators include:
  • kmemleak entries showing unreferenced objects with backtraces pointing to ice_init_arfs, ice_vsi_cfg_def, or ice_vsi_setup. These are high‑fidelity indicators of the precise leak discussed in advisories.
  • Increasing system memory pressure that correlates with device reset events, ethtool‑driven operations, or driver reprobes. Monitor dmesg, kernel logs, and OOM events for unusual patterns.
  • Repeated kworker activity tied to PCI probe or reset flows at times of memory pressure. The published backtrace commonly shows a kworker thread context.
Operational detection playbook:
  • Enable kmemleak in test/staging kernels where possible and scan /sys/kernel/debug/kmemleak for unreferenced objects when investigation is warranted.
  • Correlate memory growth with PCI device resets, ethtool commands, or host firmware actions in logs.
  • Add alerts when kernel allocation failures or soft OOM warnings appear alongside NIC reset events.
  • For cloud providers: add instrumented host‑level checks in images that include the ICE driver and treat repeated kmemleak signatures as high priority.

Remediation and mitigation guidance​

Primary remediation — apply the kernel update​

The upstream fix has been merged into the Linux kernel stable trees and distributed through vendor kernel updates and security errata. The definitive remediation is to install vendor‑supplied kernel packages that include the upstream patch or to rebuild kernels from upstream trees that carry the fix. Distributors that have cataloged the CVE — including Red Hat, SUSE, Debian/Ubuntu, and others — provide explicit package identifiers and backport mappings; follow your distribution’s security advisory and errata.

Short‑term mitigations when patching is delayed​

  • Minimize or avoid unneeded device resets and reprobes in production. If your operational scripts perform automatic NIC resets during maintenance, gate those operations and add rate limits.
  • Where possible, restrict access to management interfaces that can trigger reconfiguration flows (e.g., ethtool, driver sysfs entries) to trusted administrators.
  • For cloud operators, temporarily constrain VM workflows that produce frequent NIC resets (for example, mass reprobes or hotplug sequences) until the host kernel is patched.
  • If vendor guidance provides a specific temporary driver blacklisting path for non‑essential NICs, weigh the operational impact; blacklisting is a blunt instrument but can be a valid stopgap.

A practical rollout checklist​

  • Inventory hosts that include the ICE driver in their kernel builds (check lsmod, modinfo, and packaging metadata).
  • Identify vendor kernel package versions and confirm whether the kernel package includes the upstream CVE fix or vendor backport. Use distribution security trackers and OSV listings to map package versions to fixes.
  • Test patched kernels in staging, validating network throughput and device behavior under representative reset/reprobe cycles. Ensure that the patch does not regress NIC functionality in your environment.
  • Deploy patched kernels in rolling waves, monitor kmemleak signals and memory pressure during and after rollout, and be prepared to revert if unexpected regressions occur.

Vendor responses and patch status​

Major Linux distributions and vulnerability databases recorded CVE‑2025‑21981 shortly after disclosure; OSV, NVD, and distribution trackers list the CVSS 5.5 score and the same technical description. Red Hat’s bugzilla and SUSE’s errata note package updates or backports for affected kernel series, and Debian’s security‑tracker commits reference upstream kernel merges that map to the fix. This wide vendor coordination indicates the upstream fix was accepted into stable trees and then propagated to downstream packages where maintainers chose to backport. Confirm the exact fixed package for your platform rather than assuming all kernel versions are updated at the same time.

Critical analysis — strengths, residual risks, and operational considerations​

Strengths of the upstream fix​

  • The patch is targeted and conservative: it adds a condition to avoid double allocation during VSI reconfiguration instead of a major rewrite of the aRFS subsystem. That keeps functional semantics intact while removing the leak trigger. Upstream maintainers merged the change into stable branches, which facilitated vendor backports.
  • The vulnerability’s impact is limited to Availability rather than Confidentiality or Integrity; there is no public evidence it results in memory corruption exploitable for code execution. That reduces the immediate worst‑case threat model compared with remote code‑execution kernel bugs.

Residual risks and caveats​

  • Local‑only vector does not mean harmless: in multi‑tenant or shared‑hosting environments, a tenant or low‑privileged process that can exercise reset/reprobe actions may mount repeated triggers, producing a noisy‑neighbor DoS. Cloud providers should treat device lifecycle operations as part of their attack surface.
  • Backport and packaging fragmentation: not every vendor applies upstream fixes on the same cadence. Older maintenance branches, long‑term support kernels, or vendor‑modified kernels may receive the patch later or with different commit IDs. Operators relying on vendor packages must confirm package metadata or apply a controlled kernel rebuild.
  • Detection gaps: kmemleak is not always enabled in production kernels because of its overhead and because it’s a diagnostic facility often toggled in staging. That makes subtle leaks easier to miss for teams without explicit kernel diagnostic telemetry in place. Invest in targeted host instrumentation where the ICE driver is common.

Balance of urgency​

Treat CVE‑2025‑21981 as a medium‑priority operational issue with potential high‑impact outcomes in specific contexts (cloud hosts, NIC‑heavy appliances). Patch priority should be elevated for systems where NIC resets or reprobes are routine, where memory resources are constrained, or where the ICE driver is in widespread use across many hosts. For general desktop or single‑tenant servers where resets are uncommon, the risk is still real but the likelihood lower; follow standard patch management lifecycle in those cases.

Practical examples and detection recipes​

Quick detection recipe (for Linux sysadmins)​

  • Step 1: Confirm whether ice is present: run modinfo ice or check dmesg for ice probe lines.
  • Step 2: If ice is present and you suspect the leak, enable kmemleak in a staging kernel and inspect /sys/kernel/debug/kmemleak for unreferenced objects with backtraces referencing ice_init_arfs.
  • Step 3: Correlate timestamps of memory growth with journalctl entries showing pci probe/reset, ethtool activity, or kworker invocations.
  • Step 4: If you find leakage and cannot immediately patch, reduce the frequency of resets and restrict management paths that can cause reconfiguration. Plan a kernel patch rollout.

Example mitigation short list​

  • Patch kernels ASAP where vendor packages are available.
  • Limit automated reset/reprobe activity — add rate‑limiting to maintenance automation.
  • Restrict non‑privileged access to device reconfiguration sysfs and management tools.
  • Add host alerts for unexpected increases in kernel allocation failures and for kmemleak entries if enabled.

Notes on vendor mappings and Microsoft customers​

Microsoft’s product‑level attestations for Linux CVEs (for example, statements that “Azure Linux includes this open‑source library and is therefore potentially affected”) are product‑scoped inventory attestations and should be interpreted accordingly: they confirm the named Microsoft product was inspected and found to include the implicated code, but they do not imply exhaustive absence or presence across all Microsoft artifacts. For teams running Microsoft‑provided Linux artifacts — WSL kernels, Azure VM images, AKS node images, or cloud images — perform artifact‑level checks and consult Microsoft attestation pages and distribution advisories for precise mappings and timelines. In short: treat Microsoft attestations as authoritative for the named product, but verify other artifacts individually.

Final recommendations (operational checklist)​

  • Inventory: enumerate hosts that load the ice driver or include it in kernel builds. Confirm vendor kernel package versions.
  • Prioritize: push vendor kernel updates that include the CVE fix to hosts that perform frequent NIC resets, host many VMs, or are constrained in memory.
  • Detect: enable and run focused kmemleak checks in staging; monitor kernel logs and kworker activity in production.
  • Contain: temporarily reduce automated reset frequencies and restrict privileged management interfaces that can trigger reconfiguration.
  • Validate: after patching, run stress or reprobe scenarios in a controlled environment to confirm the leak no longer appears and that NIC performance remains acceptable.
  • Document: record which kernel package versions across your estate include the fix and update your asset inventory and SBOMs to reflect patched builds.

Conclusion​

CVE‑2025‑21981 is a compelling reminder that even non‑exploitable‑looking kernel bugs — a simple missing guard in a device driver’s allocation logic — can translate into serious operational impact when they occur in the kernel’s hot paths or in code paths exercised by routine maintenance events. The upstream fix is straightforward and accepted into stable trees, but the real work for operators is inventory, targeted detection, and disciplined patch rollout across vendor kernels and custom builds. Treat systems that use the ICE driver with elevated priority, instrument for kernel diagnostic signals, and coordinate patching with vendor guidance to remove this avoidable source of denial‑of‑service risk.

Source: MSRC Security Update Guide - Microsoft Security Response Center
 

Back
Top