Skip to main content

Linux Kernel CVE-2026-72046

| EUVDEUVD-2026-59004 CRITICAL
2026-08-15 416baaa9-dc9f-4396-8d5f-8c081fb06d67 GHSA-9vwj-6q4v-p5m2
Critical
Disputed · 9.8 Vendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Share

Severity by source

Sources disagree (Medium–Critical)
Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67) PRIMARY
9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
5.6 MEDIUM

Triggered by network traffic (AV:N, PR:N) but needs header-split+HW-GRO plus an out-of-order race (AC:H); impact is limited same-host header leakage and throughput loss, so C/I/A each Low.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
SUSE
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Red Hat
7.0 MEDIUM
qualitative

vuln.today treats the vendor’s rating as authoritative. A higher third-party CVSS (e.g. CISA-ADP) is shown for transparency but does not drive the headline severity.

CVSS VectorVendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

5
Analysis Generated
Aug 17, 2026 - 06:28 vuln.today
CVSS changed
Aug 17, 2026 - 06:22 NVD
9.8 (CRITICAL)
Patch available
Aug 15, 2026 - 07:20 EUVD
CVE Published
Aug 15, 2026 - 06:21 cve.org
CRITICAL 9.8
CVE Published
Aug 15, 2026 - 06:21 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

In the Linux kernel, the following vulnerability has been resolved:

gve: fix header buffer corruption with header-split and HW-GRO

The DQO RX datapath programs a per-buffer-queue-descriptor header_buf_addr at post time and reads the split header back at completion time. Both the post and the read currently index the header buffer by queue position rather than by the buffer's identity:

  • post (gve_rx_post_buffers_dqo): header_buf_addr is computed from

bufq->tail

  • read (gve_rx_dqo): the header is read from desc_idx (the completion

queue head index)

This relies on the buffer-queue index and the completion-queue index being equal for the start of every packet, i.e. on the device consuming posted buffers and returning completions in the exact same order. That assumption does not hold once HW-GRO is enabled with multiple flows: coalesced segments are accepted and completed in an order that may differ from the order buffers were posted, and segments from different flows may interleave.

That results in two problems:

  1. Wrong header slot on read. Because the read offset is derived from

the completion index (desc_idx) while the device wrote the header to the address programmed for the buffer's buf_id, the driver can copy a header belonging to a different packet. This shows up as throughput drop (about 30% drop and large numbers of TCP retransmissions) with header-split and HW-GRO both enabled and many streams.

  1. Header buffer reused while still owned by the device. The driver

advances bufq->head by one per completion and re-posts buffers based on that. Arrival of N RX completions only guarantees that at least N RX buffer descriptors have been read by the device. It does not guarantee that the device has relinquished the ownership of all the buffers corresponding to those N descriptors. With out-of-order completions (e.g. the completion for a packet copied into buffer N arrives before the completion for a packet copied into buffer N-1), the driver can re-post and overwrite a header buffer that the device is still going to write into, corrupting the header of a packet whose completion has not yet been processed.

Fix both issues by indexing the header buffer by buf_id on both the post and read paths. Reading from buf_id's slot is therefore always correct regardless of completion ordering (fixes problem 1).

Indexing by buf_id also ties each header slot to the lifetime of its buffer state. A buffer state is only returned to the free/recycle lists when its own completion (buf_id) is processed, so its header slot can only be re-posted after the device is done with it. This makes header slot reuse safe under out-of-order completions (fixes problem 2).

Allocate (gve_rx_alloc_hdr_bufs) and free (gve_rx_free_hdr_bufs) the header buffers based on num_buf_states to match the buf_id indexing.

AnalysisAI

Header buffer corruption in the Linux kernel gve (Google Virtual Ethernet) driver's DQO RX datapath lets header bytes from one packet be copied onto another, and lets header buffers be re-posted while the device still owns them, when both header-split and HW-GRO are enabled with many concurrent flows. The gve driver is used by Google Cloud Platform Linux VMs, so exposure is limited to GCP guests running affected kernels with that specific offload configuration. There is no public exploit identified at time of analysis, EPSS is very low (0.20%), and the observed effect is roughly a 30% throughput drop with heavy TCP retransmissions rather than code execution.

Technical ContextAI

The bug is in the DQO (descriptor queue offload) RX path of the gve driver. Each buffer-queue descriptor programs a header_buf_addr at post time and the split header is read back at completion time. The defect is that both post (gve_rx_post_buffers_dqo, indexing by bufq->tail) and read (gve_rx_dqo, indexing by desc_idx, the completion-queue head) key the header buffer by queue position rather than by the buffer's own buf_id. That is only correct if the device returns completions in the exact order buffers were posted. HW-GRO breaks that assumption: coalesced segments from multiple flows are completed out of order and interleaved, so a completion index no longer maps to the buffer that actually received the header. The class of defect is a state/identity mismatch under concurrency (effectively a use-after-relinquish/aliasing bug); NVD lists the CWE as N/A. The fix indexes the header buffer by buf_id on both paths and sizes the header-buffer allocation by num_buf_states, tying each header slot to its buffer's lifetime.

RemediationAI

Vendor-released patch: update to a fixed Linux stable kernel - 6.12.101, 6.18.40, or 7.1.5 (or 7.2-rc1 on the development branch) - matching your branch, using the commits published at git.kernel.org/stable and the NVD advisory at https://nvd.nist.gov/vuln/detail/CVE-2026-72046. If you cannot reboot into a fixed kernel immediately, the practical compensating control is to disable one of the two offloads that together trigger the bug: turn off hardware GRO with 'ethtool -K <iface> rx-gro-hw off', or disable header-split, on affected GCP interfaces. The trade-off is reduced RX offload efficiency and somewhat higher CPU/latency on high-throughput workloads, but it removes the out-of-order completion condition and restores correct header handling until the kernel is upgraded. This applies only to hosts using the gve driver; no action is needed on non-GCP or non-gve systems.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

CVE-2026-72046 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy