Cloudanix VulnDB

CVE-2025-38127

High · 7.8

CVSS

7.8

EPSS

0.2%

Published

Jul 3, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in the Linux kernel's handling of certain network acceleration features on Intel cards can cause the whole system to crash when those features are used, requiring a software update to prevent unexpected downtime.

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

What it actually does

Improper rollback in ice XDP callback on Tx scheduler failure leaves XDP queues mapped to q_vectors and XDP rings pointer non-NULL, allowing subsequent use-after-free or invalid pointer dereference in __ice_update_sample during napi poll that results in general protection fault.

Why it matters to the business

Systems using Intel E810/E822 network adapters with XDP enabled can experience kernel crashes and reboots under load or when XDP programs are attached, causing network outage and service disruption; the bug is present in multiple stable kernel trees until the referenced commit.

How an attack unfolds

An attacker with the ability to load an XDP program or trigger ring allocation failure causes the ice driver to enter an inconsistent state; later softirq processing dereferences the stale ring pointer, producing a crash that may be turned into memory corruption by an adversary controlling packet timing or XDP program behavior.

How to fix it

Upgrade the Linux kernel to a version containing commit 1d3c5d0dec6797eca3a861dab0816fa9505d9c3e or later; rebuild and reboot with the patched ice driver; disable XDP on affected interfaces until the update is applied if immediate reboot is not feasible.

How to confirm the fix worked

Confirm the running kernel contains commit 1d3c5d0dec6797eca3a861dab0816fa9505d9c3e via 'git log --oneline' or package version check; attempt to attach an XDP program that previously triggered the failure path and verify no Oops or GPF occurs in ice_napi_poll or __ice_update_sample.

Typical attack path

  1. Load or attach XDP program that exercises Tx queue addition path
  2. Force Tx scheduler configuration failure (error -5)
  3. Trigger incomplete rollback leaving stale q_vector mappings
  4. Induce napi poll that calls __ice_update_sample on freed or invalid ring
  5. Observe general protection fault and potential escalation via corrupted kernel state

How to detect it

Search kernel logs for the strings 'Failed VSI LAN queue config for XDP' followed by 'Oops: general protection fault' and RIP containing __ice_update_sample or ice_napi_poll; inspect dmesg and journalctl for call traces involving XDP ring operations on ice devices.

What your security team should do

  • Prioritize patching kernel packages on all hosts with ice network devices within the next maintenance window
  • Monitor for any new EPSS increase or public exploit code targeting this XDP error path
  • Temporarily restrict unprivileged XDP loading via sysctl or seccomp until kernels are updated
  • Include the fixed commit hash in SBOM and vulnerability scanning rules for downstream distributions

The record

