
Proof-of-Concept für CVE-2026-43494 (PinTheft): Lokale Privilegienerweiterung im Linux-Kernel durch Ausnutzung eines RDS-Zerocopy-Referenzzählungsfehlers mit io_uring-festen Puffern, um den Seitencache einer SUID-Binärdatei zu überschreiben.
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 lokale Kernel-Privilegienerweiterung unter Linux, die einen RDS-Zerocopy-Referenzzähl-Bug mit io_uring Fixed Buffern verkettet, um den Page-Cache einer SUID-Root-Binärdatei zu überschreiben.
Hinweis: Dieses Repository dient ausschließlich autorisierter Sicherheitsforschung, Bildung und defensiven Tests. Das Ausführen auf Systemen, die Ihnen nicht gehören oder für die Sie keine explizite Erlaubnis 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-Oberfläche für den Laboreinsatz 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
# oder äquivalentes Header-Paket auf Ihrer Distribution
# Gepatched? (Beispiel – an Ihre Distribution anpassen)
uname -r
grep -r CVE-2026-43494 /usr/share/doc/linux* 2>/dev/null || true
# RDS verfügbar?
grep CONFIG_RDS /boot/config-$(uname -r) 2>/dev/null
lsmod | grep -E '^rds'
# io_uring aktiviert?
cat /proc/sys/kernel/io_uring_disabled # Erwarte 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 auf stderr (ANSI-256-Farb-UI, Fortschrittsbalken, phasenweise Protokollierung). Stellen Sie sicher, dass Ihr Terminal UTF-8 und Truecolor/256-Farben für die Zeichenrahmen-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
Auf einer erfolgreich ausgenutzten Konfiguration wird die Kette abgeschlossen und an die gefundene SUID-Binärdatei mit einer überschriebenen ersten Seite übergeben – was zu einer Root-Shell führt, wenn das Wettrennen und der Kernel-Zustand zusammenpassen.
Auf gepatchten Kernen, gehärteten Hosts oder fehlendem RDS/io_uring schlägt der PoC früh fehl (kein SUID-Ziel, mmap/io_uring/socket-Fehler usw.).
Distributionsspezifische Sicherheitshinweise können zurückportierte Patches enthalten – verfolgen Sie die Kernel-Sicherheitswarteschlange Ihres Anbieters.
.
├── README.md # Diese Datei
├── proof-of-concept.jpg # Screenshot: erfolgreicher LPE (uid 1000 → root)
├── sley.c # Einzeldatei-PoC + Terminal-UI
└── .gitignore
Diese Software wird wie besehen für Forschung und Bildung bereitgestellt. Sie sind dafür verantwortlich, geltende Gesetze einzuhalten und vor dem Testen eines Systems, das Ihnen nicht gehört, eine schriftliche Genehmigung einzuholen.
MIT — siehe Repository-Lizenzdatei, falls vorhanden. Verwenden Sie es verantwortungsvoll.
| Element | Detail |
|---|
| CVE | CVE-2026-43494 |
| Öffentlicher Name | PinTheft |
| Komponente | net/rds — Zerocopy-Sendepfad (rds_message_zcopy_from_user) |
| Primitiv | Doppeltes put_page() bei fehlgeschlagenem Page-Pin → Stehlen von FOLL_PIN-Referenzen |
| Bewaffnung | io_uring Fixed Buffer + fehlgeschlagenes RDS-Zerocopy → Page-Cache-UAF-Schreibzugriff |
| Auswirkung | Lokaler Root auf angreifbaren Konfigurationen |
| Upstream-Fix | e17492979319 |
| Maßnahme | Hinweise |
|---|
| 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 |
| Minimalrechte | Nicht benötigte SUID-Binärdateien entfernen; Container mit gehärteten Profilen verwenden |
| Überwachen | Alarmieren bei gehäuften RDS-Zerocopy-Fehlschlägen und io_uring-Buffer-Registrierungsmustern |