पोलकिट भेद्यता ने अधिकांश लिनक्स वितरणों पर रूट एक्सेस प्राप्त करने की अनुमति दी

हाल ही में गुण खबर जारी की कि एक भेद्यता की पहचान की है (CVE-2021-4034) en सिस्टम घटक पोलकिट (पूर्व में पॉलिसीकिट), जिसका उपयोग वितरण में गैर-विशेषाधिकार प्राप्त उपयोगकर्ताओं को उन कार्यों को करने की अनुमति देने के लिए किया जाता है जिनके लिए उन्नत पहुंच अधिकारों की आवश्यकता होती है।

भेद्यता एक गैर-विशेषाधिकार प्राप्त स्थानीय उपयोगकर्ता को अपने विशेषाधिकारों को मूल उपयोगकर्ता तक बढ़ाने की अनुमति देता है और व्यवस्था पर पूर्ण नियंत्रण प्राप्त कर लेते हैं। इस मुद्दे का कोडनेम PwnKit है और यह एक कामकाजी कारनामे के उत्पादन के लिए उल्लेखनीय है जो अधिकांश लिनक्स वितरणों पर डिफ़ॉल्ट सेटिंग्स में चलता है।

यह उल्लेख है कि समस्या PolKit के साथ शामिल pkexec उपयोगिता में मौजूद है, जो SUID रूट फ्लैग के साथ आता है और PolKit नियमों के अनुसार अन्य उपयोगकर्ताओं के विशेषाधिकारों के साथ कमांड चलाने के लिए डिज़ाइन किया गया है।

तर्कों के गलत संचालन के कारण कमांड लाइन से pkexec को पास किया गया, a गैर-विशेषाधिकार प्राप्त उपयोगकर्ता प्रमाणीकरण को बायपास कर सकता है और आपका कोड रूट के रूप में चला सकता है, स्थापित पहुंच नियमों की परवाह किए बिना। एक हमले के लिए, पोलकिट में कोई भी सेटिंग्स और प्रतिबंध निर्धारित नहीं हैं, यह पर्याप्त है कि निष्पादन योग्य फ़ाइल के लिए SUID रूट विशेषता pkexec उपयोगिता के साथ सेट की गई है।

Pkexec शुद्धता की जाँच नहीं करता है एक प्रक्रिया शुरू करते समय पारित कमांड लाइन तर्कों (argc) की गिनती। pkexec डेवलपर्स ने माना कि argv सरणी में पहली प्रविष्टि में हमेशा प्रक्रिया का नाम (pkexec) होता है, और दूसरी प्रविष्टि या तो NULL होती है या pkexec के माध्यम से निष्पादित कमांड का नाम होता है।

चूंकि तर्क गणना की तुलना सरणी की वास्तविक सामग्री से नहीं की गई थी और इसे हमेशा 1 से अधिक माना जाता था, यदि प्रक्रिया के लिए एक खाली argv सरणी पारित की गई थी, जो कि Linux के निष्पादन फ़ंक्शन की अनुमति देता है, pkexec ने NULL को पहले तर्क के रूप में माना ( प्रक्रिया नाम), और अगले के बाद बफर मेमोरी से बाहर, अगली सरणी सामग्री के रूप में।

समस्या यह है कि स्मृति में argv सरणी के बाद envp सरणी होती है जिसमें पर्यावरण चर होते हैं। इस प्रकार, एक खाली argv सरणी के साथ, pkexec पर्यावरण चर के साथ सरणी के पहले तत्व से उन्नत विशेषाधिकारों के साथ निष्पादित किए जा रहे कमांड के बारे में डेटा निकालता है (argv[1] envp[0] के समान हो गया), जिसकी सामग्री द्वारा नियंत्रित किया जा सकता है हमलावर।

