CVE-2026-53235: Linux Kernel GRO Denial of Service Vulnerability
A vulnerability exists in the Linux kernel's Generic Receive Offload (GRO) handling path. The kernel attempts to pull data from a network packet without verifying that the data is actually available in the expected location. When packets arrive through certain network paths with fragmented data, this check is bypassed, causing the kernel to crash. The fix adds a safety check before accessing the data, ensuring the packet structure is valid before manipulation.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Weaknesses (CWE)
- —
- Affected products
- 8 configuration(s)
- Published / Modified
- 2026-06-25 / 2026-07-08
NVD description (verbatim)
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.
4 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
In skb_gro_receive_list(), the function calls skb_pull(skb, skb_gro_offset(skb)) without first invoking pskb_may_pull() to ensure the required data is in the linear buffer. When skbs arrive via napi_gro_frags() with zero headlen and all data in page fragments, skb_gro_offset can be non-zero after header parsing. The unguarded skb_pull() decrements skb->len by skb_gro_offset while leaving skb->data_len unchanged, triggering BUG_ON(skb->len < skb->data_len) in __skb_pull(). The UDP fraglist GRO code at udp_offload.c:749 already contains this guard. The fix centralizes the pskb_may_pull() check in skb_gro_receive_list() itself and sets NAPI_GRO_CB(skb)->flush = 1 on failure to route the skb through the normal receive path rather than holding it as a GRO head.
Business impact
This vulnerability enables a denial-of-service condition affecting any networked Linux system. Remote attackers can craft malicious or fragmented network traffic to trigger kernel panics or system hangs on vulnerable hosts. The impact extends to cloud infrastructure, network appliances, containers, and any service relying on Linux kernel GRO optimizations. Systems supporting high-throughput network traffic or load balancing are particularly exposed. Recovery requires system reboot, causing service interruption.
Affected systems
All Linux distributions and kernel versions using the affected GRO code path are vulnerable. This includes mainstream distributions (RHEL, Ubuntu, Debian, SUSE) and embedded/mobile variants. The vulnerability affects both x86 and ARM architectures. Kernel versions without the pskb_may_pull() guard in skb_gro_receive_list() are susceptible. Check your distribution's kernel version against published advisories to determine if your system is affected—this must be verified against your vendor's CVE advisory or security bulletin.
Exploitability
Exploitability is high. No authentication or special privileges are required—an attacker need only send specially crafted network packets to a vulnerable system. The attack surface is broad: any remote network path to the target qualifies. Packets can be sent without user interaction. The CVSS 3.1 score of 7.5 (HIGH severity) reflects the network accessibility and availability impact, though there is no confidentiality or integrity compromise. Public exploit code is not required; simply forwarding appropriately structured fragmented packets suffices.
Remediation
Kernel developers must apply the fix adding pskb_may_pull() before the skb_pull() call in skb_gro_receive_list(). This matches the existing guard in the UDP fraglist GRO path and ensures data is in the linear buffer before manipulation. On check failure, set NAPI_GRO_CB(skb)->flush = 1 to route the packet normally. Linux distributions must backport this fix to all supported kernel versions. End users and operators should update to patched kernel versions provided by their distribution.
Patch guidance
Monitor your Linux distribution's security advisory channels (Red Hat Security Advisories, Ubuntu Security Notices, SUSE Security Updates, etc.) for kernel patches addressing CVE-2026-53235. Most vendors have already published patched kernel versions. Apply patches via your standard update mechanism (yum, apt, zypper, etc.) and reboot to activate the new kernel. If you maintain custom kernels, apply the pskb_may_pull() guard directly to skb_gro_receive_list() in net/core/skbuff.c and rebuild. Verify the patch version against the vendor advisory to ensure completeness.
Detection guidance
Monitor system logs for kernel BUG_ON panics or kernel oops messages mentioning __skb_pull() or skb_gro_receive_list(). In cloud environments, watch for unexpected instance crashes or auto-reboot cycles following network traffic patterns. Intrusion detection systems can flag fragmented or malformed GRO packets sent to target systems, though legitimate fragmented traffic must be carefully differentiated. Kernel performance profiling may reveal GRO processing anomalies before crashes occur. Host-based monitoring of kernel module integrity and crash dump collection aid post-incident analysis.
Why prioritize this
This vulnerability rates HIGH priority due to its network-accessible attack surface, ease of exploitation, and denial-of-service impact on critical systems. No user interaction or authentication is required. Linux systems handling significant network traffic—cloud infrastructure, load balancers, proxies, and data center hardware—face immediate risk. The broad affected population (all Linux distributions) and potential for coordinated attacks warrant rapid patching. Although no active KEV listing yet, the vulnerability's simplicity and network exposure make it attractive to attackers.
Risk score, explained
CVSS 3.1 assigns 7.5 (HIGH) due to: Network vector (AV:N)—attacks require only network access; Low complexity (AC:L)—no special conditions needed; No privilege or user interaction required (PR:N, UI:N); Scope unchanged (S:U)—impact limited to the affected system; Zero confidentiality or integrity impact (C:N, I:N); High availability impact (A:H)—kernel panic causes denial of service. The score reflects a serious but not critical threat; no data theft occurs, but service disruption is certain.
Frequently asked questions
Can this vulnerability be exploited from within a private network, or only from the internet?
The vulnerability is exploitable from any network path that can send packets to the target system. While remote (internet-based) attacks are simplest, internal network attackers or local container neighbors can also craft malicious packets. If your Linux host is reachable on any network interface, it is at risk.
Do I need to reboot immediately after patching the kernel?
Yes. Kernel patches for CVE-2026-53235 require a reboot to take effect—the old kernel remains in memory until restart. Schedule downtime and reboot as soon as feasible after applying the patch, prioritizing critical systems first. Some environments support live kernel patching, but verify your distribution's capabilities.
How can I tell if my Linux kernel is vulnerable without examining source code?
Check your running kernel version with `uname -r` and compare it against your distribution's published list of patched versions in the security advisory for CVE-2026-53235. Your vendor's security bulletin will specify exactly which kernel versions are fixed. Many distributions also provide tools (e.g., `ubuntu-support-status`) that list vulnerable installed packages.
Are containers or virtual machines safer from this vulnerability?
No. Containers and VMs share the host Linux kernel, so all are vulnerable if the kernel is unpatched. VMs may slightly delay exploit delivery if network traffic is heavily filtered by the hypervisor, but VMs on bridged or NAT networks remain at full risk. Container networks with inter-pod communication also enable attacks. Patch the host kernel to protect all guests.
This analysis is based on publicly available CVE data and Linux kernel security advisories current as of the publication date. Patch version numbers, affected kernel releases, and vendor-specific remediation steps must be verified directly against your Linux distribution's official security advisory—no specific version numbers are stated here as that information changes across vendors. This vulnerability assessment does not constitute professional security advice for your specific environment. Organizations should conduct independent risk assessment, patch testing, and deployment planning in consultation with their security and operations teams. No exploit code or weaponized proof-of-concept is provided or endorsed. Source: NVD (public-domain), retrieved 2026-08-03. Analysis generated by SEC.co (claude-haiku-4-5).
Affected vendors
Related vulnerabilities
- CVE-2026-0270HIGHCortex XSOAR Path Traversal on Linux — Exploit Requirements & Patching Guide
- CVE-2026-0271HIGHPalo Alto Networks Prisma Access Agent Linux Privilege Escalation
- CVE-2026-10001HIGHChrome Sandbox Escape via PerformanceManager Use-After-Free
- CVE-2026-10002HIGHGoogle Chrome PDFium Use-After-Free Vulnerability (CVSS 8.8)
- CVE-2026-10003HIGHChrome Use-After-Free Code Execution Vulnerability Analysis
- CVE-2026-10006HIGHChrome WebAudio Race Condition Remote Code Execution
- CVE-2026-10007HIGHChrome Use-After-Free in SVG Arbitrary Code Execution (CVSS 8.8)
- CVE-2026-10009HIGHChrome Skia Integer Overflow Sandbox Escape – Patch Guidance