In the Linux kernel, the following vulnerability has been resolved: ice: fix Tx scheduler error handling in XDP callback When the XDP program is loaded, the XDP callback adds new Tx queues. This means that the callback must update the Tx scheduler with the new queue number. In the event of a Tx scheduler failure, the XDP callback should also fail and roll back any changes previously made for XDP preparation. The previous implementation had a bug that not all changes made by the XDP callback were rolled back. This caused the crash with the following call trace: [ +9.549584] ice 0000:ca:00.0: Failed VSI LAN queue config for XDP, error: -5 [ +0.382335] Oops: general protection fault, probably for non-canonical address 0x50a2250a90495525: 0000 [#1] SMP NOPTI [ +0.010710] CPU: 103 UID: 0 PID: 0 Comm: swapper/103 Not tainted 6.14.0-net-next-mar-31+ #14 PREEMPT(voluntary) [ +0.010175] Hardware name: Intel Corporation M50CYP2SBSTD/M50CYP2SBSTD, BIOS SE5C620.86B.01.01.0005.2202160810 02/16/2022 [ +0.010946] RIP: 0010:__ice_update_sample+0x39/0xe0 [ice] [...] [ +0.002715] Call Trace: [ +0.002452] <IRQ> [ +0.002021] ? __die_body.cold+0x19/0x29 [ +0.003922] ? die_addr+0x3c/0x60 [ +0.003319] ? exc_general_protection+0x17c/0x400 [ +0.004707] ? asm_exc_general_protection+0x26/0x30 [ +0.004879] ? __ice_update_sample+0x39/0xe0 [ice] [ +0.004835] ice_napi_poll+0x665/0x680 [ice] [ +0.004320] __napi_poll+0x28/0x190 [ +0.003500] net_rx_action+0x198/0x360 [ +0.003752] ? update_rq_clock+0x39/0x220 [ +0.004013] handle_softirqs+0xf1/0x340 [ +0.003840] ? sched_clock_cpu+0xf/0x1f0 [ +0.003925] __irq_exit_rcu+0xc2/0xe0 [ +0.003665] common_interrupt+0x85/0xa0 [ +0.003839] </IRQ> [ +0.002098] <TASK> [ +0.002106] asm_common_interrupt+0x26/0x40 [ +0.004184] RIP: 0010:cpuidle_enter_state+0xd3/0x690 Fix this by performing the missing unmapping of XDP queues from q_vectors and setting the XDP rings pointer back to NULL after all those queues are released. Also, add an immediate exit from the XDP callback in case of ring preparation failure.

Affected packages

Ecosystem Package Introduced Fixed
Debian:11 linux 0 No fix
Debian:12 linux 0 No fix
Debian:13 linux 0 No fix
Linux Kernel 5.5.0 6.6.94
Mageia:9 kernel 0 6.6.101-1.mga9
Mageia:9 kernel-linus 0 6.6.101-1.mga9
Mageia:9 kmod-virtualbox 0 7.1.10-7.mga9
Mageia:9 kmod-xtables-addons 0 3.24-83.mga9
Mageia:9 wireless-regdb 0 20250710-1.mga9
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.65.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.65.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_14 0 1-150600.1.5.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_14 0 1-150600.13.3.4
SUSE:Linux Enterprise Live Patching 15 SP7 kernel-livepatch-SLE15-SP7-RT_Update_3 0 1-150700.1.5.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-64kb 0 6.4.0-150600.23.65.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default 0 6.4.0-150600.23.65.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default-base 0 6.4.0-150600.23.65.1.150600.12.28.4
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-source 0 6.4.0-150600.23.65.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-zfcpdump 0 6.4.0-150600.23.65.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.65.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-obs-build 0 6.4.0-150600.23.65.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-source 0 6.4.0-150600.23.65.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-syms 0 6.4.0-150600.23.65.1
SUSE:Linux Enterprise Module for Legacy 15 SP6 kernel-default 0 6.4.0-150600.23.65.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.48.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.48.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.48.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 kernel-default 0 6.4.0-150600.23.65.1
SUSE:Real Time Module 15 SP6 kernel-rt 0 6.4.0-150600.10.49.1
SUSE:Real Time Module 15 SP6 kernel-rt_debug 0 6.4.0-150600.10.49.1
SUSE:Real Time Module 15 SP6 kernel-source-rt 0 6.4.0-150600.10.49.1
SUSE:Real Time Module 15 SP6 kernel-syms-rt 0 6.4.0-150600.10.49.1
SUSE:Real Time Module 15 SP7 kernel-rt 0 6.4.0-150700.7.13.1
SUSE:Real Time Module 15 SP7 kernel-source-rt 0 6.4.0-150700.7.13.1
SUSE:Real Time Module 15 SP7 kernel-syms-rt 0 6.4.0-150700.7.13.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.65.1
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.65.1
openSUSE:Leap 15.6 kernel-azure 0 6.4.0-150600.8.48.1
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.65.1
openSUSE:Leap 15.6 kernel-default 0 6.4.0-150600.23.65.1
openSUSE:Leap 15.6 kernel-default-base 0 6.4.0-150600.23.65.1.150600.12.28.4
openSUSE:Leap 15.6 kernel-docs 0 6.4.0-150600.23.65.1
openSUSE:Leap 15.6 kernel-kvmsmall 0 6.4.0-150600.23.65.1
openSUSE:Leap 15.6 kernel-obs-build 0 6.4.0-150600.23.65.1
openSUSE:Leap 15.6 kernel-obs-qa 0 6.4.0-150600.23.65.1
openSUSE:Leap 15.6 kernel-rt 0 6.4.0-150600.10.49.1
openSUSE:Leap 15.6 kernel-rt_debug 0 6.4.0-150600.10.49.1
openSUSE:Leap 15.6 kernel-source 0 6.4.0-150600.23.65.1
openSUSE:Leap 15.6 kernel-source-azure 0 6.4.0-150600.8.48.1
openSUSE:Leap 15.6 kernel-source-rt 0 6.4.0-150600.10.49.1
openSUSE:Leap 15.6 kernel-syms 0 6.4.0-150600.23.65.1
openSUSE:Leap 15.6 kernel-syms-azure 0 6.4.0-150600.8.48.1
openSUSE:Leap 15.6 kernel-syms-rt 0 6.4.0-150600.10.49.1
openSUSE:Leap 15.6 kernel-zfcpdump 0 6.4.0-150600.23.65.1
openSUSE:Leap 16.0 dtb-aarch64 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-64kb 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default-base 0 6.12.0-160000.6.1.160000.2.4
openSUSE:Leap 16.0 kernel-docs 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-kvmsmall 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-build 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-qa 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-rt 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-source 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-syms 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-zfcpdump 0 6.12.0-160000.6.1

Related vulnerabilities