
Python implementação do copyfail (CVE-2026-31431)
Porte em Python de badsectorlabs/copyfail-go (CVE-2026-31431). Apenas Linux; requer Python 3.10+ (os.splice).
Esta ferramenta não usa o truque de page cache do /etc/passwd.
su com shellcode embutido (mesmos payloads do main.go em Go) e, em seguida, executa su.su como um programa setuid root, e não de fazer o getpwnam() pensar que seu UID é 0 via /etc/passwd.Outros PoCs públicos em Python para a mesma CVE podem corrigir o /etc/passwd no page cache e depois instruí-lo a executar su <user>. Esse é um arquivo-alvo diferente e um passo seguinte diferente em relação a este script.
Somente para testes autorizados — use apenas em hosts que você possui ou para os quais tem permissão explícita de avaliação.
chmod +x copyfail_su.py
# Fluxo estilo interativo (mesma ideia do copyfail-go sem --exec)
./copyfail_su.py --backup /tmp/su.bak
# Executa outro programa elevado (passa o caminho como argv para su; usa payload exec-argv1)
./copyfail_su.py --backup /tmp/su.bak --exec /caminho/completo/para/binario
Após uma execução bem-sucedida, restaure o su real.
--backupO PoC corrompe o page cache de /usr/bin/su. Não presuma que o arquivo em disco ainda é confiável até verificar ou reinstalar.
Reinstale o pacote que possui /usr/bin/su (encontre-o primeiro, depois reinstale):
rpm -qf /usr/bin/su e depois sudo dnf reinstall shadow-utils (use o nome do pacote informado).dpkg -S /usr/bin/su e depois sudo apt install --reinstall <pacote>.Verifique: sudo rpm -V <pacote> para alterações inesperadas em /usr/bin/su, ou debsums em sistemas estilo Debian.
Opcional: reinicie após a reinstalação para evitar suposições de cache obsoleto.
Se não puder reinstalar como root: boot de recuperação, Live USB ou substitua /usr/bin/su a partir de uma imagem conhecida e íntegra da mesma distro/versão/arquitetura; garanta a propriedade root:root e o modo 4755 ().
-rwsr-xr-x