
Python-Implementierung von copyfail (CVE-2026-31431)
Python-Port von badsectorlabs/copyfail-go (CVE-2026-31431). Nur Linux; erfordert Python 3.10+ (os.splice).
Dieses Tool verwendet nicht den /etc/passwd-Page-Cache-Trick.
su mit eingebettetem Shellcode (gleiche Payloads wie in main.go von Go) und führt dann su aus.su als setuid-Root-Programm, nicht dadurch, dass getpwnam() über /etc/passwd glaubt, Ihre UID sei 0.Andere öffentliche Python-PoCs für dieselbe CVE können /etc/passwd im Page-Cache patchen und Sie dann anweisen, su <user> auszuführen. Das ist ein anderes Zielfile und ein anderes Folgeverfahren als bei diesem Skript.
Nur für autorisierte Tests – verwenden Sie es ausschließlich auf Hosts, die Ihnen gehören oder für die Sie ausdrücklich die Berechtigung zur Prüfung haben.
chmod +x copyfail_su.py
# Interaktiver Ablauf (gleiche Idee wie copyfail-go ohne --exec)
./copyfail_su.py --backup /tmp/su.bak
# Ein anderes Programm mit erhöhten Rechten ausführen (übergibt Pfad als argv an su; verwendet exec-argv1-Payload)
./copyfail_su.py --backup /tmp/su.bak --exec /full/path/to/binary
Nach einem erfolgreichen Lauf stellen Sie das echte su wieder her.
--backupDer PoC korrumpiert den Page-Cache für /usr/bin/su. Gehen Sie nicht davon aus, dass die Datei auf der Festplatte noch vertrauenswürdig ist, bis Sie sie überprüft oder neu installiert haben.
Installieren Sie das Paket neu, dem /usr/bin/su gehört (finden Sie es zuerst, dann neu installieren):
rpm -qf /usr/bin/su und dann sudo dnf reinstall shadow-utils (verwenden Sie den gemeldeten Paketnamen).dpkg -S /usr/bin/su und dann sudo apt install --reinstall <package>.Überprüfen: sudo rpm -V <package> auf unerwartete Änderungen an /usr/bin/su, oder debsums auf Debian-basierten Systemen.
Optional: Nach der Neuinstallation neu starten, um veraltete Cache-Annahmen zu vermeiden.
Wenn Sie nicht als Root neu installieren können: Wiederherstellungs-Boot, Live-USB oder Ersetzen von /usr/bin/su aus einem bekannten, guten Abbild derselben Distribution/Version/Architektur; stellen Sie sicher, dass der Besitzer root:root und der Modus () ist.
4755-rwsr-xr-x