
# CVE-2026-31431 के लिए कर्नेल विशेषाधिकार वृद्धि शोषण AF_ALG इंटरफ़ेस का दुरुपयोग करके /bin/su को अधिलेखित करने और रूट शेल प्राप्त करने के लिए कर्नेल विशेषाधिकार वृद्धि शोषण। इसमें C कार्यान्वयन और समस्या निवारण मार्गदर्शिका शामिल है।
लेखक: 0xShe
भाषा / Language
CVE-2026-31431 कर्नेल विशेषाधिकार वृद्धि उपकरण मार्गदर्शिका
0x01 त्वरित आरंभ
कुछ लक्षित वातावरणों में Python स्थापित नहीं है, इसलिए इस विशेषाधिकार वृद्धि तर्क को C में पुनः लिखा गया है।
अपनी Linux मशीन या WSL पर निम्नलिखित कमांड चलाएँ (GLIBC संस्करण समस्याओं से बचने के लिए -static उपयोग करने की अनुशंसा की जाती है):
gcc -static exploit.c -o exploit
2. परिनियोजन और निष्पादन
उत्पन्न बाइनरी को लक्षित मशीन पर अपलोड करें:
chmod +x exploit
./exploit
यदि शोषण सफल होता है, तो प्रोग्राम स्वचालित रूप से su निष्पादित करेगा और बिना पासवर्ड की आवश्यकता के सीधे रूट शेल उत्पन्न करेगा।
0x02 विशेषाधिकार वृद्धि तर्क: यह कैसे काम करता है?
यह शोषण Linux कर्नेल के AF_ALG इंटरफ़ेस (कर्नेल क्रिप्टो API) में एक तर्क दोष का दुरुपयोग करता है।
क्रिप्टो सॉकेट बनाएँ प्रोग्राम socket(AF_ALG, ...) का उपयोग करके एक AEAD (प्रमाणित एन्क्रिप्शन विथ एसोसिएटेड डेटा) सॉकेट बनाता है।
मेमोरी इंजेक्शन (Splice) Linux के splice सिस्टम कॉल का लाभ उठाकर, फ़ाइल डिस्क्रिप्टर (इस मामले में /bin/su) से डेटा को सीधे कर्नेल क्रिप्टो बफर में पुनर्निर्देशित किया जा सकता है।
पेलोड ओवरराइट विशिष्ट मेमोरी ऑफसेट का उपयोग करके, शोषण /bin/su की प्रमाणीकरण तर्क के हिस्से को विशेषाधिकार वृद्धि पेलोड (एक न्यूनतम ELF प्रोग्राम जो /bin/sh लॉन्च करता है) से बदल देता है।
विशेषाधिकार वृद्धि ट्रिगर करें कर्नेल द्वारा क्रिप्टो ऑपरेशनों की श्रृंखला पूरी करने के बाद, मेमोरी में मौजूद su प्रक्रिया पहले ही छेड़छाड़ की जा चुकी होती है। जब system("su") अंततः निष्पादित होता है, तो सिस्टम वास्तव में संशोधित रूट शेल पेलोड चलाता है।
0x03 समस्या निवारण मार्गदर्शिका: यह अभी भी पासवर्ड क्यों माँगता है?
डिबगिंग के दौरान, यदि प्रोग्राम Exploit finished आउटपुट करता है लेकिन su चलाने पर अभी भी पासवर्ड की आवश्यकता होती है, तो समस्या आमतौर पर निम्नलिखित विवरणों में से किसी एक के कारण होती है।
यह सबसे सामान्य विफलता बिंदु है। sendmsg कॉल में MSG_MORE फ़्लैग शामिल होना चाहिए।
कारण: यह फ़्लैग कर्नेल को बताता है कि और डेटा आ रहा है और क्रिप्टो बफर को बहुत जल्दी अंतिम रूप देने से रोकता है।
परिणाम: इस फ़्लैग के बिना, कर्नेल तुरंत वर्तमान क्रिप्टो संदर्भ को बंद कर देता है। परिणामस्वरूप, बाद का splice इंजेक्शन सही कर्नेल बफर में प्रवेश नहीं कर पाता, जिससे ओवरराइट असंभव हो जाता है।
कर्नेल AEAD एसोसिएटेड डेटा के लिए संरेखण और लंबाई जाँच के बारे में अत्यंत सख्त है।
/bin/su को संशोधित करने वाले लूप के दौरान, प्रत्येक splice ऑपरेशन को ऑफसेट 0 से पढ़ना शुरू करना चाहिए।
कुछ सिस्टमों पर पहले से ही मौन सुरक्षा पैच लागू हो सकते हैं। यह कई मशीनों पर परीक्षण के दौरान पुष्टि की गई थी — कुछ लक्ष्यों को पहले ही अनौपचारिक या बैकपोर्टेड फिक्स प्राप्त हो चुके थे।
0x04 नोट्स
कर्नेल संस्करण: यह भेद्यता मुख्य रूप से प्रारंभिक 5.x Linux कर्नेल (जैसे Ubuntu 20.04 का प्रारंभिक रिलीज़) को प्रभावित करती है। यदि कर्नेल पहले ही पैच किया जा चुका है, तो यह विधि अब काम नहीं करेगी।
पथ अंतर: विभिन्न Linux वितरण su को विभिन्न स्थानों (/bin/su या /usr/bin/su) में संग्रहीत कर सकते हैं। कोड सही पथ का स्वचालित रूप से पता लगाने का प्रयास करता है, लेकिन यदि दोनों मौजूद नहीं हैं, तो which su का उपयोग करके मैन्युअल रूप से सत्यापित करें और कोड को तदनुसार संशोधित करें।
अस्वीकरण: यह लेख पूर्ण रूप से तकनीकी अनुसंधान और शैक्षिक उद्देश्यों के लिए है। इसे अवैध गतिविधियों के लिए उपयोग न करें। उपकरण के दुरुपयोग से उत्पन्न किसी भी कानूनी परिणाम के लिए उपयोगकर्ता पूर्ण रूप से जिम्मेदार हैं।