Why this exists
In the post-AI era, exploit research is abundant and cheap. Proof of ownership is not.
A model can summarize a CVE. It cannot prove that the computer in front of you is yours, that its kernel is the one you think it is, or that you can still recover it without a vendor account, a cloud console, or a rescue USB.
ROOTBACK reads the kernel actually running, matches it against a curated snapshot of public root-escalation and KVM/container-escape research, and — only after explicit consent — runs a narrow set of public PoCs. When one succeeds, it uses the root context to reset a local password and verifies the reset with a root-owned marker.
Kernel exploits can crash or corrupt the machine. Use this only on hardware you own or are written-authorized to test. Keep a console or rescue path before changing a password.
What it is not
- No remote target option. There is no
--host; it acts on this machine only. - No persistence: no cron, no systemd unit, no shell-profile edits, no backdoor.
- No credential harvesting, no telemetry, no network scanning, no lateral movement.
- Not a replacement for patching. Detection is a version-and-feature hypothesis, not a vendor patch attestation.
Catalog — snapshot 2026-11-11
39 entries. auto means a public recipe exists and the tool can run it after consent. manual means detection plus a research link: these need host-side control of a VM/container, kernel-specific offsets, a second terminal, or the public PoC is a panic/DoS rather than a recovery path. Android entries are decided by ro.build.version.security_patch.
Kernel local privilege escalation
| CVE | Name | Class | Affected (upstream) | Fixed (upstream) | Mode | Research |
|---|---|---|---|---|---|---|
CVE-2026-31431 | Copy Fail | kernel | Linux 4.14 - 6.18.21, 6.19.0 - 6.19.11 | 6.18.22, 6.19.12, 7.0+ | auto | research |
CVE-2026-43284 | Dirty Frag (ESP) | kernel | Linux 4.11 - 6.18.27, 7.0.0 - 7.0.4 | 6.18.28, 7.0.5, 7.1+ | auto | research |
CVE-2026-43500 | Dirty Frag (RxRPC) | kernel | Linux 5.3 - 6.18.28, 7.0.0 - 7.0.5 | 6.18.29, 7.0.6, 7.1+ | manual | research |
CVE-2026-46300 | Fragnesia | kernel | Linux 3.9 - 6.18.32, 7.0.0 - 7.0.9 | 6.18.33, 7.0.10, 7.1+ | auto | research |
CVE-2026-46331 | pedit COW | kernel | Linux 5.18 - 7.1-rc6 (vendor backports vary) | 5.10.260, 5.15.211, 6.1.177, 6.6.144, 6.12.94, 6.18.36, 7.0.13, 7.1-rc7 | auto | research |
CVE-2026-43494 | PinTheft | kernel | Linux 4.17 - 6.18.32, 7.0.0 - 7.0.9 (CONFIG_RDS) | 6.18.33, 7.0.10, 6.12.91, 6.6.141 | auto | research |
CVE-2026-46333 | ptrace fd theft | kernel | Linux 4.10 - 6.18.30, 7.0.0 - 7.0.7 | 6.18.31, 7.0.8, 7.1+ | manual | research |
CVE-2026-46243 | CIFSwitch | kernel | Linux 2.6.24 - 6.18.33, 7.0.0 - 7.0.10 | 6.18.34, 7.0.11, 7.1+ | manual | research |
KVM guest-to-host
| CVE | Name | Class | Affected (upstream) | Fixed (upstream) | Mode | Research |
|---|---|---|---|---|---|---|
CVE-2026-53359 | Januscape | kvm | Linux 2.6.36 - 7.1.2 (KVM/x86) | 7.1.3+ | manual | research |
CVE-2026-64561 | Zapscape | kvm | Linux 5.9 - 7.1.5 (KVM/x86) | 7.1.6+ | manual | research |
CVE-2026-89775 | KVM arm64 VNCR | kvm | Linux 6.16 - 6.18.50, 7.2.0 - 7.2.4 (KVM/arm64) | 6.18.51, 7.2.5, 7.3+ | manual | research |
CVE-2025-40026 | KVM x86 I/O intercept | kvm | Linux 3.0 - 6.17.1 (KVM/x86) | 6.17.2, 6.18+ | manual | research |
CVE-2026-46316 | ITScape | kvm | Linux 6.10 - 6.12.92, 6.18.0 - 6.18.34, 7.0.0 - 7.0.11 (KVM/arm64) | 6.12.93, 6.18.35, 7.0.12, 7.1+ | manual | research |
CVE-2026-99999 | IPv4 checksum_start | kvm | Linux 2.6.27 - 5.10.271, 5.15.222, 6.1.189, 6.6.158, 6.12.112, 6.18.56, 7.2.10 | 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.57, 7.2.11, 7.3+ | manual | research |
Android kernel
Matched against the device security patch level, not the GKI base version. Detection-only: no Android recipe, and no password reset.
| CVE | Name | Class | Affected | Fixed | Mode | Research |
|---|---|---|---|---|---|---|
CVE-2026-53256 | Android Bluetooth EoP | android | Android devices, SPL < 2026-11-05 | 2026-11-05 SPL | manual | research |
CVE-2026-59044 | pKVM host EoP | android | Android devices, SPL < 2026-11-05 | 2026-11-05 SPL | manual | research |
CVE-2026-59045 | pKVM host EoP (2) | android | Android devices, SPL < 2026-11-05 | 2026-11-05 SPL | manual | research |
CVE-2026-80604 | Android HID EoP | android | Android devices, SPL < 2026-11-05 | 2026-11-05 SPL | manual | research |
CVE-2026-89774 | Android Bluetooth EoP (2) | android | Android devices, SPL < 2026-11-05 | 2026-11-05 SPL | manual | research |
CVE-2025-38627 | F2FS EoP | android | Android devices, SPL < 2026-11-05 | 2026-11-05 SPL | manual | research |
CVE-2026-58825 | DMA-BUF EoP | android | Android devices, SPL < 2026-11-05 | 2026-11-05 SPL | manual | research |
CVE-2026-58826 | DMA-BUF EoP (2) | android | Android devices, SPL < 2026-11-05 | 2026-11-05 SPL | manual | research |
CVE-2026-58827 | DMA-BUF EoP (3) | android | Android devices, SPL < 2026-11-05 | 2026-11-05 SPL | manual | research |
CVE-2026-58828 | DMA-BUF EoP (4) | android | Android devices, SPL < 2026-11-05 | 2026-11-05 SPL | manual | research |
CVE-2026-59043 | pKVM host EoP (3) | android | Android devices, SPL < 2026-11-05 | 2026-11-05 SPL | manual | research |
Container runtime
These require control over container creation, a malicious image, or shared mounts. A version match alone is not an escape.
| CVE | Name | Class | Affected (upstream) | Fixed (upstream) | Mode | Research |
|---|---|---|---|---|---|---|
CVE-2025-31133 | runc masked /dev/null | container | runc <= 1.2.7; 1.3.0-rc.1 - 1.3.1; 1.4.0-rc.1 - rc.2 | 1.2.8, 1.3.2, 1.4.0-rc.3 | manual | research |
CVE-2025-52565 | runc /dev/console | container | runc 1.0.0-rc3 - 1.2.7; 1.3.0-rc.1 - 1.3.2; 1.4.0-rc.1 - rc.2 | 1.2.8, 1.3.3, 1.4.0-rc.3 | manual | research |
CVE-2025-52881 | runc procfs write | container | runc <= 1.2.7; 1.3.0 - 1.3.2; 1.4.0-rc.1 - rc.2 | 1.2.8, 1.3.3, 1.4.0-rc.3 | manual | research |
CVE-2026-41579 | runc /dev symlink | container | runc < 1.3.6; 1.4.0-rc.1 - < 1.4.3; 1.5.0-rc.1 - < 1.5.0-rc.3 | 1.3.6, 1.4.3, 1.5.0-rc.3 | manual | research |
CVE-2026-57231 | Podman image escape | container | Podman 1.8.1 - 5.8.3 | 5.8.4 | manual | research |
CVE-2024-21626 | Leaky Vessels | container | runc <= 1.1.11 | 1.1.12+ | manual | research |
CVE-2026-17106 | CopyEscape | container | Docker Engine/CLI < 29.7.0; Docker Desktop < 4.86.0; Compose < 5.4.0; go-archive < 0.3.0 | 29.7.0, 4.86.0, 5.4.0, 0.3.0 | manual | research |
Userspace
| CVE | Name | Class | Affected (upstream) | Fixed (upstream) | Mode | Research |
|---|---|---|---|---|---|---|
CVE-2025-32463 | sudo chroot | userspace | sudo 1.9.14 - 1.9.17 | 1.9.17p1+ | auto | research |
Legacy kernel LPEs
Kept for long-lived LTS and embedded machines. Most are detection-only here because their public PoCs need kernel-specific offsets, a second terminal, or deliberately panic the host.
| CVE | Name | Class | Affected (upstream) | Fixed (upstream) | Mode | Research |
|---|---|---|---|---|---|---|
CVE-2021-4034 | PwnKit | legacy | pkexec <= 0.120 | 0.121+ / vendor backport | auto | research |
CVE-2024-1086 | nf_tables UAF | legacy | Linux 5.14 - 6.6 (unpatched branches) | 5.15.149, 6.1.76, 6.6.15, 6.7.3, 6.8+ | manual | research |
CVE-2022-0847 | Dirty Pipe | legacy | Linux 5.8 - 5.16.10, 5.15.24, 5.10.101 | 5.16.11, 5.15.25, 5.10.102 | manual | research |
CVE-2023-4911 | Looney Tunables | legacy | glibc 2.34 - 2.38 | 2.38-4+ / vendor backport | manual | research |
CVE-2023-0386 | OverlayFS | legacy | Linux 5.11 - 6.2.1 | 6.2.2, 6.3+ | manual | research |
CVE-2023-32233 | nf_tables UAF | legacy | Linux 5.0 - 6.3.1 | 6.3.2, 6.4+ | manual | research |
How it works
uname / config / modules / sysctls / ro.build.version.security_patch
|
v
catalog match (stable fix matrix or Android SPL + feature gates)
|
v
authorization gate (--authorized + typed phrase)
|
v
fetch public PoC -> build -> feed reset payload
|
v
root-owned marker (uid 0, nonce) -> reset verified
Detection checks the upstream stable fix matrix and then the feature gates that make the path reachable: algif_aead, esp4/esp6, act_pedit, rds, cifs.upcall, unprivileged user namespaces, ptrace_scope, /dev/kvm, and nested virtualization. A distribution kernel can backport a fix without changing its base version, so a VULNERABLE result on a vendor kernel is a hypothesis; non-interactive auto-runs of medium-confidence candidates require --include-medium. On Android, entries with a fixed patch level are decided by ro.build.version.security_patch; entries that only have an upstream matrix are capped at medium and annotated with the GKI caveat.
Use
git clone https://github.com/pysio2007/rootback cd rootback ./rootback.sh deps ./rootback.sh scan ./rootback.sh exploit auto --authorized --dry-run ./rootback.sh exploit auto --authorized
Then type I OWN THIS MACHINE when prompted. SSH additionally requires --allow-ssh. A generated password is printed once and never written to the audit log; use --password-file instead of --password.
The gift
The post-AI era will produce more exploits than any one person can read. The scarce thing will be the ability to prove that a machine is yours, that you understand what it runs, and that you can still get back in.
This is a small attempt at that. It is text, shell, and public research — no account, no cloud, no permission from a vendor.