Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-43500

CVE-2026-43500: Linux Kernel Use-After-Free Vulnerability

CVE-2026-43500 is a use-after-free vulnerability in the Linux Kernel's rxrpc subsystem affecting DATA/RESPONSE packet handling. This article covers the technical details, affected versions, security impact, and mitigation.

Published:

CVE-2026-43500 Overview

CVE-2026-43500 is an out-of-bounds write vulnerability [CWE-787] in the Linux kernel's rxrpc subsystem. The flaw resides in the DATA and RESPONSE packet handlers, which only copy socket buffers (skb) to a linear form before invoking security operations when skb_cloned() returns true. Socket buffers carrying externally-owned paged fragments, including those produced by splice() into a UDP socket via __ip_append_data, bypass this check and reach the in-place decryption path. The AEAD/skcipher scatter-gather list then binds frag pages directly through skb_to_sgvec(), enabling memory corruption. A proof-of-concept named dirtyfrag is publicly available on GitHub.

Critical Impact

A local attacker with low privileges can corrupt kernel memory through crafted splice-loopback traffic, leading to privilege escalation or kernel compromise.

Affected Products

  • Linux Kernel (multiple stable branches)
  • Linux Kernel 5.3 (including rc7, rc8)
  • Linux Kernel 7.1 (including rc1, rc2)

Discovery Timeline

  • 2026-05-11 - CVE-2026-43500 published to NVD
  • 2026-05-17 - Last updated in NVD database

Technical Details for CVE-2026-43500

Vulnerability Analysis

The rxrpc subsystem implements the Rx remote procedure call protocol used by AFS. Inside rxrpc_input_call_event() and rxrpc_verify_response(), the kernel copies the incoming skb into a linear buffer before invoking the security operations. This unshare step is gated solely on skb_cloned(). When a socket buffer is not cloned but still references externally-owned page fragments, the gate does not trigger.

Such externally-shared fragments arise when splice() feeds data into a UDP socket via __ip_append_data, which sets the SKBFL_SHARED_FRAG flag. They also appear when a chained skb_has_frag_list() structure is present. The kernel proceeds to in-place decryption, mapping these foreign pages into the AEAD/skcipher scatter-gather list using skb_to_sgvec(). The cryptographic transform then writes plaintext back into pages that the attacker still controls and can mutate, producing a race-prone out-of-bounds write into memory the rxrpc path did not allocate.

Root Cause

The gating condition is incomplete. Only skb_cloned() is checked, ignoring shared paged fragments and frag lists. The fix extends the unshare gate to also fire when skb_has_frag_list() or skb_has_shared_frag() evaluates true, forcing a private linear copy before the crypto SGL is built.

Attack Vector

A local user creates a UDP socket bound to an rxrpc endpoint and uses splice() to attach attacker-controlled pages as shared fragments. The user transmits DATA or RESPONSE packets back to the local rxrpc listener. The in-place decryption operates on the still-shared pages, allowing concurrent modification by the attacker to interfere with the cryptographic state and corrupt kernel memory. The published dirtyfrag proof-of-concept demonstrates this splice-loopback technique. See the GitHub PoC Repository for technical details on the exploitation primitive.

Detection Methods for CVE-2026-43500

Indicators of Compromise

  • Local processes invoking splice() against UDP sockets associated with rxrpc/AFS endpoints on hosts that do not run AFS workloads.
  • Unexpected kernel oops, slab corruption, or KASAN reports referencing rxrpc_input_call_event, rxrpc_verify_response, or skb_to_sgvec.
  • Presence of the dirtyfrag binary or build artifacts cloned from the public proof-of-concept repository.

Detection Strategies

  • Audit installed kernel versions across the fleet and flag systems running kernels predating the patch commits 3eae0f4f, aa54b1d2, and d45179f8.
  • Monitor kernel ring buffer (dmesg) for crashes and warnings in the rxrpc input path, which indicate exploitation attempts or instability.
  • Use eBPF or auditd rules to record splice(2) syscalls targeting UDP socket file descriptors by non-AFS workloads.

Monitoring Recommendations

  • Forward kernel logs and process telemetry to a centralized analytics platform for correlation of splice() activity with crash signatures.
  • Track loading of the rxrpc and kafs kernel modules on hosts that should not require them and alert on unexpected use.
  • Baseline local privilege-escalation indicators such as new SUID processes or unexpected uid transitions following rxrpc activity.

How to Mitigate CVE-2026-43500

Immediate Actions Required

  • Apply the upstream stable patches to all affected kernels and reboot impacted systems.
  • Where patching is not immediately possible, blacklist the rxrpc kernel module on hosts that do not require AFS.
  • Restrict local shell access on multi-tenant systems and verify that untrusted users cannot load kernel modules.

Patch Information

The fix extends the unshare gate to also trigger when skb_has_frag_list() or skb_has_shared_frag() is true, forcing a linear copy before the security operations execute. The corrected paths preserve the zero-copy fast path for kernel-private fragments such as NIC page_pool RX and GRO. Reference the upstream commits: Kernel Patch Commit 3eae0f4, Kernel Patch Commit aa54b1d, and Kernel Patch Commit d45179f.

Workarounds

  • Unload and blacklist the rxrpc module on systems that do not use AFS or kAFS.
  • Disable unprivileged module autoloading by setting modules_disabled=1 after boot on hardened hosts.
  • Constrain splice() exposure by isolating untrusted local users with seccomp profiles or user namespaces that restrict UDP socket operations.
bash
# Configuration example: blacklist rxrpc and verify patched kernel
echo 'blacklist rxrpc' | sudo tee /etc/modprobe.d/blacklist-rxrpc.conf
sudo rmmod rxrpc 2>/dev/null || true
uname -r

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.