Linux Kernel Root Zero-Days: Public Exploit Kit Drops for DirtyAH6, TUNderflow, PPPoEject, and DiagSpill

🛡️ Verified Threat IntelDigitalSpying Research Desk
📅 September 19, 2026⏱️ 7 min read

Author: DigitalSpying Security Desk

Date: September 19, 2026

Category: Vulnerability Research / Linux Kernel Security / Local Privilege Escalation

Executive Summary

The Linux ecosystem faces an urgent security posture reassessment following the public release of weaponized, fully functional proof-of-concept (PoC) exploit code targeting four distinct flaws in the Linux kernel’s core networking subsystem. Dubbed DirtyAH6, TUNderflow, PPPoEject, and DiagSpill, each vulnerability grants an unprivileged local user the ability to escalate privileges to full root authority. Disclosed and analyzed by independent security researchers and reported across European threat research outlets such as Devstock Academy and The Hacker News, these defects resided undiscovered in the Linux kernel code tree for between 10 and 21 years before upstream maintainers released consolidated security backports.

Crucially, while three of the vulnerabilities (DirtyAH6, TUNderflow, and PPPoEject) leverage unprivileged user namespace manipulation, DiagSpill represents an exceptionally dangerous outlier: it requires zero special capabilities, zero namespace isolation privileges, and zero user interaction—merely the presence of the kernel's Stream Control Transmission Protocol (SCTP) diagnostic module (sctp_diag). Coinciding with this public exploit release, the U.S. Cybersecurity and Infrastructure Security Agency (CISA KEV Catalog) flagged multiple adjacent Linux kernel networking flaws as actively exploited in the wild. Enterprise Linux administrators, cloud infrastructure providers, and container hosting environments must immediately apply the latest LTS kernel updates or disable unused legacy network modules to eliminate the attack surface.

Deep-Dive Technical Analysis

1. The Four Vulnerabilities: Root Cause and Exploitation Primitives

The four vulnerabilities span diverse network protocols implemented directly within kernel space (net/ipv6/, drivers/net/, and net/sctp/).

A. DirtyAH6: IPv6 IPsec Routing Header Address Swap Flaw

* Location: net/ipv6/ah6.c

* Mechanism: The IPsec Authentication Header (AH) for IPv6 calculates packet integrity before transmitting or routing packets. When handling IPv6 Type 0/2 Routing Headers, the kernel rearranges the destination addresses within the packet buffer so that the integrity checksum corresponds to the final delivery destination.

* The Defect: The kernel function responsible for reordering extracted the total number of addresses from one header field while reading the "segments left" hop counter from a completely separate, unverified field.

* Exploitation: By injecting a malformed routing header, a local attacker triggers an out-of-bounds pointer calculation during header mutation. In controlled lab conditions, researchers successfully weaponized the corrupted memory state into an arbitrary kernel write primitive, overwriting kernel credentials (struct cred) to attain root.

B. TUNderflow: Headroom Integer Wrap in Virtual TAP/TUN Drivers

* Location: drivers/net/tun.c

* Mechanism: Virtual network interfaces (TUN/TAP) allow user-space applications (such as VPN clients and container networking bridges) to inject raw IP packets and Ethernet frames directly into the kernel network stack.

* The Defect: When a parent virtual device requested reserved headroom for encapsulation headers, the kernel stored this requirement in a field that was later reused by a distinct buffer calculation. In complex network topologies utilizing netkit devices combined with VXLAN and Open vSwitch (OVS), a device configured with a 4,096-byte buffer passed an encapsulation headroom requirement of 4,160 bytes.

* Exploitation: An integer rollover caused packet payload data to be written 64 bytes past the boundary of the allocated 4,096-byte kernel socket buffer (sk_buff), corrupting adjacent slab allocations (kmalloc-4096).

C. PPPoEject: Write-After-Free in Ethernet PPP Session Teardown

* Location: drivers/net/ppp/pppoe.c

* Mechanism: Point-to-Point Protocol over Ethernet (PPPoE) encapsulates PPP frames inside Ethernet frames, widely used in broadband telecom and edge networking.

* The Defect: During packet transmission, the PPPoE driver retained an active pointer to the packet header at the exact moment the underlying network interface driver retained the right to reallocate and free the previous buffer.

* Exploitation: When this race window triggers, the kernel executes a write-after-free (Use-After-Free) operation, writing exactly six bytes of protocol header data to an already-freed kernel memory address, enabling control-flow hijacking via heap grooming.

D. DiagSpill: The Zero-Privilege SCTP 8MB Heap Overflow

* Location: net/sctp/sctp_diag.c

* Mechanism: The Stream Control Transmission Protocol (SCTP) supports multi-homing, allowing a single SCTP association to maintain multiple IP addresses for redundant routing. The diagnostic module sctp_diag dumps association state to user space via Netlink sockets.

