
स्थानीय विशेषाधिकार वृद्धि शोषण CVE-2026-31431 के लिए, जो Linux कर्नेल AF_ALG + splice पेज-कैश ओवरराइट है। इसमें PoC, BPFtrace डिटेक्शन स्क्रिप्ट, और अधिकृत सुरक्षा अनुसंधान के लिए QEMU परीक्षण वातावरण शामिल है।
AF_ALG + splice पेज-कैश ओवरराइट के माध्यम से Linux कर्नेल स्थानीय विशेषाधिकार वृद्धि
केवल अधिकृत सुरक्षा अनुसंधान, पैठ परीक्षण और शैक्षिक उद्देश्यों के लिए। उन सिस्टमों के विरुद्ध उपयोग न करें जिनके स्वामी आप नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है।
CVE-2026-31431 Linux कर्नेल में एक स्थानीय विशेषाधिकार वृद्धि (LPE) भेद्यता है। एक
अविशेषाधिकृत स्थानीय उपयोगकर्ता AF_ALG सॉकेट इंटरफ़ेस को splice() के साथ जोड़कर
setuid बाइनरी से संबंधित पेज-कैश पेज में सीधे प्रमाणित लेखन करके रूट एक्सेस प्राप्त कर सकता है।
यह शोषण डिस्क पर मौजूद inode को संशोधित किए बिना पेज कैश में su बाइनरी को ओवरराइट करता है,
जिससे केवल फ़ाइल मेटाडेटा या ब्लॉक-स्तरीय चेकसम पर निर्भर अखंडता तंत्र बायपास हो जाते हैं।
| फ़ील्ड | मान |
|---|---|
| CVE ID | CVE-2026-31431 |
| प्रकार | स्थानीय विशेषाधिकार वृद्धि (LPE) |
| CVSS v3.1 स्कोर | 7.8 उच्च — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (स्रोत: kernel.org) |
| कर्नेल सबसिस्टम | crypto/af_alg.c, mm/splice.c |
| हमला वेक्टर | स्थानीय — अविशेषाधिकृत उपयोगकर्ता खाता आवश्यक |
| मूल कारण | algif_aead splice() द्वारा स्थानांतरण पूर्ण होने से पहले मैप किए गए पेज-कैश पेज पर कॉपी-ऑन-राइट सिमेंटिक्स लागू किए बिना AEAD सॉकेट पर sendfile() स्वीकार करता है |
| डिस्ट्रो | कर्नेल संस्करण | आर्किटेक्चर |
|---|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws | x86_64 |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 | x86_64 |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 | x86_64 |
| SUSE 16 | 6.12.0-160000.9-default | x86_64 |
| Raspberry Pi OS (Pi 5) | 6.12.75+rpt-rpi-2712 | aarch64 |
.
├── exploit.py # PoC — पेज-कैश ओवरराइट और विशेषाधिकार वृद्धि
├── detect.bt # वास्तविक समय पहचान के लिए BPFtrace स्क्रिप्ट
├── run-vm.sh # QEMU परीक्षण वातावरण स्वचालन (वैकल्पिक)
├── PAYLOAD.md # पेलोड एन्कोडिंग विश्लेषण (hex → zlib → ELF → shellcode)
└── LICENSE
किसी भी भेद्य सिस्टम पर exploit.py को अविशेषाधिकृत स्थानीय उपयोगकर्ता के रूप में चलाएँ — sudo की आवश्यकता नहीं:
python3 exploit.py
स्क्रिप्ट निम्नलिखित चरण करती है:
AF_ALG (algif_aead) के लिए कर्नेल समर्थन सत्यापित करती है और su बाइनरी का पता लगाती है।su बाइनरी को रॉ फ़ाइल डिस्क्रिप्टर के रूप में खोलती है और AF_ALG + sendfile के माध्यम से इसके पेज-कैश पेजों को ओवरराइट करती है।समर्थित आर्किटेक्चर:
| आर्किटेक्चर | वेरिएंट |
|---|---|
| x86_64 | — |
| aarch64 | — |
| riscv64 | — |
| ppc64le | — |
| arm | armv5l, armv6l, armv7l |
| x86 32-bit | i386, i486, i586, i686 |
| MIPS 64-bit | mips64, mips64el |
| LoongArch | loong64, loongarch64 |
| s390x | — |
detect.bt के साथ वास्तविक समय में शोषण प्रयासों की निगरानी करें। रूट की आवश्यकता है:
sudo bpftrace detect.bt
# या
doas bpftrace detect.bt
स्क्रिप्ट @suspect[pid] में बिटमास्क का उपयोग करके प्रति PID तीन संकेतकों को ट्रैक करती है:
| बिट | सिस्कॉल | संकेतक |
|---|---|---|
0x1 | socket(AF_ALG, SOCK_SEQPACKET) | AF_ALG सॉकेट बनाया गया |
0x2 | setsockopt(SOL_ALG, ...) | क्रिप्टो ऑपरेशन कॉन्फ़िगर किया गया |
0x4 | sendmsg(MSG_MORE) + splice() | पेज-कैश ओवरराइट का प्रयास किया गया |
एक अलर्ट तब सक्रिय होता है जब सभी तीन बिट एक ही PID पर सेट होते हैं (@suspect[pid] == 0x7)।
exploit.pyAF_ALG/algif_aead मॉड्यूल लोड के साथ Linux कर्नेलdetect.btbpftrace ≥ 0.12# Ubuntu/Debian
sudo apt install bpftrace
# RHEL/CentOS/Fedora
sudo dnf install bpftrace
# Amazon Linux
sudo yum install bpftrace
# SUSE
sudo zypper install bpftrace
# Alpine
sudo apk add bpftrace
अपने डिस्ट्रो के कर्नेल पैकेज को उस संस्करण में अपडेट करें जिसमें मेनलाइन कमिट
a664bf3d603d शामिल हो,
जो 2017 के algif_aead इन-प्लेस ऑप्टिमाइज़ेशन को वापस लेता है ताकि पेज-कैश पेज अब
राइटेबल डेस्टिनेशन स्कैटरलिस्ट में समाप्त न हो सकें। अधिकांश प्रमुख डिस्ट्रो अब यह फिक्स भेज रहे हैं।
algif_aead अक्षम करें (पैच की प्रतीक्षा करते समय)blacklist को स्पष्ट modprobe algif_aead से बायपास किया जा सकता है। install .../bin/false
निर्देश इंस्टॉल कमांड को पूरी तरह से ओवरराइड करता है, जिससे हर लोड प्रयास विफल हो जाता है:
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo rmmod algif_aead 2>/dev/null || true
| प्रभावित? | सबसिस्टम/उपयोग मामला |
|---|---|
| नहीं | dm-crypt/LUKS, kTLS, IPsec/XFRM, इन-कर्नेल TLS |
| नहीं | OpenSSL, GnuTLS, NSS डिफ़ॉल्ट बिल्ड |
| नहीं | SSH, कर्नेल कीरिंग क्रिप्टो |
| शायद | OpenSSL जिसमें afalg इंजन स्पष्ट रूप से सक्षम है |
| शायद | एम्बेडेड क्रिप्टो ऑफलोड पथ या ऐप जो aead/skcipher/hash सॉकेट सीधे बाइंड करते हैं |