HIGH 7.8

CVE-2026-53362: Linux Kernel IPv6 Memory Corruption in Packet Fragmentation

A memory corruption vulnerability exists in the Linux kernel's IPv6 packet fragmentation handling. When an unprivileged user sends UDP traffic over IPv6 using specific socket options (MSG_MORE and MSG_SPLICE_PAGES together), the kernel miscalculates buffer sizes during packet assembly. This causes data to be written beyond the intended memory boundary, potentially corrupting kernel memory. The flaw stems from incorrect accounting of fragment gap bytes when the kernel uses the optimized paged-allocation code path for large packets.

Source data · NVD / CISA · public domain

CVSS
3.1 · 7.8 HIGH · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weaknesses (CWE)
Affected products
1 configuration(s)
Published / Modified
2026-07-04 / 2026-07-22

NVD description (verbatim)

In the Linux kernel, the following vulnerability has been resolved: ipv6: account for fraggap on the paged allocation path In __ip6_append_data(), when the paged-allocation branch is taken (MSG_MORE / NETIF_F_SG / large fraglen), alloclen and pagedlen are computed as alloclen = fragheaderlen + transhdrlen; pagedlen = datalen - transhdrlen; datalen already includes fraggap (datalen = length + fraggap). When fraggap is non-zero, this is not the first skb and transhdrlen is zero. The fraggap bytes carried over from the previous skb are copied just past the fragment headers in the new skb's linear area. The linear area is therefore undersized by fraggap bytes while pagedlen is overstated by the same amount, and the copy writes past skb->end into the trailing skb_shared_info. An unprivileged user can trigger this via a UDPv6 socket using MSG_MORE together with MSG_SPLICE_PAGES. The bad accounting was introduced by commit 773ba4fe9104 ("ipv6: avoid partial copy for zc"). Before commit ce650a166335 ("udp6: Fix __ip6_append_data()'s handling of MSG_SPLICE_PAGES"), the negative copy value caused -EINVAL to be returned. That later commit allowed MSG_SPLICE_PAGES to proceed in this case, making the corruption triggerable. The non-paged branch sets alloclen to fraglen, which already accounts for fraggap because datalen does. Bring the paged branch in line by adding fraggap to alloclen and subtracting it from pagedlen. After this adjustment, copy no longer collapses to -fraggap on the paged path, so remove the stale comment describing that old arithmetic. Since a negative copy is no longer expected for a valid MSG_SPLICE_PAGES case, remove the MSG_SPLICE_PAGES exception from the negative copy check.

6 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-53362 is a memory corruption vulnerability in the Linux kernel's __ip6_append_data() function. The vulnerability occurs in the paged-allocation branch when processing IPv6 packets with fragmentation. The issue involves incorrect calculation of alloclen and pagedlen variables: datalen already includes fraggap bytes, but the code fails to account for this when computing alloclen, resulting in undersized linear buffer allocation. Simultaneously, pagedlen becomes overstated by the same amount. When the kernel copies fraggap bytes into the new skb's linear area, the copy operation writes past skb->end into skb_shared_info, corrupting kernel memory. The vulnerability was introduced by commit 773ba4fe9104 and became exploitable after commit ce650a166335, which removed a safeguard that previously returned -EINVAL for this condition. The fix adds fraggap to alloclen and subtracts it from pagedlen to restore correct sizing.

Business impact

This vulnerability allows unprivileged local users to corrupt kernel memory, potentially leading to denial of service, privilege escalation, or information disclosure. Organizations running multi-user Linux systems or containerized environments where untrusted users can create UDP sockets face elevated risk. The flaw does not require special capabilities, making it accessible to any user with network socket privileges. Successful exploitation could compromise system stability and security, requiring system restart and potential recovery procedures.

Affected systems

The vulnerability affects the Linux kernel. Exact affected versions depend on when commit 773ba4fe9104 was merged into the kernel branch you are running and whether commit ce650a166335 has been applied. Organizations should check the kernel version, build date, and vendor-specific kernel patches to determine if their systems are vulnerable. Verify against the Linux kernel security advisory and your distribution's security bulletins for specific version ranges and available patches.

Exploitability

Exploitability is relatively high for systems with unprivileged users. An attacker requires only local access and the ability to create UDP sockets—capabilities typically available to any user account on multi-user systems. Exploitation requires no special privileges (PR:L indicates low privilege), no user interaction, and minimal attack complexity. The attack surface includes any system accepting IPv6 UDP traffic where MSG_MORE and MSG_SPLICE_PAGES options can be combined. Container and cloud environments are particularly vulnerable if they allow unprivileged workloads to create raw sockets.

