
Implémentation Python de copyfail (CVE-2026-31431)
Portage Python de badsectorlabs/copyfail-go (CVE-2026-31431). Linux uniquement ; nécessite Python 3.10+ (os.splice).
Cet outil n'utilise pas l'astuce du cache de pages de /etc/passwd.
su avec du shellcode embarqué (mêmes payloads que le main.go de Go), puis exécute su.su en tant que programme setuid root, et non du fait de faire croire à getpwnam() que votre UID est 0 via /etc/passwd.D'autres PoC Python publics pour la même CVE peuvent patcher /etc/passwd dans le cache de pages puis vous demander d'exécuter su <user>. Il s'agit d'un fichier cible différent et d'une suite différente par rapport à ce script.
Tests autorisés uniquement — utilisez-le seulement sur des hôtes qui vous appartiennent ou pour lesquels vous avez une autorisation explicite d'audit.
chmod +x copyfail_su.py
# Flux de type interactif (même idée que copyfail-go sans --exec)
./copyfail_su.py --backup /tmp/su.bak
# Exécuter un autre programme avec élévation de privilèges (passe le chemin comme argv à su ; utilise le payload exec-argv1)
./copyfail_su.py --backup /tmp/su.bak --exec /chemin/complet/vers/binaire
Après une exécution réussie, restaurez le vrai su.
--backupLe PoC corrompt le cache de pages de /usr/bin/su. Ne supposez pas que le fichier sur disque est toujours fiable tant que vous ne l'avez pas vérifié ou réinstallé.
Réinstallez le paquet qui possède /usr/bin/su (identifiez-le d'abord, puis réinstallez) :
rpm -qf /usr/bin/su puis sudo dnf reinstall shadow-utils (utilisez le nom de paquet indiqué).dpkg -S /usr/bin/su puis sudo apt install --reinstall <paquet>.Vérifiez : sudo rpm -V <paquet> pour détecter des changements inattendus sur /usr/bin/su, ou debsums sur les systèmes de type Debian.
Facultatif : redémarrez après la réinstallation pour éviter les hypothèses de cache obsolètes.
Si vous ne pouvez pas réinstaller en tant que root : démarrage en mode récupération, Live USB, ou remplacement de /usr/bin/su à partir d'une image connue de même distribution/version/architecture ; assurez-vous du propriétaire root:root et du mode ().
4755-rwsr-xr-x