CVE-2026-52943: Linux Kernel Zero-Copy Buffer Use-After-Free Privilege Escalation
A use-after-free vulnerability exists in the Linux kernel's network packet handling code. When the kernel copies packet metadata during certain fragmentation operations, it fails to properly track reference counts for zero-copy transmission buffers. This causes the kernel to prematurely free buffer structures that are still in use by active network packets, leading to memory corruption. An unprivileged local user can exploit this to gain full root-level control of the system.
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)
- CWE-416, CWE-911
- Affected products
- 6 configuration(s)
- Published / Modified
- 2026-06-24 / 2026-07-15
NVD description (verbatim)
In the Linux kernel, the following vulnerability has been resolved: net: skbuff: fix missing zerocopy reference in pskb_carve helpers pskb_carve_inside_header() and pskb_carve_inside_nonlinear() both copy the old skb_shared_info header into a new buffer via memcpy(), which includes the destructor_arg pointer (uarg) for MSG_ZEROCOPY skbs. Neither function calls net_zcopy_get() for the new shinfo, creating an unaccounted holder: every skb_shared_info with destructor_arg set will call skb_zcopy_clear() once when freed, but the corresponding net_zcopy_get() was never called for the new copy. Repeated calls drive uarg->refcnt to zero prematurely, freeing ubuf_info_msgzc while TX skbs still hold live destructor_arg pointers. KASAN reports use-after-free on a freed ubuf_info_msgzc: BUG: KASAN: slab-use-after-free in skb_release_data+0x77b/0x810 Read of size 8 at addr ffff88801574d3e8 by task poc/220 Call Trace: skb_release_data+0x77b/0x810 kfree_skb_list_reason+0x13e/0x610 skb_release_data+0x4cd/0x810 sk_skb_reason_drop+0xf3/0x340 skb_queue_purge_reason+0x282/0x440 rds_tcp_inc_free+0x1e/0x30 rds_recvmsg+0x354/0x1780 __sys_recvmsg+0xdf/0x180 Allocated by task 219: msg_zerocopy_realloc+0x157/0x7b0 tcp_sendmsg_locked+0x2892/0x3ba0 Freed by task 219: ip_recv_error+0x74a/0xb10 tcp_recvmsg+0x475/0x530 The skb consuming the late access still referenced the same uarg via shinfo->destructor_arg copied by pskb_carve_inside_nonlinear() without a refcount bump. This has been verified to be reliably exploitable: a working proof-of-concept achieves full root privilege escalation from an unprivileged local user on a default kernel configuration. The fix follows the pattern of pskb_expand_head() which has the same memcpy/cloned structure. For pskb_carve_inside_header(), net_zcopy_get() is placed after skb_orphan_frags() succeeds, so the orphan error path needs no cleanup. For pskb_carve_inside_nonlinear(), net_zcopy_get() is placed after all failure points and just before skb_release_data(), so no error path needs cleanup at all -- matching pskb_expand_head() more closely and avoiding the need for a balancing net_zcopy_put().
11 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability resides in pskb_carve_inside_header() and pskb_carve_inside_nonlinear(), two kernel functions that fragment socket buffers (skbs) during network packet processing. Both functions use memcpy() to duplicate skb_shared_info structures, including the destructor_arg pointer used for MSG_ZEROCOPY operations. The functions fail to increment the reference count via net_zcopy_get() for the copied zero-copy metadata. When the new skb is freed, skb_zcopy_clear() decrements the reference count on the ubuf_info_msgzc structure, driving it to zero prematurely even though other skbs still hold pointers to it. Subsequent access to the freed ubuf_info_msgzc triggers a use-after-free condition exploitable for privilege escalation. The fix mirrors the existing pattern in pskb_expand_head() by calling net_zcopy_get() at appropriate points post-validation.
Business impact
This vulnerability allows any unprivileged local user to escalate to root privileges on affected Linux systems running vulnerable kernel versions. The exploitation is reliable and reproducible. Organizations relying on kernel privilege isolation for container security, multi-tenant systems, or sandbox protections face complete compromise. Affected services may experience unintended system shutdowns, data corruption, or persistent unauthorized access if exploited.
Affected systems
The Linux kernel is affected. The vulnerability impacts all distributions shipping the vulnerable kernel versions prior to the fix. Users of shared hosting, container platforms, multi-user systems, and any Linux deployment where unprivileged users have local access are at immediate risk. Kernel versions between the introduction of the vulnerable code and the fix date (verify against vendor advisories for specific version ranges) are affected.
Exploitability
Exploitability is high. The attack requires only local user access—no special capabilities or system configuration changes are needed. The vulnerability has been validated with a working proof-of-concept achieving full root escalation from an unprivileged context on default kernel configurations. No user interaction or network access is required. The attack is deterministic and does not require spraying or probabilistic techniques.
Remediation
Apply the kernel patch that adds net_zcopy_get() calls to pskb_carve_inside_header() and pskb_carve_inside_nonlinear() following the pattern established in pskb_expand_head(). This fix ensures reference counts for zero-copy buffers remain accurate across packet fragmentation operations. Verify the specific patched kernel version number against your Linux distribution's security advisory, then reboot systems to load the patched kernel.
Patch guidance
Identify your current kernel version using 'uname -r'. Cross-reference with your distribution's (Red Hat, Debian, Ubuntu, SUSE, etc.) security advisory to locate the patched kernel version containing the net_zcopy_get() fix for these two pskb_carve functions. Use your package manager (yum, apt, zypper) to update the kernel package to the fixed version, then reboot. If you maintain a custom or vendor-supplied kernel, verify the presence of the fix in the kernel source changelog or patch files before deployment.
Detection guidance
Monitor for KASAN (Kernel Address Sanitizer) error messages indicating use-after-free on ubuf_info_msgzc structures in kernel logs, particularly in skb_release_data() or related skb cleanup paths. Audit for unprivileged user activity initiating MSG_ZEROCOPY operations followed by packet fragmentation patterns (TCP sends with MSG_ZEROCOPY followed by RDS operations or similar). Privilege escalation monitoring tools should flag unexpected transitions from unprivileged to root context originating from network-related syscalls. Systems without KASAN enabled may show general kernel crashes or hangs; enable KASAN on test systems to improve detection visibility.
Why prioritize this
CVSS 7.8 (HIGH) combined with reliable local privilege escalation from an unprivileged user makes this a critical priority. The vulnerability requires no user interaction, affects the kernel directly, and is not yet in the Known Exploited Vulnerabilities (KEV) catalog but has demonstrated weaponizable proof-of-concept code. Any multi-user or containerized Linux deployment should treat this as urgent. Prioritize patching systems where unprivileged users have shell access, development/build servers, and container host kernels immediately.
Risk score, explained
The CVSS 3.1 score of 7.8 reflects: local attack vector (user already has system access), low complexity (reliable exploitation), low privilege requirement (unprivileged user sufficient), and high impact across confidentiality, integrity, and availability (full root access). The score underrepresents risk in multi-user and container scenarios where local access is a common baseline; real-world impact is closer to critical. The use-after-free nature and proven privilege escalation path elevate operational severity beyond the base score.
Frequently asked questions
Do I need root access or special privileges to exploit this?
No. The vulnerability is exploitable by any unprivileged local user. A working proof-of-concept achieves root from a standard unprivileged account on a default kernel configuration.
Does this affect my system if I don't use MSG_ZEROCOPY?
Yes. While MSG_ZEROCOPY is the direct trigger, the vulnerable code path can be exercised through normal network operations on systems that have zero-copy buffers in flight. Any recent network-heavy workload on a multi-user system increases risk.
Can this be exploited remotely?
No. This requires local user access to the system. Remote exploitation is not possible; however, compromised user accounts or container escapes could enable local exploitation.
Is there a workaround if I cannot patch immediately?
Limiting unprivileged user access to the system is the primary mitigation. Disable MSG_ZEROCOPY if your application stack supports it. However, patching is the definitive fix and should be prioritized—workarounds are not reliable against determined attackers.
This analysis is based on publicly available vulnerability data and kernel source code. Specific patch versions, affected kernel ranges, and distribution-specific guidance vary by vendor; verify against official Linux distribution security advisories before deploying patches. The proof-of-concept described has not been independently validated by SEC.co and is referenced only as disclosed in the upstream fix narrative. Organizations should test patches in non-production environments before wide deployment. Source: NVD (public-domain), retrieved 2026-07-30. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- 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-10007HIGHChrome Use-After-Free in SVG Arbitrary Code Execution (CVSS 8.8)
- CVE-2026-10012HIGHChrome Skia Use-After-Free Sandbox Escape (v148.0.7778.216)
- CVE-2026-10013HIGHUse-After-Free in Chrome WebCodecs – Patch Guide & Risk Assessment
- CVE-2026-10016HIGHUse-After-Free in Chrome DOM – Sandbox Code Execution Vulnerability
- CVE-2026-10882HIGHCritical Chrome Use-After-Free RCE Vulnerability – Exploit Details & Patch Guidance