
विस्तृत विश्लेषण CVE-2022-21668 का, Pipenv के requirements.txt पार्सिंग में एक गंभीर RCE भेद्यता, जिसमें bug code, exploit mechanics, और fix validation शामिल हैं।
इस दस्तावेज़ में Pipenv भेद्यता (CVE-2022-21668) पर विस्तार से चर्चा की गई है। निम्नलिखित अनुभाग pipenv/utils.py फ़ाइल में बग कोड को कवर करते हैं जो विभिन्न RCE हमलों का द्वार खोलता है और साथ ही हाल ही के फिक्स के बारे में भी बताते हैं जो SSL/TLS कनेक्शन को मान्य करता है और होस्टनाम को विश्वसनीय होस्टों की सूची के विरुद्ध जांचता है।
Pipenv Pipenv एक उपकरण है जो स्वचालित रूप से आपकी परियोजनाओं के लिए virtualenv बनाता और प्रबंधित करता है, साथ ही जब आप पैकेज इंस्टॉल/अनइंस्टॉल करते हैं तो आपकी Pipfile से पैकेज जोड़ता/हटाता है।
अधिक जानकारी के लिए यहाँ क्लिक करें
हमें जटिल सिस्टम से निपटने के दौरान requirements.txt फ़ाइल की आवश्यकता होती है। यह टेक्स्ट फ़ाइल तब भी काम आती है जब हम एप्लिकेशन को किसी अन्य वातावरण में पोर्ट करना चाहते हैं। यह फ़ाइल किसी एप्लिकेशन को सफलतापूर्वक चलाने के लिए आवश्यक सभी पैकेज/निर्भरताओं को उनके संस्करण संख्याओं सहित रखती है।
नमूना requirements.txt फ़ाइल:
छवि स्रोत: https://www.idkrtm.com/what-is-the-python-requirements-txt/
यदि हमारे पास requirements.txt फ़ाइल नहीं है, तो हमारे एप्लिकेशन को किसी अन्य सिस्टम में सफलतापूर्वक पोर्ट करना संभव नहीं हो सकता है, क्योंकि पैकेज संस्करणों के बीच संगतता समस्या हो सकती है।
Pipenv संस्करण 2018.10.9 से शुरू होकर संस्करण 2022.1.8 से पहले तक, pipenv के requirements फ़ाइलों के पार्सिंग में एक दोष हमलावर को requirements.txt फ़ाइल के अंदर कहीं भी एक टिप्पणी के अंदर विशेष रूप से तैयार की गई स्ट्रिंग डालने की अनुमति देता है, जिससे वे पीड़ित जो requirements फ़ाइल को स्थापित करने के लिए pipenv का उपयोग करते हैं, वे हमलावर द्वारा नियंत्रित पैकेज इंडेक्स सर्वर से निर्भरताएं डाउनलोड करेंगे। ऐसे अत्यधिक असुरक्षित सिस्टमों के विरुद्ध RCE हमला अत्यधिक संभव है।
cvedetails इस भेद्यता को गंभीर / गंभीर दर देता है।
cvedetails से CVSS स्कोर:
(स्रोत: https://www.cvedetails.com/cve/CVE-2022-21668/)
यह फ़ंक्शन requirements फ़ाइल की प्रत्येक पंक्ति पर पुनरावृत्त रूप से कॉल किया जाता है, और --index-url, --extra-index-url, और --trusted-host विकल्पों को खोजने और संसाधित करने के लिए argparse मॉड्यूल का उपयोग करता है। हालांकि, जब ये विकल्प टिप्पणियों में दिखाई देते हैं तो यह उन्हें अनदेखा नहीं करता है। कोड के साथ समस्या यह है कि यह फ़ाइल में कहीं भी "--index-url, --extra-index-url, और --trusted-host" से शुरू होने वाले स्ट्रिंग को पार्स करेगा। यह कार्यक्षमता इसे और अधिक असुरक्षित बनाती है।
अधिक जानकारी के लिए यहाँ क्लिक करें
रिमोट कोड निष्पादन (RCE) हमले एक हमलावर को कंप्यूटर पर दूरस्थ रूप से दुर्भावनापूर्ण कोड निष्पादित करने की अनुमति देते हैं। RCE भेद्यता का प्रभाव मैलवेयर निष्पादन से लेकर हमलावर द्वारा समझौता की गई मशीन पर पूर्ण नियंत्रण प्राप्त करने तक हो सकता है।
यदि कोई हमलावर किसी requirements फ़ाइल में एक दुर्भावनापूर्ण --index-url विकल्प छिपाने में सक्षम है जिसे पीड़ित pipenv के साथ स्थापित करता है, तो हमलावर अपने दुर्भावनापूर्ण इंडेक्स सर्वर से परोसे गए पैकेजों में मनमाना दुर्भावनापूर्ण कोड एम्बेड कर सकता है जो स्थापना के दौरान पीड़ित के होस्ट पर निष्पादित होगा (रिमोट कोड निष्पादन/RCE)। इस तकनीक का उपयोग करके शोषण Python के बुनियादी ज्ञान वाले हमलावर के लिए अपेक्षाकृत सरल होगा, क्योंकि हमलावर requirements फ़ाइल में निर्दिष्ट किसी भी पैकेज के लिए एक स्रोत वितरण बना सकता है, और setup.py फ़ाइल में मनमाना दुर्भावनापूर्ण कोड एम्बेड कर सकता है। जब pip किसी स्रोत वितरण से स्थापित करता है, तो setup.py में कोई भी कोड स्थापना प्रक्रिया द्वारा निष्पादित किया जाता है।
अधिक जानकारी के लिए यहाँ क्लिक करें
संस्करण 2022.1.8 और उससे ऊपर में यह समस्या ठीक कर दी गई है। pipenv/utils.py फ़ाइल में एक नया फ़ंक्शन “get_host_and_port(url)” जोड़ा गया है। यह फ़ंक्शन requirements.txt फ़ाइल में प्रस्तुत url के होस्ट और पोर्ट को पुनर्प्राप्त करता है। पुनर्प्राप्त होस्ट पते को urllib3 का उपयोग करके पार्स किया जाता है जो आंतरिक रूप से SSL/TLS कनेक्शन को मान्य करता है। होस्ट पते की जाँच विश्वसनीय होस्ट पतों की सूची के विरुद्ध भी की जाती है।
अधिक जानकारी यहाँ
बुनियादी हमले पीड़ित के होस्ट से क्रेडेंशियल चुराने, क्रिप्टोकरेंसी माइन करने के लिए होस्ट के संसाधनों का उपयोग करने, या एक्सप्लॉइट किट या अन्य मैलवेयर स्थापित करने के लिए प्रारंभिक RCE का उपयोग कर सकते हैं जो तब ट्रिगर होता है जब पीड़ित हमलावर के दुर्भावनापूर्ण पैकेज को स्थापित करता है। अधिक परिष्कृत हमलावर पीड़ित के होस्ट तक पहुंच बनाए रखने, pipenv द्वारा उत्पन्न Pipfile और Pipfile.lock में दुर्भावनापूर्ण इंडेक्स सर्वर के संदर्भ या समझौते के अन्य संभावित संकेतकों को हटाकर अपने हमले के सबूत छिपाने या हटाने के लिए अधिक उन्नत तकनीकों का उपयोग कर सकते हैं। अत्यधिक परिष्कृत हमलावर प्रारंभिक समझौता किए गए होस्ट से अतिरिक्त लक्ष्यों की ओर बढ़ने का प्रयास कर सकते हैं, और समझौता किए गए होस्ट वातावरण में उजागर किसी भी क्रेडेंशियल या होस्ट को दिए गए अंतर्निहित प्राधिकरण का लाभ उठाकर अन्य सिस्टम या संसाधनों, जैसे स्रोत रिपॉजिटरी या पैकेज रजिस्ट्रियों तक विशेषाधिकार प्राप्त पहुंच प्राप्त कर सकते हैं। (स्रोत: https://github.com/pypa/pipenv/security/advisories/GHSA-qc9x-gjcv-465w)
एक पार्सिंग त्रुटि जो टिप्पणियों को ठीक से पार्स करने पर विचार नहीं करती, ने एक गंभीर भेद्यता पैदा कर दी है।
सूची आइटम ऐसी भेद्यता हाथ में होने पर समझौता किए गए पैकेज संस्करणों को परोसने के लिए दुर्भावनापूर्ण इंडेक्स सर्वर स्थापित करना भी अपेक्षाकृत सरल है, यहां तक कि एक गैर-परिष्कृत हमलावर के लिए भी।