
Proof-of-concept für CVE-2026-43494 (PinTheft): Linux LPE mittels RDS zerocopy-Refcount-Bug + io_uring Fixed Buffers → SUID-Page-Cache-Überschreibung. 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)
Eigenständiger Proof-of-Concept in einer Datei für CVE-2026-43494 (PinTheft): eine lokale Privilegieneskalation im Linux-Kernel, die einen RDS-Zerocopy-Referenzzählungsfehler mit io_uring-Fixpuffern kombiniert, um den Page-Cache einer SUID-Root-Binärdatei zu überschreiben.
Haftungsausschluss: Dieses Repository dient ausschließlich der autorisierten Sicherheitsforschung, Bildung und defensiven Prüfung. Die Ausführung auf Systemen, die Sie nicht besitzen oder für die Sie keine ausdrückliche Erlaubnis zur Prüfung haben, ist illegal und unethisch. Die Autoren übernehmen keine Haftung für Fehlgebrauch.
Die ursprüngliche öffentliche Forschung und der PoC wurden vom Team V12 Security (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 anonyme Seite] --> B[io_uring: Fixpuffer registrieren]
B --> C[Puffertabelle in 2. Ring klonen]
C --> D[1024× fehlgeschlagene RDS-Zerocopy-Sendungen]
D --> E[FOLL_PIN-Bias abziehen / Referenzen stehlen]
E --> F[munmap → Seite freigegeben]
F --> G[SUID-Binärseite im Page-Cache zurückgefordert]
G --> H[Veralteter io_uring-Zeiger schreibt 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 durch unprivilegierte Benutzer automatisch ladbar)IORING_REGISTER_CLONE_BUFFERS-APIsudo apt install build-essential linux-libc-dev # Debian/Ubuntu
# oder äquivalentes Header-Paket auf Ihrer Distribution
# Gepatcht? (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 # 0 erwartet
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 │ Aufklärung
PHASE 2 │ Speicher- & io_uring-Einrichtung
PHASE 3 │ Pin-Referenzdiebstahl (RDS-Zerocopy)
PHASE 4 │ Page-Cache-Überschreibung & 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 das Wettrennen und der Kernelzustand zusammenpassen.
Bei gepatchten Kernen, gehärteten Hosts oder fehlendem RDS/io_uring wird der PoC frühzeitig fehlschlagen (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 # PoC in einer Datei + Terminal-UI
└── .gitignore
Diese Software wird wie besehen für Forschung und Bildung bereitgestellt. Sie sind dafür verantwortlich, geltende Gesetze einzuhalten und eine schriftliche Genehmigung einzuholen, bevor Sie ein System testen, das Ihnen nicht gehört.
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) |
| Primitive | Doppeltes put_page() bei fehlendem Page-Pin → Stehlen von FOLL_PIN-Referenzen |
| Waffenausführung | io_uring-Fixpuffer + fehlgeschlagenes RDS-Zerocopy → Page-Cache UAF-Schreibzugriff |
| Auswirkung | Lokaler Root auf verwundbaren 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) wenn 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 | Bei Bursts von RDS-Zerocopy-Fehlern + io_uring-Pufferregistrierungsmustern alarmieren |