Skip to main content

Linux Kernel CVE-2026-53235

| EUVDEUVD-2026-39326 HIGH
2026-06-25 416baaa9-dc9f-4396-8d5f-8c081fb06d67 GHSA-rfp8-j4xw-2g59
7.5
CVSS 3.1 · Vendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Share

Severity by source

Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67) PRIMARY
7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI
5.9 MEDIUM

Network-triggerable without auth (AV:N/PR:N/UI:N) but requires a specific napi_gro_frags header-split receive condition (AC:H); impact is a kernel panic, so A:H only with C:N/I:N.

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

Primary rating from Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67).

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

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

Lifecycle Timeline

5
Analysis Generated
Jun 28, 2026 - 09:40 vuln.today
CVSS changed
Jun 28, 2026 - 08:22 NVD
7.5 (HIGH)
Patch available
Jun 25, 2026 - 10:32 EUVD
CVE Published
Jun 25, 2026 - 09:16 cve.org
UNKNOWN (no severity yet)
CVE Published
Jun 25, 2026 - 09:16 cve.org
HIGH 7.5

DescriptionCVE.org

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

net: add pskb_may_pull() to skb_gro_receive_list()

skb_gro_receive_list() calls skb_pull(skb, skb_gro_offset(skb)) without first ensuring the data is in the linear area via pskb_may_pull(). When the skb arrives via napi_gro_frags(), skb_headlen can be 0 (all data in page fragments) while skb_gro_offset is non-zero (after IP+TCP header parsing). The skb_pull() then decrements skb->len by skb_gro_offset but skb->data_len stays unchanged, hitting BUG_ON(skb->len < skb->data_len) in __skb_pull().

The UDP fraglist GRO path already contains this guard at udp_offload.c:749. Adding it to skb_gro_receive_list() itself provides centralized protection for all callers (TCP, UDP, and any future protocols), and ensures the precondition of skb_pull() is satisfied before it is called.

On pskb_may_pull() failure, set NAPI_GRO_CB(skb)->flush = 1 so the skb is not held as a new GRO head and is instead delivered through the normal receive path, matching the UDP handling.

AnalysisAI

Remote denial-of-service in the Linux kernel networking stack (GRO path) lets attackers crash a host by triggering a reachable kernel BUG_ON() panic. The flaw lives in skb_gro_receive_list(), which calls skb_pull() without a preceding pskb_may_pull() guard; when frames arrive via napi_gro_frags() with all data in page fragments (skb_headlen == 0) and a non-zero GRO offset, the pull makes skb->len drop below skb->data_len and hits BUG_ON(skb->len < skb->data_len). It affects kernels from 6.10 up to the fixed stable releases, carries CVSS 7.5 (availability-only), has a low EPSS of 0.18% (7th percentile), is not in CISA KEV, and has no public exploit identified at time of analysis.

Technical ContextAI

The bug is in Generic Receive Offload (GRO), a kernel feature that coalesces incoming network segments into larger skbs to reduce per-packet processing cost. Specifically skb_gro_receive_list() in net/core handles list-style GRO aggregation (used by TCP, UDP fraglist, and other protocols). After IP+TCP header parsing, skb_gro_offset(skb) is non-zero, but on NICs delivering packets through napi_gro_frags() the linear header area can be empty (skb_headlen == 0) with all payload sitting in paged fragments. Calling skb_pull(skb, skb_gro_offset(skb)) decrements skb->len without changing skb->data_len, violating the skb invariant and triggering BUG_ON(skb->len < skb->data_len) inside __skb_pull(). The root cause is a missing precondition check (the data was never guaranteed pulled into the linear area), conceptually a reachable assertion / improper input validation class issue (no CWE was assigned in the source data). The UDP fraglist GRO path already had the equivalent pskb_may_pull() guard at udp_offload.c:749; the fix centralizes that guard inside skb_gro_receive_list() so all current and future callers are protected, and on failure sets NAPI_GRO_CB(skb)->flush = 1 so the skb falls back to the normal receive path instead of being held as a GRO head.

RemediationAI

Vendor-released patch: upgrade to a fixed stable kernel - 6.12.94, 6.18.36, 7.0.13, or 7.1 (or your distribution's backported equivalent), corresponding to the kernel.org stable commits 0cde3a004119db637b401c54e77536e4145fc0b4, 848571dcbbbea7ba44dd4f7ebe1fbb274afe08ac, 9e636c995b7beeb74ea882968248752821c244c4, and f2bb3434544454099a5b6dec213567267b05d79d. As an interim compensating control where patching is not yet possible, you can disable Generic Receive Offload on the affected interfaces with 'ethtool -K <iface> gro off', which removes the vulnerable coalescing path entirely; the trade-off is reduced receive throughput and higher CPU per packet on high-bandwidth links, so test impact before applying broadly. Validate against your distro advisory and the NVD entry (https://nvd.nist.gov/vuln/detail/CVE-2026-53235) for backport availability, and prioritize hosts exposed to untrusted network traffic or running on NIC drivers that use the napi_gro_frags() receive path.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

CVE-2026-53235 vulnerability details – vuln.today

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