
Baron Samedit Vulnerability का दृश्यीकरण, Fuzzing, शोषण और पैच
बैरोन समेदिट भेद्यता का विज़ुअलाइज़ेशन, फ़ज़िंग, शोषण और पैच
रिपोर्ट देखें »
फ्रांसेस्को मार्चियोरी
·
एलेसेंड्रो लोट्टो
किसी भी यूनिक्स-आधारित ऑपरेटिंग सिस्टम में sudo कमांड होता है जो उन उपयोगकर्ताओं के लिए अस्थायी रूट विशेषाधिकार वृद्धि की अनुमति देता है जिनसे ऐसा करने की अपेक्षा की जाती है। sudo एक महत्वपूर्ण कार्यक्षमता प्रदान करता है जिसका दुरुपयोग होने पर सिस्टम की सुरक्षा और विश्वसनीयता से समझौता हो सकता है। ऑपरेटिंग सिस्टम में इसके महत्व के कारण, sudo का स्रोत कोड बार-बार परीक्षण और कोड समीक्षाओं के अधीन है। इनसे एक हीप-आधारित ओवरफ़्लो भेद्यता का पता चला है, जिसे CVE-2021-3156 नाम दिया गया है, जो आश्चर्यजनक रूप से लगभग 10 वर्षों तक छिपी रही। पहले इसका पता लगाने में फ़ज़िंग तकनीकें, जो बग और भेद्यता खोज के लिए सबसे अधिक उपयोग की जाने वाली तकनीकों में से एक हैं, भी विफल रहीं। इस पेपर में, हम CVE-2021-3156 sudo भेद्यता का विस्तार से विश्लेषण करते हैं, बफ़र ओवरफ़्लो भेद्यता से लेकर यह कैसे शोषित किया जा सकता है ताकि एक गैर-विशेषाधिकार प्राप्त उपयोगकर्ता होने पर भी या sudo कमांड का उपयोग करने की अनुमति न होने पर भी रूट शेल प्राप्त किया जा सके।
Visualization निर्देशिका में कुछ स्क्रिप्ट हैं जिनका उपयोग हमने यह देखने के लिए किया कि बैकस्लैश वर्णों के साथ या बिना तर्क कैसे पार्स किए जाते हैं और यह विश्लेषण करने के लिए कि पर्यावरण चर हीप लेआउट को कैसे प्रभावित करते हैं, ताकि प्रस्तावित शोषण की संरचना को और समझा जा सके।
Fuzzing निर्देशिका में sudo के भेद्य संस्करण पर फ़ज़िंग करने के लिए आवश्यक फ़ाइलें हैं। यह भी बताया गया है कि फ़ज़ कैसे किया जाए और उन समस्याओं को कैसे हल किया जाए जो AFL को बॉक्स से बाहर काम करने से रोकती हैं, इस प्रकार यह समझाया गया है कि भेद्यता लगभग 10 वर्षों तक कैसे छिपी रही।
Exploit निर्देशिका में sudo के किसी अन्य भेद्य संस्करण पर हमले को अंजाम देने के लिए आवश्यक फ़ाइलें हैं। हम हीप फेंग शुई करने और service_user ऑब्जेक्ट का नाम ओवरराइट करने के लिए पर्यावरण चर के माध्यम से मेमोरी आबादी का शोषण करते हैं, ताकि लाइब्रेरी लोड करने के बजाय अपना स्वयं का कोड निष्पादित किया जा सके।
Patch निर्देशिका में एक overflow_simulation_patch.c स्क्रिप्ट है जो ओवरफ़्लो के व्यवहार का अनुकरण करती है और हमारे द्वारा लिखे गए अतिरिक्त कोड के साथ इसे पैच करती है। चूंकि Sudo प्रोजेक्ट के डेवलपर्स ने कोड के बजाय भेद्यता प्रवाह को ठीक करने का निर्णय लिया, इसलिए हम एक अलग दृष्टिकोण दिखाते हैं और यह कैसे कोड की कुछ पंक्तियों के साथ ठीक किया जा सकता है।