Remediation

Apply the upstream Linux kernel patch that corrects the alloclen and pagedlen calculations by adding fraggap to alloclen and subtracting it from pagedlen. This fix also removes the now-obsolete MSG_SPLICE_PAGES exception from the negative copy check. Verify the fix against the official Linux kernel repository and your distribution's security advisories to identify the specific kernel version containing the patch. If immediate patching is not possible, restrict UDP socket creation on multi-user systems via SELinux, AppArmor, or seccomp policies, though this may impact legitimate applications.

Patch guidance

Monitor your Linux distribution's security announcements for kernel updates addressing CVE-2026-53362. Apply the patched kernel version as soon as it becomes available for your distribution. Test the update in a non-production environment first to ensure compatibility with your workloads. Verify that the kernel version in use includes the fix that adjusts alloclen and pagedlen calculations in __ip6_append_data(). Document the patch date and version in your change management system. After patching, reboot systems to load the new kernel.

Detection guidance

Detection of successful exploitation attempts is challenging without kernel debugging enabled. Monitor system logs for unexpected kernel panics, memory corruption errors, or crashes correlating with UDP traffic patterns. Enable kernel audit logging to track socket creation by unprivileged users using MSG_SPLICE_PAGES options if your monitoring tools support this granularity. Network-based detection is impractical since the attack is triggered locally. Prioritize detection through patch compliance scanning to identify unpatched systems rather than attempting to detect active exploitation after the fact.

Why prioritize this

This vulnerability merits immediate prioritization due to its HIGH severity, local attack surface, and lack of special privilege requirements. The combination of memory corruption (potential for privilege escalation), ease of exploitation by unprivileged users, and broad applicability across Linux deployments creates significant risk. Systems with shared access or container environments should be patched first. Although KEV status is currently false, the vulnerability's inherent exploitability makes it a natural candidate for rapid weaponization and active exploitation once public awareness increases.

Risk score, explained

The CVSS 3.1 score of 7.8 (HIGH) reflects: local attack vector (AV:L) due to the requirement for local access, low attack complexity (AC:L) as the condition is straightforward to trigger, low privilege requirement (PR:L) as unprivileged users can exploit it, no user interaction (UI:N), unchanged scope (S:U), and high impact on confidentiality (C:H), integrity (I:H), and availability (A:H) through memory corruption. The score does not incorporate exploitability or remediation timelines but represents the inherent severity of successful exploitation.

Frequently asked questions

Can this vulnerability be exploited remotely?

No. The vulnerability requires local access (AV:L) to create UDP sockets and issue specific socket options. Remote attackers cannot trigger this flaw directly. However, if a system accepts untrusted code execution or allows unprivileged container workloads, effective remote compromise is possible through those intermediate means.

What Linux versions are affected?

The vulnerability affects kernels containing commit 773ba4fe9104 but missing the fix that corrects alloclen and pagedlen accounting. Verify your specific kernel version, build date, and distribution-specific patches against the Linux kernel security advisory and your vendor's security bulletins. Do not assume all recent kernels are vulnerable; check official sources for your distribution.

Can SELinux or AppArmor prevent exploitation?

Partially. Restrictive MAC policies can deny unprivileged users the ability to create UDP sockets or use MSG_SPLICE_PAGES, which prevents the attack. However, such restrictions may break legitimate applications. The proper solution is to patch the kernel. MAC policies serve as temporary mitigation while patches are being rolled out.

What is the difference between MSG_MORE and MSG_SPLICE_PAGES?

MSG_MORE is a socket option that signals to the kernel that more data is coming, allowing the kernel to batch packet fragments. MSG_SPLICE_PAGES is an optimization that avoids copying data by using memory pages directly. When combined incorrectly on IPv6 UDP, these options trigger the miscalculation in __ip6_append_data() that causes the overflow.

This analysis is based on publicly available information as of the publication date. CVSS scores, affected product lists, and patch availability are provided for informational purposes; verify all details against the official Linux kernel security advisory and your distribution's security bulletins before making remediation decisions. No exploit code or step-by-step exploitation techniques are provided. This vulnerability requires local access and affects unprivileged users with socket creation capabilities. Organizations should conduct their own risk assessment based on system configuration, deployment model, and exposure to untrusted users. Patch availability and timeline vary by distribution; consult your vendor directly for supported versions and update schedules. Source: NVD (public-domain), retrieved 2026-08-13. Analysis generated by SEC.co (claude-haiku-4-5).