CVE-2025-9074 (शैक्षिक PoC・प्रूफ-ऑफ-कॉन्सेप्ट कोड)
यह रिपॉजिटरी एक PoC शामिल करता है जो शैक्षिक उद्देश्यों के लिए Docker Engine के अनऑथेंटिकेटेड रिमोट API का दुरुपयोग करके होस्ट फ़ाइल सिस्टम पर पढ़ने-लिखने योग्य विशेषाधिकार प्राप्त कंटेनर बनाने के जोखिम को प्रदर्शित करता है।
निष्पादन योग्य फ़ाइल poc.go है।
महत्वपूर्ण: इस PoC का उपयोग केवल शैक्षिक और रक्षा उद्देश्यों के लिए करें। तीसरे पक्ष के वातावरण या अनधिकृत सिस्टम पर निष्पादन निषिद्ध है।
जोखिम मूल्यांकन
- समग्र मूल्यांकन: क्रिटिकल
- अनुमानित CVSS v3.1 बेस स्कोर: 9.8 (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)
- आधार:
- अनऑथेंटिकेटेड TCP/2375 तक पहुंच संभव → PR:N, UI:N, AV:N
- विशेषाधिकार प्राप्त कंटेनर + होस्ट बाइंड माउंट के कारण स्कोप परिवर्तन और गोपनीयता/अखंडता/उपलब्धता पर उच्च प्रभाव → S:C, C/I/A:H
- हमले की प्रक्रिया Docker Engine API पर कुछ HTTP अनुरोधों के साथ पूरी होती है → AC:L
- प्रभाव का दायरा:
- संपूर्ण होस्ट OS, अन्य कंटेनर, एक ही नेटवर्क पर संपत्तियां (क्रेडेंशियल चोरी और पार्श्व आंदोलन सहित)
- निष्पादन अनुमतियाँ:
- अनऑथेंटिकेटेड (PR:N)। कोई प्रशासकीय विशेषाधिकार आवश्यक नहीं
पृष्ठभूमि
- Docker Engine एक रिमोट API प्रदान करता है, जिसे
/version, /info, /containers/create आदि एंडपॉइंट के माध्यम से संचालित किया जा सकता है।
- यदि कंटेनर बाहर से पहुंच योग्य है, तो कुछ मामलों में बिना प्रमाणीकरण के कंटेनर बनाना, विशेषाधिकार प्रदान करना, और होस्ट निर्देशिकाओं को बाइंड माउंट करना संभव हो सकता है।
- Windows + Docker Desktop वातावरण में,
/run/desktop/mnt/host/<drive> और /host_mnt/<drive> के माध्यम से Windows होस्ट ड्राइव तक पहुंचने के लिए माउंट पथ मौजूद हैं। यह PoC होस्ट पर फ़ाइल निर्माण के माध्यम से प्रभाव को दृश्यमान बनाने के लिए उन पथों का उपयोग करता है।
संचालन सारांश
poc.go निम्नलिखित करता है:
http://192.168.65.7:2375 पर Docker Engine API को कॉल करता है और कनेक्टिविटी जांच (/version) करता है
- उपलब्ध इमेजों की सूची (
/images/json) की जांच करता है, और यदि कोई नहीं है तो alpine:latest को खींचने का प्रयास करता है
- एक विशेषाधिकार प्राप्त कंटेनर बनाता है और होस्ट ड्राइव (उदा. C:, N:) को
/host_root पर बाइंड माउंट करता है
- कंटेनर के अंदर से
/host_root के तहत सीधे एक सत्यापन फ़ाइल (उदा. cve_2025_9074_poc.txt) लिखता है, प्रभाव को दृश्यमान बनाता है
- निष्पादन के बाद कंटेनर को हटा देता है
जोखिम (अनुमानित दुरुपयोग)
- होस्ट फ़ाइल सिस्टम का पढ़ना और लिखना (Docker Engine निष्पादन अनुमति के दायरे में)
- संवेदनशील जानकारी (पासवर्ड, SSH कुंजी आदि) की चोरी
- सिस्टम कॉन्फ़िगरेशन फ़ाइलों में छेड़छाड़
- मैलवेयर स्थापित करना और बने रहना
- अन्य कंटेनरों और नेटवर्क में पार्श्व आंदोलन
- विशेषाधिकार वृद्धि
आवश्यक शर्तें
- Go 1.20+ (लगभग) (
go run के साथ काम करता है)
- (कमजोर) Docker Desktop/Engine चल रहा हो
- इस कोड को (कमजोर) Docker Desktop/Engine पर चलने वाले Docker कंटेनर के अंदर निष्पादित किया जाना चाहिए
- Docker Engine API
http://192.168.65.7:2375 पर प्रतिक्रिया दे रहा हो (PoC का डिफ़ॉल्ट)
उपयोग
-
रिपॉजिटरी प्राप्त करें
git clone <this-repo>
cd cve-2025-9074
-
PoC निष्पादित करें
-
आउटपुट उदाहरण
/version पर सफल कनेक्टिविटी प्रदर्शन
- उपयोग की जाने वाली इमेज का पता लगाना या
alpine:latest को खींचना
- विशेषाधिकार प्राप्त कंटेनर निर्माण, होस्ट पर फ़ाइल निर्माण परिणाम
/info के आधार पर सिस्टम जानकारी का अंश प्रदर्शन
-
प्रदर्शन के लिए curl उदाहरण (स्क्रीन पर आउटपुट होता है)
/containers/create के लिए JSON उदाहरण, /containers/{id}/start का स्टार्ट उदाहरण
सेटिंग्स का अनुकूलन
attemptHostWrite के अंदर उम्मीदवार सरणी (/run/desktop/mnt/host/<drive>, /host_mnt/<drive>, C:/ आदि) को पर्यावरण के अनुसार समायोजित किया जा सकता है।
- उपयोग की जाने वाली इमेज
- मौजूदा इमेज को प्राथमिकता दें। यदि कोई नहीं है तो
alpine:latest को स्वचालित रूप से खींचें।
सत्यापन पर्यावरण नोट्स
- इसमें Windows + Docker Desktop पर व्यवहार मानते हुए माउंट पथों के उदाहरण शामिल हैं।
- macOS के मामले में, होस्ट पथ भिन्न होते हैं, इसलिए तदनुसार संशोधन आवश्यक है।
- Docker Desktop के संस्करण और सेटिंग्स के आधार पर, PoC काम नहीं कर सकता है (= सुरक्षित)।
अस्वीकरण
- यह रिपॉजिटरी केवल अनुसंधान और शैक्षिक उद्देश्यों के लिए है। यह हमला, घुसपैठ या विनाशकारी गतिविधियों को प्रोत्साहित नहीं करता है।
- इस PoC के उपयोग से होने वाली किसी भी क्षति के लिए लेखक जिम्मेदार नहीं है।
- इसे केवल पृथक वातावरण में चलाएं जहां आपके पास वैध प्रबंधन अधिकार हों, अन्यथा न चलाएं।
लाइसेंस