
स्थानीय विशेषाधिकार वृद्धि शोषण 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 बाइनरी को ओवरराइट करता है,
जिससे केवल फ़ाइल मेटाडेटा या ब्लॉक-स्तरीय चेकसम पर निर्भर अखंडता तंत्र बायपास हो जाते हैं।
.
├── 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 के माध्यम से इसके पेज-कैश पेजों को ओवरराइट करती है।समर्थित आर्किटेक्चर:
detect.bt के साथ वास्तविक समय में शोषण प्रयासों की निगरानी करें। रूट की आवश्यकता है:
sudo bpftrace detect.bt
# या
doas bpftrace detect.bt
स्क्रिप्ट @suspect[pid] में बिटमास्क का उपयोग करके प्रति PID तीन संकेतकों को ट्रैक करती है:
एक अलर्ट तब सक्रिय होता है जब सभी तीन बिट एक ही 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
"नहीं" पंक्ति में सबसिस्टम इन-कर्नेल क्रिप्टो API का सीधे उपयोग करते हैं — वे कभी भी
AF_ALG से नहीं गुजरते। प्रदर्शन सामान्य यूज़रस्पेस क्रिप्टो लाइब्रेरीज़ पर वापस आ जाता है, जो
लगभग बाकी सब कुछ पहले से उपयोग करता है।
अक्षम करने से पहले यह जाँचने के लिए कि क्या आपके सिस्टम पर कोई चीज़ सक्रिय रूप से AF_ALG का उपयोग करती है:
lsof | grep AF_ALG
ss -xa | grep alg
पैच स्थिति की परवाह किए बिना अविश्वसनीय वर्कलोड के लिए socket(AF_ALG, ...) निर्माण अस्वीकार करें। अपनी seccomp अस्वीकरण-सूची में AF_ALG (फ़ैमिली 38) जोड़ें, या AppArmor/SELinux नीति का उपयोग करें जो
अविशेषाधिकृत प्रक्रियाओं के लिए socket कॉल को प्रतिबंधित करती है।
detect.bt के साथ निगरानी करेंकिसी भी होस्ट पर शामिल पहचान स्क्रिप्ट तैनात करें जिसे तुरंत पैच या लॉक डाउन नहीं किया जा सकता। यह किसी भी प्रक्रिया पर अलर्ट करेगा जो पूर्ण तीन-चरणीय शोषण प्राइमिटिव निष्पादित करती है।
run-vm.sh नियंत्रित वातावरण में परीक्षण के लिए Ubuntu 24.04 QEMU VM के निर्माण को स्वचालित करता है। exploit.py और detect.bt किसी भी भेद्य होस्ट पर सीधे चलते हैं — QEMU
आवश्यक नहीं है।
| निर्भरता | नोट्स |
|---|---|
qemu-system-x86_64 + KVM | नीचे इंस्टॉल कमांड देखें |
wget या curl | क्लाउड इमेज डाउनलोड |
cloud-image-utils | सीड इमेज जनरेशन (Docker गैर-Debian होस्ट पर विकल्प हो सकता है) |
# Ubuntu/Debian
sudo apt install qemu-system-x86 cloud-image-utils wget
# Fedora/RHEL
sudo dnf install qemu-system-x86 wget
# Arch
sudo pacman -Sy qemu
# Alpine
sudo apk add qemu-system-x86 qemu-ui-gtk wget
sh run-vm.sh
1. VM प्रारंभ/बनाएँ
2. SSH के माध्यम से कनेक्ट करें
3. VM पर फ़ाइलें अपलोड करें (exploit.py, detect.bt)
4. VM के अंदर शोषण चलाएँ
5. VM के अंदर detect.bt चलाएँ
6. VM स्थिति जाँचें
7. VM रोकें
8. VM फ़ाइलें साफ़ करें
0. बाहर निकलें
| फ़ील्ड | मान |
|---|---|
| उपयोगकर्ता | ubuntu |
| पासवर्ड | cve123 |
| SSH पोर्ट | 2222 |
crypto/af_alg.c — कर्नेल स्रोतmm/splice.c — कर्नेल स्रोतयह प्रोजेक्ट GNU जनरल पब्लिक लाइसेंस v3.0 या बाद के संस्करण के तहत लाइसेंस प्राप्त है। पूर्ण पाठ के लिए LICENSE देखें।
अस्वीकरण: यह रिपॉजिटरी केवल अधिकृत सुरक्षा अनुसंधान, पैठ परीक्षण और शैक्षिक उद्देश्यों के लिए प्रदान की गई है। लेखक इस सॉफ़्टवेयर के किसी भी दुरुपयोग या क्षति के लिए कोई दायित्व स्वीकार नहीं करते हैं।
| फ़ील्ड | मान |
|---|
| 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 |
| आर्किटेक्चर | वेरिएंट |
|---|
| 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 | — |
| बिट | सिस्कॉल | संकेतक |
|---|
0x1 | socket(AF_ALG, SOCK_SEQPACKET) | AF_ALG सॉकेट बनाया गया |
0x2 | setsockopt(SOL_ALG, ...) | क्रिप्टो ऑपरेशन कॉन्फ़िगर किया गया |
0x4 | sendmsg(MSG_MORE) + splice() | पेज-कैश ओवरराइट का प्रयास किया गया |
| प्रभावित? | सबसिस्टम/उपयोग मामला |
|---|
| नहीं | dm-crypt/LUKS, kTLS, IPsec/XFRM, इन-कर्नेल TLS |
| नहीं | OpenSSL, GnuTLS, NSS डिफ़ॉल्ट बिल्ड |
| नहीं | SSH, कर्नेल कीरिंग क्रिप्टो |
| शायद | OpenSSL जिसमें afalg इंजन स्पष्ट रूप से सक्षम है |
| शायद | एम्बेडेड क्रिप्टो ऑफलोड पथ या ऐप जो aead/skcipher/hash सॉकेट सीधे बाइंड करते हैं |