
Educational demo of CVE-2024-21626 runc कंटेनर एस्केप का शैक्षिक डेमो, जिसमें शोषण प्रयासों के लिए eBPF-आधारित डिटेक्शन गैजेट शामिल है।
इस रिपॉजिटरी में CVE-2024-21626 के प्रति संवेदनशील ऐप के कोड उदाहरण और शोषण प्रयासों का पता लगाने के लिए एक eBPF गैजेट शामिल है।
यह रिपॉजिटरी इस ब्लॉग पोस्ट के भाग के रूप में बनाई गई थी।
इस भेद्यता का पता लगाने के लिए उपयोग किया जाने वाला गैजेट प्रोग्राम केवल प्रदर्शन उद्देश्यों के लिए है। यह CVE-2024-21626 का पूर्ण पता लगाना नहीं है।
CVE-2024-21626, runc कंटेनर रनटाइम में एक भेद्यता है, जो v1.1.12 से पहले के संस्करणों में मौजूद है। यह इस तथ्य पर निर्भर करता है कि runc कंटेनर के अंदर कमांड बनाते या निष्पादित करते समय एक "लीक" फ़ाइल डिस्क्रिप्टर को समय पर बंद नहीं करता है, जिससे कंटेनर उस फ़ाइल डिस्क्रिप्टर को प्राप्त कर लेता है और होस्ट फाइलसिस्टम तक पहुंच प्राप्त कर लेता है।
इस भेद्यता का शोषण करने के कई तरीके हैं। यह रिपॉजिटरी बताती है कि रनटाइम पर इस भेद्यता का शोषण कैसे किया जा सकता है।
आप इसके बारे में और अधिक यहाँ पढ़ सकते हैं।
इस डेमो को काम करने के लिए, आपको यह सुनिश्चित करना होगा कि आपकी मशीन runc संस्करण <= 1.1.11 चला रही हो।
leaky-app एक Go ऐप है जो संभावित रूप से लीक हुए फ़ाइल डिस्क्रिप्टर के लिए एक सिमलिंक बनाता है। डॉकर इमेज बनाने के लिए:
make leaky-app
eBPF गैजेट बनाने के लिए, आपको [ig] टूल की आवश्यकता होगी।
आप गैजेट निम्नलिखित का उपयोग करके बना सकते हैं:
make gadget
एक बार दोनों बन जाने के बाद, गैजेट निम्नलिखित का उपयोग करके चलाएं:
IG_EXPERIMENTAL=true sudo -E ig run trace-symlink:latest
एक और शेल खोलें और leaky-app कंटेनर शुरू करें:
docker run --rm --name leaky-app leaky-app
आपको गैजेट द्वारा उस कंटेनर को आउटपुट करते देखना चाहिए जिसने सिमलिंक सिस्टम कॉल को कॉल किया था।
इस रिपॉजिटरी में CVE-2024-21626 का पता लगाने को प्रदर्शित करने के लिए डिज़ाइन किया गया एक प्रदर्शन एप्लिकेशन शामिल है। यह ध्यान रखना महत्वपूर्ण है कि यह प्रदर्शन केवल शैक्षिक उद्देश्यों के लिए है और इसे व्यावहारिक पहचान उपकरण नहीं माना जाना चाहिए। इस डेमो में लागू की गई पहचान तंत्र सभी परिदृश्यों को कवर नहीं करते हैं या इस भेद्यता का पता लगाने की जटिलताओं को सटीक रूप से प्रस्तुत नहीं करते हैं।