
# Linux प्रणालियों को AF_ALG स्थानीय विशेषाधिकार वृद्धि (CVE-2026-31431) के विरुद्ध ऑडिट और हार्डन करता है, कर्नेल क्रिप्टो API एक्सपोज़र की जाँच करके, मॉड्यूल को प्रतिबंधित करके, और पुनर्स्थापना स्क्रिप्ट प्रदान करके।
यह टूल कर्नेल मॉड्यूल को भौतिक रूप से नाम बदलकर और उन्हें मेमोरी से हटाकर CVE-2026-31431 को कम करने के लिए स्ट्रक्चरल ब्लॉकिंग लागू करता है। उपयोग से पहले, कृपया निम्नलिखित आर्किटेक्चरल जोखिमों से अवगत रहें:
/lib/modules/ निर्देशिका के अंतर्गत नए, कमजोर मॉड्यूल तैनात करेगा, जिससे पिछला अवरोध अप्रभावी हो जाएगा।AF_ALG (कर्नेल क्रिप्टो API) को अक्षम करने से कुछ विशिष्ट एप्लिकेशन या सेवाएं टूट सकती हैं जो कर्नेल-स्तरीय हार्डवेयर त्वरण पर निर्भर करती हैं (जैसे, विशेष VPN, डिस्क एन्क्रिप्शन उपयोगिताएँ, या कस्टम सुरक्षा उपकरण)।अपने जोखिम पर उपयोग करें। solution.sh चलाने के बाद हमेशा अपने सिस्टम के महत्वपूर्ण कार्यों को सत्यापित करें।
लिनक्स कर्नेल क्रिप्टो API (AF_ALG) के माध्यम से LPE (लोकल प्रिविलेज एस्केलेशन) वैक्टर की खोज, निदान और रोकथाम के लिए एक टूल किट।
यह टूल कर्नेल मॉड्यूल का नाम बदलकर और उन्हें मेमोरी से हटाकर CVE-2026-31431 को संबोधित करने के लिए स्ट्रक्चरल ब्लॉकिंग का उपयोग करता है। मुख्य आर्किटेक्चरल जोखिमों में शामिल हैं:
/lib/modules/ निर्देशिका के अंतर्गत नए कमजोर मॉड्यूल तैनात करता है, जिससे पिछला अवरोध अप्रभावी हो जाता है।अपने जोखिम पर उपयोग करें।
यह रिपॉजिटरी दो स्क्रिप्ट प्रदान करती है जो AF_ALG (socket(38, 5, 0)) के माध्यम से विशेषाधिकार एस्केलेशन हमलों के खिलाफ निदान → रोकथाम → सत्यापन वर्कफ़्लो बनाती हैं:
check.sh — बहु-परत सुरक्षा स्थिति ऑडिट (बिना विशेषाधिकार के चलता है)solution.sh — मेमोरी से AF_ALG मॉड्यूल को बलपूर्वक हटाता है + भौतिक मॉड्यूल फ़ाइलों की जाँच करता है (रूट आवश्यक)restore.sh — AF_ALG मॉड्यूल को पुनः लोड करता है और सिस्टम को solution.sh से पहले की स्थिति में पुनर्स्थापित करता है (रूट आवश्यक)./check.sh
sudo ./solution.sh
sudo ./restore.sh
restore.sh AF_ALG कर्नेल मॉड्यूल (af_alg, algif_rng, algif_aead, algif_skcipher, algif_hash) को पुनः लोड करके solution.sh के प्रभावों को उलट देता है। यदि भौतिक मॉड्यूल फ़ाइल (af_alg.ko.xz) का नाम बदला गया था या हटा दिया गया था, तो स्क्रिप्ट आपको चेतावनी देगी और मॉड्यूल लोड करने का प्रयास करने से पहले मैन्युअल पुनर्स्थापना के लिए संकेत देगी।
एक लाइव सिस्टम पर solution.sh चलाना जो सक्रिय रूप से AF_ALG का उपयोग करता है (जैसे, IPsec, dm-crypt/LUKS, या किसी भी हार्डवेयर क्रिप्टो ऑफलोड वाला सिस्टम) तुरंत सभी कर्नेल क्रिप्टो संचालन को तोड़ देगा। इसमें शामिल है:
algif_* सॉकेट इंटरफेस पर निर्भर कोई भी कंटेनर या एप्लिकेशनस्क्रिप्ट AF_ALG कर्नेल मॉड्यूल को बलपूर्वक अनलोड करती है। रीबूट होने तक कर्नेल क्रिप्टो संचालन विफल रहेंगे। यह स्क्रिप्ट केवल एयर-गैप्ड, गैर-उत्पादन, या डिस्पोजेबल सिस्टम के लिए परीक्षण और विश्लेषण उद्देश्यों के लिए है। इसे उत्पादन या महत्वपूर्ण बुनियादी ढांचे पर न चलाएं।
check.sh को POSIX शेल और /proc//sys के अलावा कोई निर्भरता की आवश्यकता नहीं हैsolution.sh को रूट विशेषाधिकारों की आवश्यकता हैrestore.sh को रूट विशेषाधिकारों की आवश्यकता हैaf_alg_block.so को /etc/ld.so.preload के माध्यम से स्थापित करने के लिए रूट विशेषाधिकारों की आवश्यकता हैइस POC का परीक्षण WSL2 पर किया गया है। निम्नलिखित से अवगत रहें:
wsl --shutdown)। इसमें solution.sh से कर्नेल मॉड्यूल स्थिति परिवर्तन, फ़ाइल नाम परिवर्तन, check.sh परिणाम, और इस रिपॉजिटरी में कोई भी स्थानीय फ़ाइल संशोधन शामिल है।.wslconfig, /etc/wsl.conf, या एक ऑटो-स्टार्ट स्क्रिप्ट (जैसे, /etc/rc.local) को अलग से कॉन्फ़िगर करने पर विचार करें।AF_ALG हमले वेक्टर को निश्चित रूप से बंद करने के लिए:
कर्नेल मॉड्यूल को ब्लैकलिस्ट करें (सबसे विश्वसनीय):
echo "blacklist af_alg" | sudo tee /etc/modprobe.d/af_alg-blacklist.conf
या भौतिक फ़ाइल का नाम बदलें:
sudo mv /lib/modules/$(uname -r)/kernel/crypto/af_alg.ko.xz \
/lib/modules/$(uname -r)/kernel/crypto/af_alg.ko.xz.bak
sysctl के माध्यम से AF_ALG अक्षम करें:
sudo sysctl -w net.core.af_alg_disabled=1
SELinux / AppArmor नीति के माध्यम से AF_ALG सॉकेट निर्माण को ब्लॉक करें
अविशेषाधिकार प्राप्त उपयोगकर्ता नेमस्पेस अक्षम करें (कंटेनर वातावरण):
sudo sysctl -w kernel.unprivileged_userns_clone=0
LD_PRELOAD के माध्यम से socket() syscall पर AF_ALG ब्लॉक करें (WSL2 वर्कअराउंड):
# सिस्टम-व्यापी स्थापित करें (रूट आवश्यक)
echo /absolute/path/to/af_alg_block.so | sudo tee -a /etc/ld.so.preload
रिपॉजिटरी में एक पूर्व-निर्मित साझा लाइब्रेरी (af_alg_block.so) शामिल है। यह को इंटरसेप्ट करता है और जब डोमेन (38) होता है तो लौटाता है। अन्य सभी सॉकेट कॉल वास्तविक कार्यान्वयन में अपरिवर्तित पास होते हैं।
MIT
| जाँच | यह क्या जाँचता है | गंभीरता |
|---|
| प्रोसेस संदर्भ | वर्तमान UID/GID और प्रभावी क्षमताएँ | निम्न |
| AF_ALG क्रिप्टो सॉकेट | socket(AF_ALG, ...) के माध्यम से कर्नेल क्रिप्टो API पहुंच | उच्च |
| kptr_restrict | उपयोगकर्ता स्थान के लिए कर्नेल पॉइंटर दृश्यता | मध्यम |
| dmesg_restrict | कर्नेल रिंग बफर एक्सेस प्रतिबंध | मध्यम |
| SELinux | एनफोर्सिंग / पर्मिसिव / डिसेबल्ड स्थिति | मध्यम |
| /proc hidepid | क्या /proc अन्य प्रक्रियाओं की जानकारी छुपाता है | निम्न |
socket(2)AF_ALGEAFNOSUPPORTयह दृष्टिकोण मुख्य रूप से WSL2 के लिए है जहां एकल-उपयोगकर्ता शब्दार्थ और रीबूट-पर-रीसेट व्यवहार सिस्टम-व्यापी LD_PRELOAD को व्यावहारिक बनाते हैं। पारंपरिक बहु-उपयोगकर्ता Linux सिस्टम पर, इसके बजाय विधि 1 (मॉड्यूल ब्लैकलिस्टिंग) को प्राथमिकता दें — /etc/ld.so.preload के माध्यम से इंजेक्शन सिस्टम पर हर प्रक्रिया को प्रभावित करता है और AF_ALG-निर्भर सेवाओं को चुपचाप तोड़ सकता है।
नोट: glibc की आवश्यकता है (musl नहीं)। /etc/ld.so.preload को संशोधित करने के लिए रूट की आवश्यकता होती है। निष्कासन फ़ाइल से संबंधित पंक्ति को हटाकर किया जाता है।