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.
Published: 2026-07-04
Score: 7.8 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The flaw exists in the Linux kernel’s IPv6 stack within the __ip6_append_data() function. When the paged‑allocation path is used, the linear buffer is sized too small and the paged buffer too large because fragment gaps (fraggap) are not properly accounted for. This mismatch causes a write past skb->end into the skb_shared_info structure, corrupting kernel memory and potentially leading to a crash or denial of service.

Affected Systems

The vulnerability impacts any kernel IPv6 implementation that has not incorporated the fix introduced by commit ce650a166335. All kernel releases preceding that commit are vulnerable unless a backport or downstream patch is applied.

Risk and Exploitability

Exploitation requires only local access; any user who can open a UDPv6 socket MSG_MORE and MSG_SPLICE_PAGES flags simultaneously. The EPSS score is under 1 % and the vulnerability is not listed in CISA KEV, indicating a low probability of widespread exploitation. The CVSS score of 7.8 reflects a high risk of a local out‑of‑bounds write that could result in denial of service or kernel crash.

Generated by OpenCVE AI on July 22, 2026 at 13:05 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that contains commit ce650a166335 or a later downstream fix.
  • Modify services to ensure that no UDPv6 socket is created with both MSG_MORE and MSG_SPLICE_PAGES flags simultaneously.
  • If an immediate kernel upgrade is not possible, enable kernel hardening features such as KASLR, restrict socket buffer allocations, and enforce tighter memory protection of any memory corruption.

Generated by OpenCVE AI on July 22, 2026 at 13:05 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4688-1 linux security update
Debian DSA Debian DSA DSA-6381-1 linux security update
History

Sat, 18 Jul 2026 08:00:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7.0, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H'}

cvssV3_1

{'score': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}


Mon, 06 Jul 2026 12:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-131
References
Metrics threat_severity

None

cvssV3_1

{'score': 7.0, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H'}

threat_severity

Important


Mon, 06 Jul 2026 09:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-119
CWE-787

Mon, 06 Jul 2026 04:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-119
CWE-787

Sun, 05 Jul 2026 20:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-119
CWE-787

Sun, 05 Jul 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-119
CWE-787

Sat, 04 Jul 2026 12:15:00 +0000

Type Values Removed Values Added
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.
Title ipv6: account for fraggap on the paged allocation path
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-07-18T07:33:31.678Z

Reserved: 2026-06-09T07:44:35.400Z

Link: CVE-2026-53362

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

Severity : Important

Publid Date: 2026-07-04T00:00:00Z

Links: CVE-2026-53362 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-07-22T13:15:12Z

Weaknesses
  • CWE-131

    Incorrect Calculation of Buffer Size