
Proof-of-concept lokaler Privilegienausweitungs-Exploit für CVE-2017-7184, ein Linux-Kernel-XFRM-Netlink-Stack-Overflow. Demonstriert Namespace-Missbrauch und Kernel-ROP, um ohne sudo root zu erlangen.
Dieses Repository enthält einen Proof-of-Concept-Exploit für lokale Privilegieneskalation für CVE-2017-7184, eine Linux-Kernel-Sicherheitslücke im XFRM (IPsec) Netlink-Subsystem.
Der Exploit demonstriert, wie ein nicht privilegierter Benutzer echte Root-Rechte (UID 0) erlangen kann, indem er:
Einen nicht privilegierten Benutzer- + Netzwerk-Namespace erstellt
CAP_NET_ADMIN innerhalb des Namespace erlangt
Einen Kernel-Stack-Overflow in der XFRM-Netlink-Verarbeitung auslöst
Eine Kernel-ROP-Kette ausführt, um folgende Funktionen aufzurufen:
prepare_kernel_cred(NULL)commit_creds()Sicher zurück in den Userspace mit vollen Root-Rechten zurückkehrt
sudo ist nicht erforderlich.
Nicht privilegierter Benutzer-Namespace
unshare(CLONE_NEWUSER | CLONE_NEWNET)CAP_NET_ADMIN ohne sudoXFRM-Netlink-Missbrauch
NETLINK_XFRM-SocketXFRM_MSG_NEWSA-NachrichtKernel-ROP-Ausführung
Rückkehr in den Userspace
swapgs; iretqunprivileged_userns_clone = 1gcc mit pthread-UnterstützungNamespace-Unterstützung prüfen:
cat /proc/sys/kernel/unprivileged_userns_clone
Erwartete Ausgabe:
1
gcc exploit.c -o exploit -pthread
./exploit
sudo nicht verwenden.
Bei Erfolg erhalten Sie eine echte Root-Shell:
uid=0(root) gid=0(root) groups=0(root)
Der Exploit versucht:
Symbole aus /proc/kallsyms auslesen
Falls eingeschränkt, Rückgriff auf hartcodierte Offsets für:
commit_credsprepare_kernel_cred⚠️ ROP-Gadgets und Offsets sind kernelversionabhängig. Sie müssen sie für andere Builds anpassen.
Dies bestätigt dennoch, dass das System anfällig ist.
sysctl -w kernel.unprivileged_userns_clone=0
Dieser Code wird nur zu Bildungs- und Sicherheitsforschungszwecken bereitgestellt.
commit_creds-Exploitation| Feld | Wert |
|---|
| CVE | CVE-2017-7184 |
| Komponente | Linux Kernel – XFRM Netlink |
| Fehlertyp | Kernel Stack Overflow |
| Auswirkung | Lokale Privilegieneskalation |
| Angriffsvektor | Lokal (nicht privilegierter Benutzer) |
| Exploit-Klasse | Namespace-Missbrauch + ROP |
| Erstmals betroffen | Linux-Kernel ≤ 4.8 |
| Behoben in | Kernel-Patches, veröffentlicht 2017 |