
CVE-2017-1002101 का लेख, नमूना "exploit"/escape के साथ
इस मुद्दे के बारे में सुनने और इस गाइड का पालन करने के बाद, मैं और अधिक अन्वेषण करना चाहता था। इस रिपॉजिटरी में कुछ पॉड डिप्लॉयमेंट और हेल्पर शेल स्क्रिप्ट शामिल हैं जो हमले के तंत्र को सबसे सरल तरीके से प्रदर्शित करती हैं ताकि कुबरनेट्स प्रशासक और ऑपरेटर गंभीरता और संभावित जोखिमों को पूरी तरह से समझ सकें। आपको एक प्रमाणित उपयोगकर्ता होना चाहिए या निर्माण के समय पॉड के spec/template को नियंत्रित करने में सक्षम होना चाहिए, इसलिए यह बचाव संभवतः अनाम नहीं होगा जब तक कि इसे इस जैसे अन्य हमलों के साथ संयोजित न किया जाए।
जब Kubelet किसी volume/secret/configmap आदि को माउंट करने जाता है, तो यह गलत तरीके से वॉल्यूम के अंदर symlinks का अनुसरण करके उन स्थानों पर जाता है जहाँ उसे नहीं जाना चाहिए। चूंकि Kubelet रूट के रूप में चल रहा है, इसका मतलब है कि इसे एक गैर-विशेषाधिकार प्राप्त पॉड के कंटेनर के अंदर होस्ट फाइलसिस्टम के विशेषाधिकार प्राप्त भागों को माउंट करने के लिए धोखा दिया जा सकता है।
मेरा दृष्टिकोण दो 'सामान्य' कंटेनरों वाले एक एकल पॉड का उपयोग करना था। एक कंटेनर / या /home/ubuntu पर symlink बनाता है और दूसरा तब तक crashloop करता है जब तक कि वह सफल नहीं हो जाता (वॉल्यूम को पुनः माउंट करने और उस symlink पथ का अनुसरण करने के लिए मजबूर करता है), जिससे उपयोगकर्ता दूसरे कंटेनर में exec कर सकता है और माउंट पॉइंट तक पहुँच सकता है।
नोट: ये उदाहरण बिना किसी संशोधन के Ubuntu 16.04 होस्ट पर काम करते हैं, लेकिन इन्हें अन्य सेटअपों के लिए आसानी से समायोजित किया जा सकता है।
./run-as-root.sh चलाएँ।./run-as-root-no-chroot.sh या ./run-as-user-1000.sh चलाएँ।यह वास्तव में 'पैच करना अनिवार्य' स्थिति है। दुर्भाग्य से, यहाँ सूचीबद्ध वर्कअराउंड अधिकांश लोगों के लिए व्यावहारिक नहीं हैं। लगभग सभी पिछले संस्करण असुरक्षित हैं।