
CVE-2024-21542 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, Luigi पाइपलाइन प्रबंधक में Zip Slip के माध्यम से मनमाना फ़ाइल लेखन का प्रदर्शन। निष्कर्षण निर्देशिका के बाहर फ़ाइलों को अधिलेखित करने के लिए दुर्भावनापूर्ण संग्रह उत्पन्न करता है।
luigi एक पैकेज है जो आपको बैच जॉब्स के जटिल पाइपलाइन बनाने में मदद करता है। यह निर्भरता समाधान, वर्कफ़्लो प्रबंधन, विज़ुअलाइज़ेशन, विफलताओं को संभालना, कमांड लाइन एकीकरण और बहुत कुछ संभालता है।
इस पैकेज के प्रभावित संस्करण _extract_packages_archive फ़ंक्शन में गंतव्य फ़ाइल पथ के अनुचित सत्यापन के कारण आर्काइव निष्कर्षण (Zip Slip) के माध्यम से Arbitrary File Write भेद्यता से ग्रस्त हैं।
इसका शोषण एक विशेष रूप से तैयार किए गए zip आर्काइव का उपयोग करके किया जाता है, जिसमें पाथ ट्रैवर्सल फ़ाइलनाम होते हैं। जब शोषण होता है, तो दुर्भावनापूर्ण आर्काइव में एक फ़ाइलनाम को लक्ष्य निष्कर्षण निर्देशिका में जोड़ दिया जाता है, जिसके परिणामस्वरूप अंतिम पथ लक्ष्य फ़ोल्डर के बाहर समाप्त हो जाता है। उदाहरण के लिए, एक zip में "../../file.exe" स्थान वाली फ़ाइल हो सकती है और इस प्रकार लक्ष्य फ़ोल्डर से बाहर निकल सकती है। यदि किसी निष्पादन योग्य या कॉन्फ़िगरेशन फ़ाइल को दुर्भावनापूर्ण कोड वाली फ़ाइल से अधिलेखित किया जाता है, तो समस्या आसानी से Arbitrary Code Execution में बदल सकती है।
निम्नलिखित एक zip आर्काइव का उदाहरण है जिसमें एक हानिरहित फ़ाइल और एक दुर्भावनापूर्ण फ़ाइल है। दुर्भावनापूर्ण फ़ाइल निकालने पर लक्ष्य फ़ोल्डर से बाहर ट्रैवर्स होगा, और /root/.ssh/ में समाप्त होकर authorized_keys फ़ाइल को अधिलेखित कर देगा:
+2018-04-15 22:04:29 ..... 19 19 good.txt
+2018-04-15 22:04:42 ..... 20 20 ../../../../../../root/.ssh/authorized_keys
दुर्भावनापूर्ण packages.tar बनाएं
python3 xpl.py
इसे luigi/contrib/lsf_runner.py के लिए तर्क के रूप में पास करें
अपने /tmp/fodac की जाँच करें :)