
Rust-PoC für eine lokale Privilege-Escalation-Schwachstelle im Linux-Kernel, die die Crypto-API und splice ausnutzt, um den Page Cache zu überschreiben und die UID in /etc/passwd zu ändern, um Root-Zugriff zu erlangen.
Dieses Projekt ist ein Proof of Concept (PoC), implementiert in Rust, für eine lokale Privilegienausweitung (LPE)-Schwachstelle (Simulation von CVE-2026-31431). Es demonstriert, wie der Linux-Kernel-Page-Cache durch Ausnutzung der Crypto API manipuliert werden kann.[cite: 1, 2]
[!CAUTION] Dieser Code dient ausschließlich Bildungs- und ethischen Sicherheitsforschungszwecken. Die unbefugte Verwendung dieses Tools gegen Systeme ohne vorherige ausdrückliche Zustimmung ist illegal. Der Autor übernimmt keine Haftung für Missbrauch oder Schäden, die durch dieses Programm verursacht werden.
Das Tool nutzt eine Schwachstelle im Zusammenhang mit der AF_ALG-Schnittstelle (Kernel-Crypto-Interface) und dem splice-Systemaufruf aus.[cite: 2] Es ermöglicht einem nicht privilegierten Benutzer, 4 Bytes des Page-Caches für eine schreibgeschützte Datei zu überschreiben – insbesondere das UID-Feld in /etc/passwd, um es vorübergehend auf 0000 (root) zu ändern.[cite: 1, 2]
main.rs, um den genauen Datei-Offset der UID des aktuellen Benutzers innerhalb von /etc/passwd zu finden.[cite: 1, 2]AF_ALG und dem Algorithmus authescesn(hmac(sha256),cbc(aes)).[cite: 2]setsockopt-Parameter und die Verwendung von splice werden Dateidaten durch die Crypto-Pipeline umgeleitet.[cite: 2]0000) zu überschreiben.[cite: 2]--shell-Flag angegeben wird, führt es su <user> aus, was erfolgreich ist, da das System die UID des Benutzers nun als 0 im gecachten /etc/passwd sieht.[cite: 1]POSIX_FADV_DONTNEED, um die Systemintegrität wiederherzustellen.[cite: 1]libc und nix (mit den Features fs, socket, zerocopy und user).[cite: 3]cargo build --release
Test des Page-Cache-Patchings ohne Start einer Shell:
./target/release/cve-2026-31431
Versuch, zu einer Root-Shell zu eskalieren:
./target/release/cve-2026-31431 --shell
main.rs: Orchestriert den Angriff, verarbeitet CLI-Argumente und führt den finalen Shell-Befehl aus.[cite: 1]modules.rs: Enthält die Kern-Exploit-Logik, einschließlich AF_ALG-Socket-Manipulation und UID-Offset-Suche.[cite: 2]Cargo.toml: Definiert die Projektmetadaten und externe Crate-Abhängigkeiten.[cite: 3]main.rs, modules.rs, Cargo.toml[cite: 1, 2, 3]socket, bind, sendmsg, splice, posix_fadvise.[cite: 1, 2]