* The Defect: In an SCTP multi-homed connection, the protocol specification allows up to 65,536 peer addresses. However, the internal peer counter was declared as a 16-bit unsigned integer (uint16_t). When the 65,536th address is added, the counter rolls over back to 0.

* Exploitation: When sctp_diag queries the connection, it allocates a buffer sized for zero addresses (a minimal slab allocation). The kernel then executes a loop copying all 65,536 address structures—dumping approximately 8 megabytes of unconstrained data into the kernel heap. Because this requires no special user namespaces or privileges, any local user on a system with SCTP loaded can instantly destabilize the kernel or execute arbitrary code.

Vulnerability

Source Location

Primary Root Cause

Privilege Requirement

Result

DirtyAH6

net/ipv6/ah6.c

Malformed Routing Header / Hop Count Mismatch

User Namespace

Root Access

TUNderflow

drivers/net/tun.c

Netkit/VXLAN Headroom Integer Wrap

User Namespace

Root Access

PPPoEject

drivers/net/ppp/pppoe.c

Race Condition / Write-After-Free

User Namespace

Root Access

DiagSpill

net/sctp/sctp_diag.c

SCTP Peer Counter Rollover (8MB Overflow)

None (Zero-Priv)

Root / Kernel Panic

Industry Impact & Container Security Implications

The weaponization of these four flaws poses severe threats across modern multi-tenant environments:

1. Container Breakout & Multi-Tenant Cloud Risk: Multi-tenant Kubernetes clusters and Docker environments frequently rely on Linux namespaces (CLONE_NEWUSER, CLONE_NEWNET) to isolate untrusted customer code. Because TUNderflow and DirtyAH6 can be triggered from inside user namespaces, an attacker possessing an unprivileged shell inside a Docker container can compromise the host kernel and achieve full container escape.

2. The DiagSpill Privilege Advantage: Most enterprise security baselines restrict unprivileged user namespaces (kernel.unprivileged_userns_clone = 0) to mitigate container exploits. However, DiagSpill completely bypasses this mitigation because Netlink SCTP diagnostic sockets are accessible without namespaces.

3. Longevity of Legacy Kernel Bugs: That these flaws persisted undetected for up to 21 years emphasizes the vast attack surface lurking in legacy network protocol implementations within the Linux kernel.

Recommendations & Mitigation Strategies

Organizations running Linux servers, Kubernetes nodes, and cloud instances must apply immediate updates and configuration lockdowns.

1. Kernel Patch Deployment

Upgrade to Fixed Kernel Releases: Upstream maintainers have published consolidated fixes across all supported LTS kernel trees:

* Linux 7.2.4

* Linux 6.18.50

* Linux 6.12.109

* Linux 6.6.157

* Linux 6.1.188

* Linux 5.15.221

* Linux 5.10.270

Note: Kernel branches older than 5.10 have reached End-of-Life (EOL) and will not receive upstream backports. Systems running older kernels must be migrated immediately.

2. Immediate Workarounds & Attack Surface Reduction

If kernel upgrades and host reboots cannot be scheduled immediately, system administrators can mitigate the majority of attack paths via kernel module blacklisting:

Disable Unused Network Protocols: Create a configuration file /etc/modprobe.d/disable-legacy-net.conf:# Disable SCTP and diagnostic modules (Neutralizes DiagSpill)

install sctp /bin/true

install sctp_diag /bin/true

Disable IPv6 AH and PPPoE modules (Neutralizes DirtyAH6 & PPPoEject)

install ah6 /bin/true

install pppoe /bin/true

Restrict Unprivileged User Namespaces: Temporarily mitigate container-assisted namespace attacks:# Temporarily disable unprivileged user namespaces on Debian/Ubuntu/RHEL

sysctl -w kernel.unprivileged_userns_clone=0

Or for systemd-based user namespace sysctl:

sysctl -w user.max_user_namespaces=0

3. Monitoring & EDR Detections

* Audit SCTP Socket Activity: Utilize auditd or eBPF tracing (Tetragon, Falco) to detect unexpected socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP) calls or Netlink requests querying family AF_INET with protocol IPPROTO_SCTP.

* Privilege Transition Alerts: Monitor for processes undergoing rapid UID transitions from unprivileged non-root users (uid > 1000) to root (uid=0) without passing through sudo, su, or verified authentication PAM modules.

Classification:Cyber Security IntelligenceZero-Day AnalysisDefensive Engineering
🛡️

About the DigitalSpying Research Desk

The DigitalSpying Threat Intelligence Desk is composed of seasoned security researchers, reverse engineers, and blue team architects. Our mission is to publish reproducible, peer-audited threat analyses, hardware security evaluations, and defensive countermeasures.