
Proof-of-Concept für CVE-2026-43494 (PinTheft): Linux LPE mittels RDS-Zerocopy-Refcount-Fehler + io_uring feste Puffer → SUID-Seitencache-Überschreiben. Nur für autorisierte Forschung.
Proof of Concept — uid=1000(raken) → uid=0(root) nach ./sley auf WSL2 (6.6.87.2-microsoft-standard-WSL2)
Einzeldatei-Proof-of-Concept für CVE-2026-43494 (PinTheft): eine Linux-Kernel-Lokale-Privilegieneskalation, die einen RDS-Zerocopy-Referenzzählfehler mit io_uring-fixed-Buffern verkettet, um den Seitenpuffer einer SUID‑root-Binärdatei zu überschreiben.
Haftungsausschluss: Dieses Repository dient ausschließlich autorisierter Sicherheitsforschung, Bildung und defensiven Tests. Das Ausführen gegen Systeme, die Sie nicht besitzen oder für die Sie keine explizite Erlaubnis zum Testen haben, ist illegal und unethisch. Die Autoren übernehmen keine Haftung für Missbrauch.
Die ursprüngliche öffentliche Forschung und der PoC wurden vom V12 Security-Team (Aaron Esau) veröffentlicht. SLEY ist eine unabhängige, kompakte Neuimplementierung mit einer gestalteten Terminal-Benutzeroberfläche für den Einsatz im Labor und zum Lernen.
flowchart LR
A[mmap anonymous page] --> B[io_uring: register fixed buffer]
B --> C[Clone buffer table to 2nd ring]
C --> D[1024× failing RDS zerocopy sends]
D --> E[Drain FOLL_PIN bias / steal refs]
E --> F[munmap → page freed]
F --> G[SUID binary page reclaimed in page cache]
G --> H[Stale io_uring ptr writes ELF stub]
H --> I[exec SUID → root shell]su, mount, passwd, …).FOLL_PIN-Bias ≈ 1024).execve der SUID-Binärdatei führt den injizierten Stub als root aus.CONFIG_RDS=y und CONFIG_RDS_TCP=yCONFIG_IO_URING=y und kernel.io_uring_disabled = 0rds‑/rds_tcp-Module geladen (oder von unprivilegierten Benutzern automatisch ladbar)IORING_REGISTER_CLONE_BUFFERS-APIsudo apt install build-essential linux-libc-dev # Debian/Ubuntu
# or equivalent headers package on your distro
# Patched? (example — adjust for your distro)
uname -r
grep -r CVE-2026-43494 /usr/share/doc/linux* 2>/dev/null || true
# RDS available?
grep CONFIG_RDS /boot/config-$(uname -r) 2>/dev/null
lsmod | grep -E '^rds'
# io_uring enabled?
cat /proc/sys/kernel/io_uring_disabled # expect 0
gcc -O2 -Wall -Wextra -o sley sley.c
Statisches Linken (optional, für minimale Labor-Images):
gcc -O2 -static -o sley sley.c
./sley
Die gesamte Statusausgabe erfolgt über stderr (ANSI-256-Farb-UI, Fortschrittsbalken, phasenweise Protokollierung). Stellen Sie sicher, dass Ihr Terminal UTF-8 und Truecolor/256 Farben für die zeichnende UI unterstützt.
Beispielhafte Phasen:
PHASE 1 │ Reconnaissance
PHASE 2 │ Memory & io_uring setup
PHASE 3 │ Pin reference theft (RDS zerocopy)
PHASE 4 │ Page cache overwrite & privesc
Bei einer erfolgreich ausgenutzten Konfiguration schließt die Kette ab und übergibt an die gefundene SUID-Binärdatei mit einer überschriebenen ersten Seite – was zu einer Root-Shell führt, wenn der Wettlauf und der Kernel-Zustand übereinstimmen.
Auf gepatchten Kernen, gehärteten Hosts oder bei fehlendem RDS/io_uring schlägt der PoC frühzeitig fehl (kein SUID-Ziel, mmap‑/io_uring‑/socket-Fehler usw.).
Distributionsspezifische Sicherheitshinweise enthalten möglicherweise zurückportierte Patches – verfolgen Sie die Kernel-Sicherheitswarteschlange Ihres Anbieters.
.
├── README.md # This file
├── proof-of-concept.jpg # Screenshot: successful LPE (uid 1000 → root)
├── sley.c # Single-file PoC + terminal UI
└── .gitignore
Diese Software wird wie besehen für Forschung und Bildung bereitgestellt. Sie sind dafür verantwortlich, geltende Gesetze einzuhalten und schriftliche Genehmigung einzuholen, bevor Sie Systeme testen, die Sie nicht besitzen.
MIT – siehe Repository-Lizenzdatei falls vorhanden. Verantwortungsvoll nutzen.
| Element | Detail |
|---|
| CVE | CVE-2026-43494 |
| Öffentlicher Name | PinTheft |
| Komponente | net/rds — Zerocopy-Sendepfad (rds_message_zcopy_from_user) |
| Primitiv | Doppeltes put_page(), wenn Page-Pin fehlschlägt → FOLL_PIN-Referenzen stehlen |
| Ausnutzung | io_uring-fixed-Buffer + fehlschlagender RDS-Zerocopy → Page-Cache-UAF-Schreibzugriff |
| Auswirkung | Lokaler Root auf verwundbaren Konfigurationen |
| Upstream-Fix | e17492979319 |
| Maßnahme | Anmerkungen |
|---|
| Kernel patchen | Stabilen Fix mit Commit e17492979319 anwenden |
| RDS deaktivieren | modprobe -r rds_tcp rds (und Autoload blockieren) falls nicht benötigt |
| io_uring einschränken | kernel.io_uring_disabled=1 oder 2 via sysctl |
| Minimalprinzip | Nicht benötigte SUID-Binärdateien entfernen; Container mit gehärteten Profilen verwenden |
| Überwachen | Bei Anhäufung von RDS-Zerocopy-Fehlschlägen + io_uring-Pufferregistrierungsmustern alarmieren |