
CVE-2024-48990 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो needrestart में PYTHONPATH हेरफेर के माध्यम से स्थानीय विशेषाधिकार वृद्धि (local privilege escalation) का प्रदर्शन करता है। इसमें परीक्षण के लिए रनर स्क्रिप्ट और पेलोड बाइनरी शामिल है।
Needrestart एक Linux सिस्टम पर व्यापक रूप से उपयोग की जाने वाली उपयोगिता है (कई Ubuntu संस्करणों पर डिफ़ॉल्ट) जो सॉफ़्टवेयर अपडेट के बाद जांचती है कि किसी सेवा या सिस्टम को पुनः प्रारंभ करने की आवश्यकता है या नहीं। चल रही प्रक्रियाओं का विश्लेषण करके, यह निर्धारित करता है कि वे अपडेट की गई लाइब्रेरी का उपयोग कर रहे हैं या परिवर्तन प्रभावी होने के लिए उन्हें पुनः प्रारंभ करने की आवश्यकता है।
जब needrestart एक ऐसी प्रक्रिया का पता लगाता है जो Python इंटरप्रेटर चला रही है, तो वह /proc/[pid]/environ से उस प्रक्रिया से जुड़े PYTHONPATH पर्यावरण चर को पढ़ता है और फिर विश्लेषण के लिए अपने स्वयं के Python इंटरप्रेटर को लॉन्च करने से पहले इसे सेट करता है।
यदि मूल प्रक्रिया किसी स्थानीय हमलावर की है, तो हमलावर PYTHONPATH को एक दुर्भावनापूर्ण लाइब्रेरी की ओर इंगित करने के लिए हेरफेर कर सकता है।
परिणामस्वरूप, जब needrestart रूट विशेषाधिकारों और हेरफेर किए गए PYTHONPATH के साथ Python इंटरप्रेटर चलाता है, तो यह हमलावर के कोड को निष्पादित कर देता है, जिससे रूट तक विशेषाधिकार वृद्धि होती है।
यह भेद्यता केवल needrestart के संस्करण 3.8 से पहले के संस्करणों को प्रभावित करती है। संस्करण 3.8 और बाद के संस्करणों में एक सुधार शामिल है जो Python इंटरप्रेटर को आह्वान करने से पहले PYTHONPATH जैसे पर्यावरण चर को उचित रूप से स्वच्छ करता है, जिससे दुर्भावनापूर्ण पर्यावरण हेरफेर के माध्यम से विशेषाधिकार वृद्धि को रोका जा सकता है।
रिपॉजिटरी को क्लोन करें।
runner.sh में, संकलित बाइनरी को लाने के लिए उपयोग किए जाने वाले IP को संशोधित करें ताकि वह आपकी अपनी मशीन की ओर इंगित करे।
हमलावर की मशीन पर, निष्पादन अनुमतियाँ प्रदान करें और binary.sh चलाएँ।
एक HTTP सर्वर सेट करें:
$ python3 -m http.server