मान argv [1] प्राप्त करने के बाद, pkexec PATH में फ़ाइल पथ का उपयोग करके निष्पादन योग्य फ़ाइल के लिए पूर्ण पथ निर्धारित करने का प्रयास करता है और स्ट्रिंग को पॉइंटर को argv [1] पर पूर्ण पथ के साथ लिखता है, जिससे मान को अधिलेखित कर दिया जाता है पहले पर्यावरण चर के रूप में अच्छी तरह से, क्योंकि argv[1] envp[0] के समान है। पहले पर्यावरण चर के नाम में हेरफेर करके, एक हमलावर pkexec में किसी अन्य पर्यावरण चर को प्रतिस्थापित कर सकता है, उदाहरण के लिए, "LD_PRELOAD" पर्यावरण चर को प्रतिस्थापित करें, जिसे सुसाइड प्रोग्राम में अनुमति नहीं है, और प्रक्रिया में इसकी साझा लाइब्रेरी लोड होती है प्रक्रिया .

काम कर रहे शोषण GCONV_PATH चर प्रतिस्थापन का उपयोग करता है, जिसका उपयोग प्रतीक ट्रांसकोडिंग लाइब्रेरी के पथ को निर्धारित करने के लिए किया जाता है जो गतिशील रूप से लोड होता है जब g_printerr() फ़ंक्शन को कॉल किया जाता है, जो अपने कोड में iconv_open() का उपयोग करता है।

GCONV_PATH में पथ को फिर से परिभाषित करके, हमलावर सामान्य आइकनव लाइब्रेरी को लोड करने का प्रबंधन नहीं कर सकता है, लेकिन उसकी अपनी लाइब्रेरी, जिसके ड्राइवरों को उस चरण में त्रुटि संदेश के दौरान निष्पादित किया जाएगा जहां pkexec अभी भी रूट के रूप में चल रहा है और स्टार्टअप अनुमतियों के सत्यापन से पहले।

यह देखा गया है कि, हालांकि समस्या स्मृति भ्रष्टाचार के कारण है, इसे मज़बूती से और बार-बार शोषण किया जा सकता है, उपयोग किए गए हार्डवेयर आर्किटेक्चर की परवाह किए बिना।

शोषण तैयार किया उबंटू, डेबियन, फेडोरा और सेंटोस पर सफलतापूर्वक परीक्षण किया गया, लेकिन अन्य वितरणों पर भी इस्तेमाल किया जा सकता है। मूल शोषण अभी तक सार्वजनिक रूप से उपलब्ध नहीं है, यह दर्शाता है कि यह छोटा है और अन्य शोधकर्ताओं द्वारा आसानी से बनाया जा सकता है, इसलिए बहु-उपयोगकर्ता सिस्टम पर जितनी जल्दी हो सके हॉटफिक्स अपडेट स्थापित करना महत्वपूर्ण है।

पोल्किट बीएसडी और सोलारिस सिस्टम के लिए भी उपलब्ध है, लेकिन शोषण के लिए इसकी खोज नहीं की गई है। क्या ज्ञात है कि ओपनबीएसडी पर हमला नहीं किया जा सकता है, क्योंकि ओपनबीएसडी कर्नेल निष्पादित () को कॉल करते समय एक शून्य argc मान पारित करने की अनुमति नहीं देता है।

समस्या मई 2009 के बाद से है जब pkexec कमांड जोड़ा गया था। पोलकिट में भेद्यता के लिए फिक्स अभी भी एक पैच के रूप में उपलब्ध है (फिक्स संस्करण नहीं बनाया गया है), लेकिन चूंकि वितरण के डेवलपर्स को अग्रिम रूप से समस्या के बारे में सूचित किया गया था, अधिकांश वितरणों ने एक ही समय में एक अपडेट जारी किया। भेद्यता की जानकारी।

अंत में यदि आप इसके बारे में अधिक जानने में रुचि रखते हैं, आप इसमें विवरण देख सकते हैं निम्नलिखित लिंक।


पहली टिप्पणी करने के लिए

अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।