
Python-реализация copyfail (CVE-2026-31431)
Python-порт badsectorlabs/copyfail-go (CVE-2026-31431). Только для Linux; требуется Python 3.10+ (os.splice).
Этот инструмент не использует трюк с page-cache для /etc/passwd.
su встроенным шеллкодом (те же payload'ы, что и в Go main.go), а затем выполняет su.su как setuid-root программы, а не за счёт того, чтобы заставить getpwnam() думать, что ваш UID равен 0 через /etc/passwd.Другие публичные Python-PoC для той же CVE могут патчить /etc/passwd в page cache и затем предлагать вам выполнить su <user>. Это другой целевой файл и другой последующий шаг, чем в этом скрипте.
Только для авторизованного тестирования — используйте только на хостах, которыми вы владеете или на проверку которых у вас есть явное разрешение.
chmod +x copyfail_su.py
# Поток в интерактивном стиле (та же идея, что и copyfail-go без --exec)
./copyfail_su.py --backup /tmp/su.bak
# Запуск другой программы с повышенными привилегиями (передаёт путь как argv для su; использует payload exec-argv1)
./copyfail_su.py --backup /tmp/su.bak --exec /full/path/to/binary
После успешного запуска восстановите настоящий su.
--backupPoC повреждает page cache для /usr/bin/su. Не считайте файл на диске надёжным, пока не проверите его или не переустановите.
Переустановите пакет, которому принадлежит /usr/bin/su (сначала найдите его, затем переустановите):
rpm -qf /usr/bin/su, затем sudo dnf reinstall shadow-utils (используйте имя пакета из вывода).dpkg -S /usr/bin/su, затем sudo apt install --reinstall <package>.Проверка: sudo rpm -V <package> на предмет неожиданных изменений в /usr/bin/su, или debsums в системах на базе Debian.
Необязательно: перезагрузка после переустановки, чтобы избежать предположений об устаревшем кэше.
Если вы не можете переустановить от root: загрузка в режиме восстановления, Live USB или замена /usr/bin/su из заведомо рабочего образа того же дистрибутива/версии/архитектуры; убедитесь, что владелец root:root и режим ().
4755-rwsr-xr-x