CVE-2026-99079
Critical · 9.8CVSS
9.8
EPSS
0.5%
Published
Oct 23, 2026
CISA due date
—
Cloudanix analysis
A flaw in Linux network card drivers could let attackers corrupt memory on busy high-speed connections, risking crashes or bad data in systems that move lots of network traffic.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Full Compromise
- Component
- OS kernel
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Use-after-free in mlx5e legacy cyclic RQ XSK buffer handling: partial refill retries after RX ring full conditions leave stale WQE pointers that can free a live buffer and double-publish the same UMEM frame.
Why it matters to the business
Memory corruption or silent data corruption risks in high-speed networking workloads using Mellanox mlx5e cards with AF_XDP zero-copy sockets; can cause packet processing failures or system instability under sustained load.
How an attack unfolds
An attacker generates high-rate small-packet UDP traffic to repeatedly fill an AF_XDP RX ring, forcing XDP redirect failures and subsequent partial batched refills; stale pointers retained on unsuccessful refills allow a later retry to free an in-use buffer.
How to fix it
Apply the upstream kernel fix that immediately marks the WQE released after the driver-side free; rebuild and deploy the updated kernel image on affected systems.
How to confirm the fix worked
Confirm the patch is present in net/mlx5e code; run the zero-copy libxsk reproducer under sustained 12 Mpps load and verify absence of ownership/double-publication errors.
Typical attack path
- Flood target interface with 64-byte UDP packets at multi-million PPS rates
- Cause repeated xdp_rx_ring_full events on the AF_XDP socket
- Trigger partial refill of mlx5e legacy cyclic RQ after driver-side free
- Reuse the freed UMEM frame via the stale WQE pointer on refill retry
How to detect it
Search kernel logs and application output for spikes in xdp_rx_ring_full events accompanied by ownership or double-publication errors; correlate with mlx5e XSK refill paths under load.
- xdp_rx_ring_full
- ownership/double-publication errors
- mlx5e XSK buffer release on refill retry
What your security team should do
- Prioritize kernel updates containing the mlx5e XSK refill fix on all systems using AF_XDP
- Enable monitoring for xdp_rx_ring_full events paired with data or ownership errors
- Temporarily fall back to non-zero-copy XSK modes if patching is delayed
The record
In the Linux kernel, the following vulnerability has been resolved: net/mlx5e: Prevent stale XSK buffer release on refill retry When an XDP redirect to an AF_XDP socket fails because its RX ring is full, the XSK core frees the buffer. During the subsequent batched refill of a legacy cyclic RQ, mlx5e also releases the WQE's XSK buffer before allocating a replacement. If that refill succeeds only partially, a WQE left without a replacement retains its old buffer pointer. The buffer can meanwhile be allocated to another WQE. A later refill retry can then free the live buffer through the stale pointer and publish the same UMEM frame twice. Mark the WQE as released immediately after the driver-side free. The flag is already cleared when a replacement buffer is assigned, so refill retries no longer release stale pointers. The failure is silent and produces no kernel warning or splat. A standalone legacy cyclic-RQ zero-copy libxsk reproducer, using 64-byte UDP traffic offered at 12 Mpps, detected it: stock stopped after 2,854,914 packets in 4.094 seconds, with 4,542 xdp_rx_ring_full events and 64 ownership/double-publication errors. With this change it processed 356,904,225 packets in 30 seconds despite 571,405 xdp_rx_ring_full events, with no ownership or data errors.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|