
CVE-2021-25741 Kubernetes भेद्यता के लिए एक्सप्लॉइट जो रेस कंडीशन के माध्यम से होस्ट फाइलसिस्टम को पॉड्स में माउंट करने की अनुमति देता है, साथ में डिप्लॉयमेंट स्क्रिप्ट्स और तकनीकी विवरण।
यह CVE-2021-25741 भेद्यता के लिए एक एक्सप्लॉइट है। यह भेद्यता Node फाइलसिस्टम को रीड-राइट विशेषाधिकारों के साथ नए POD के अंदर माउंट करने की अनुमति देती है।
आप इस भेद्यता के बारे में यहाँ अधिक पढ़ सकते हैं:
https://security.googleblog.com/2021/12/exploring-container-security-storage.html
मैं इस भेद्यता का लेखक नहीं हूँ और मैंने केवल एक एक्सप्लॉइट बनाया है।
एक्सप्लॉइट के विकास में मदद के लिए @russtone और @maximusfox को धन्यवाद।
kubelet के भेद्य संस्करण:
बस run.sh चलाएँ और प्रतीक्षा करें :) एक्सप्लॉइटिंग में कुछ समय लगेगा (मेरे लिए यह 10-20 मिनट था) क्योंकि यह रेस कंडीशन पर आधारित है।
chmod +x run.sh; ./run.sh

जब आपको "Success" संदेश मिले तो आप POD से अटैच हो सकते हैं और /mnt/data निर्देशिका में Node फाइलसिस्टम पा सकते हैं।
अटैच करने के लिए आप अगला कमांड उपयोग कर सकते हैं:
kubectl exec -i -t cve202125741 -c mount-container -- /bin/sh

एक्सप्लॉइट के 2 भाग हैं:
भेद्यता का शोषण करने वाले pod कॉन्फ़िगरेशन के साथ YAML फ़ाइल। रेस कंडीशन के कारण यह हर बार काम नहीं करता है, इसलिए आपको इसे लूप में करना चाहिए।
स्क्रिप्ट जो pod.yaml को डिप्लॉय करती है, परिणाम जाँचती है और यदि आवश्यक हो तो इसे फिर से डिप्लॉय करती है।
RENAME_EXCHANGE विकल्प के साथ renameat2 बाइनरी के रूप में मैंने यह कोड उपयोग किया: https://gist.github.com/eatnumber1/f97ac7dad7b1f5a9721f
आप इसे स्वयं कंपाइल कर सकते हैं और चाहें तो pod.yaml में बदल सकते हैं:
gcc renameat2.c -o renameat2
base64 renameat2
समाधान:
समाधान: