CVE DatabaseCVE-2026-53362
한국어 권고문 →
CVE-2026-533627.8/HIGHCISA KEVCWE-787CWE-122

Linux Kernel IPv6 Socket Memory Corruption Vulnerability (CVE-2026-53362) Analysis and Mitigation Guide

Affected Vendors
linux
Affected Components
linux_kernel
Published Date
2026-07-04

Executive & SecOps Summary

SECOPS ASSESSMENT
Affected Scope

Linux kernel systems utilizing UDPv6 sockets with MSG_MORE and MSG_SPLICE_PAGES flags

Impact

Unprivileged local users can trigger a heap out-of-bounds write, leading to system crash (Denial of Service) or Local Privilege Escalation (LPE)

Mitigation

Apply the latest stable kernel patches from upstream or your Linux distribution vendor, and restrict unprivileged user namespaces if immediate patching is not feasible

Affected Products & Version Scope

Linux kernel versions affected since commit `773ba4fe9104` up to the patched releases. * Systems running UDPv6 services with MSG_SPLICE_PAGES enabled.

Remediation & Live Workaround Commands

PATCH & WORKAROUND

1. Kernel Patch Application (Recommended)

Apply the official upstream patches or update your distribution's kernel package to the latest stable release.

Patch Diff Snippet (`__ip6_append_data`):

c
// Adjust the paged branch to account for fraggap
alloclen += fraggap;
pagedlen -= fraggap;

2. Temporary Mitigation

If rebooting or patching is not immediately possible, restrict unprivileged user namespace creation to limit the attack surface:

bash
# Temporarily disable unprivileged user namespaces
sudo sysctl -w kernel.unprivileged_userns_clone=0

# Persist the configuration
echo "kernel.unprivileged_userns_clone=0" | sudo tee -a /etc/sysctl.d/99-disable-userns.conf
Recommended Security Control & Mitigation Partner
SentinelOne Singularity AI EDR
Immediately update your Linux kernel to the latest patched version and reboot the system to mitigate the risk of local privilege escalation.

Block Kernel Privilege Escalation & Ransomware Payloads Before You Can Reboot

Protect unpatched Windows, Linux, and macOS workloads against in-memory exploitation and lateral movement with autonomous EDR.

100% MITRE ATT&CK Detection · 1-Click Rollback

Technical Root Cause & Exploitation Mechanics

This vulnerability (CVE-2026-53362) is a heap-based buffer overflow (CWE-787, CWE-122) residing in the IPv6 implementation of the Linux kernel, specifically within the __ip6_append_data() function.

Root Cause & Exploit Mechanics

  • Incorrect Accounting: In __ip6_append_data(), when the paged-allocation path is triggered (due to MSG_MORE, NETIF_F_SG, or a large fraglen), alloclen and pagedlen are calculated as follows:
  • alloclen = fragheaderlen + transhdrlen;
  • pagedlen = datalen - transhdrlen;
  • Fraggap Omission: The datalen variable already accounts for the fragmentation gap (datalen = length + fraggap). When fraggap is non-zero (indicating this is not the first skb), transhdrlen is zero.
  • Buffer Overrun: The fraggap bytes carried over from the previous skb are copied immediately past the fragment headers in the new skb's linear area. Consequently, the linear area is undersized by fraggap bytes while pagedlen is overstated by the same amount.
  • Memory Corruption: This discrepancy causes the copy operation to write past the end of the buffer (skb->end) and corrupt the trailing skb_shared_info structure.

An unprivileged local attacker can reliably trigger this vulnerability via a UDPv6 socket using MSG_MORE in conjunction with MSG_SPLICE_PAGES, potentially achieving kernel-level code execution.

Official Vendor Advisories & References

NVD Original English Description

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.

SecOps Advisory Dispatch & RSS Feed

Subscribe to Daily Vulnerability Briefings & KEV Alerts

Concise morning briefings for SecOps, DevSecOps, and SRE teams covering newly exploited CVEs and mitigation priorities.

Slack / Teams / RSS Feed:
CVE-2026-53362: Linux Kernel IPv6 Socket Memory Corruption Vulnerability (CVE-2026-53362) Analysis and Mitigation Guide (CVSS 7.8) | CVE Pulse