
Linux kernel local privilege escalation PoC for CVE-2026-68121, chaining PPPoE, FUSE, and IP6GRE to corrupt kernel memory and gain root.
[!WARNING] The PoC is provided solely to help defenders, maintainers, and authorized security teams validate patches, mitigations, detections, and exposure on systems they own or are explicitly authorized to test.
You are solely responsible for ensuring that your use of this material is lawful, authorized, controlled, and conducted in an isolated test environment.
[!WARNING] This PoC is destructive. It deliberately corrupts live kernel memory. A misplaced overwrite can corrupt unrelated kernel memory and hang/crash the machine.
Run only in a disposable VM/throwaway host.
The PoC:
struct file objects and
grooms a populated fdtable into the target allocationdev_hard_header() reallocate the skb head, then uses the stale PPPoE
header pointer to redirect an fdtable entry to the fake file, and/bin/sh -p.The PoC assumes and targets x86-64 to keep things simple. In theory, the bug should not be arch-specific, but you'd need to port a lot (from leaking the kernel base to the rest of the chain).
Enumerating exhaustively for completeness:
6.19.10-300.fc44.x86_64, or Ubuntu 24.04 with
6.8.0-124-generic or 6.8.0-136-generic (you can try removing these
checks, but other distros/kernel versions may require per-target
customization/grooming)passwd entry and a home directory it
ownsCAP_NET_ADMIN and
CAP_NET_RAW inside that namespace/dev/fuse, plus FUSE, PPPoE, IP6GRE, AF_PACKET/TX-ring,
and team support on Fedora or bonding support on Ubuntumembarrier for selected low-order layoutsRLIMIT_NOFILE hard limit large enough for the selected carrier geometry,
checked at runtime and potentially requiring up to 8,192 descriptorsTested only with 4GB RAM and a variety of 4+ CPU counts. Other CPU/memory combos may need more grooming and/or may redirect the write into unrelated memory.
Run it as an unprivileged user with a passwd entry. The Ubuntu conversion can
take a while (e.g., 300+ attempts).
python3 pppoeject_root_repro.py
gcctasksetunshareiptrue/bin/shaa-exectrinityunshare -Urn