Docker release_agent cgroups escape
अधिक विवरण के लिए, मूल ब्लॉग पोस्ट का संदर्भ दें। यह केवल एक सारांश है:
प्रमाण संदर्भ (PoC) एक विधि का प्रदर्शन करता है जिससे cgroups का शोषण किया जा सकता है एक release_agent
फ़ाइल बनाकर और इसके आह्वान को ट्रिगर करके कंटेनर होस्ट पर विभिन्न कमांड्स को निषेधित करने के लिए कार्यवाही की जा सकती है। यहाँ दी गई है इस प्रक्रिया के चरणों का विवरण:
पर्यावरण की तैयारी:
/tmp/cgrp
नामक एक निर्देशिका बनाई जाती है जो cgroup के लिए माउंट पॉइंट के रूप में काम करती है।RDMA cgroup नियंत्रक को इस निर्देशिका पर माउंट किया जाता है। RDMA नियंत्रक की अनुपस्थिति के मामले में, एक वैकल्पिक रूप में
memory
cgroup नियंत्रक का उपयोग करने की सिफारिश की जाती है।
बच्चा सीग्रुप सेट अप करें:
माउंट किए गए सीग्रुप निर्देशिका के भीतर "x" नाम का एक बच्चा सीग्रुप बनाया जाता है।
"x" सीग्रुप के लिए सूचनाएं सक्षम की जाती है जिसके लिए उसके notify_on_release फ़ाइल में 1 लिखकर।
रिलीज एजेंट कॉन्फ़िगर करें:
मेज़बान पर कंटेनर का पथ /etc/mtab फ़ाइल से प्राप्त किया जाता है।
फिर cgroup का release_agent फ़ाइल कॉन्फ़िगर किया जाता है ताकि एक स्क्रिप्ट जिसका नाम /cmd है जो प्राप्त होस्ट पथ पर स्थित है, को निष्पादित करें।
/cmd स्क्रिप्ट बनाएं और कॉन्फ़िगर करें:
/cmd स्क्रिप्ट कंटेनर के अंदर बनाया जाता है और इसे कॉन्फ़िगर किया जाता है कि ps aux को execute करें, जिसका आउटपुट फ़ाइल /output में रीडायरेक्ट किया जाए, जो कंटेनर में होती है। होस्ट पर /output का पूरा पथ निर्दिष्ट किया जाता है।
हमला ट्रिगर करें:
एक प्रक्रिया "x" बाल cgroup के अंदर प्रारंभ की जाती है और तुरंत समाप्त हो जाती है।
इससे
release_agent
(/cmd स्क्रिप्ट) को ट्रिगर होता है, जो मेज़बान पर ps aux का निष्पादन करता है और आउटपुट को कंटेनर के अंदर /output में लिखता है।
Last updated