
CVE-2024-32002 के लिए प्रूफ ऑफ कॉन्सेप्ट: Git सबमॉड्यूल पथ इंजेक्शन भेद्यता।
हैक द बॉक्स प्लेटफॉर्म की Compiled मशीन को हल करने के दौरान, मुझे गिट और उप-मॉड्यूल से संबंधित एक उत्सुक व्यवहार का सामना करना पड़ा। गहराई से जांच करने पर, मुझे शोधकर्ता अमल मुरली का यह उत्कृष्ट पोस्ट मिला, जो .gitmodules के माध्यम से पथ इंजेक्शन की एक तकनीक का विवरण देता है। इससे, मैंने CVE-2024-32002 का अध्ययन करने और एक व्यावहारिक PoC बनाने का निर्णय लिया जो भेद्यता के वास्तविक प्रभाव को प्रदर्शित करे।
CVE-2024-32002 गिट में उप-मॉड्यूल पथों के समाधान से संबंधित एक गंभीर दोष का शोषण करता है। गिट रिपॉजिटरी को .gitmodules फ़ाइल में परिभाषित उप-मॉड्यूल शामिल करने की अनुमति देता है, जिसमें पथ और URL निर्दिष्ट होते हैं। भेद्यता तब उत्पन्न होती है जब पथ को .git निर्देशिका के अंदर इंगित करने के लिए हेरफेर किया जाता है, जो रिपॉजिटरी के आंतरिक मेटाडेटा और कॉन्फ़िगरेशन को संग्रहीत करता है।
Ao combinar:
.gitmodules का हेरफेर पथ को के रूप में सेट करने के लिएA/modules/xa → .git का निर्माण…गिट धोखा खा जाता है और A/modules/x को .git/modules/x के रूप में हल करता है, यानी आंतरिक .git निर्देशिका के अंदर। यह एक हमलावर को दुर्भावनापूर्ण हुक के रूप में मनमानी फ़ाइलों को इंजेक्ट करने की अनुमति देता है जो checkout, merge या clone जैसे वैध संचालन में निष्पादित हो सकते हैं।
यह भेद्यता दूरस्थ कोड निष्पादन का एक वेक्टर प्रस्तुत करती है, विशेष रूप से CI/CD वातावरण, ऑटोमेशन या साझा रिपॉजिटरी में खतरनाक।
setup.sh क्या प्रदर्शित करती हैयह स्क्रिप्ट एक कमजोर वातावरण के निर्माण को स्वचालित करती है और दोष के प्रभाव को पुनरुत्पादित करती है:
hook-repo) बनाता है जिसमें एक post-checkout हुक होता है जो /tmp/teste.txt में लिखता हैmain-repo) को आरंभ करता है और उप-मॉड्यूल जोड़ता है.gitmodules फ़ाइल को संशोधित करता है उप-मॉड्यूल के पथ को A/modules/x पर रीडायरेक्ट करने के लिएa → .git बनाता है, जिससे A/modules/x को .git/modules/x के रूप में हल किया जाता है.gitmodules को इंडेक्स में इंजेक्ट करता है git update-index --index-info का उपयोग करकेcloned-repo) को --recursive के साथ क्लोन करता है, उप-मॉड्यूल को आरंभ करते हुए.git/hooks/ में कॉपी करता है और एक्सप्लॉइट को ट्रिगर करने के लिए git checkout HEAD चलाता हैयदि सफल होता है, तो हुक निष्पादित होता है और /tmp/teste.txt फ़ाइल निम्नलिखित सामग्री के साथ बनाई जाती है:
joao was here
इस रिपॉजिटरी में एक Dockerfile शामिल है जो:
docker build -t git-cve-poc .
docker run --rm -it git-cve-poc
यह भेद्यता गिट के 2.45.1 से पहले के संस्करणों को प्रभावित करती है। उप-मॉड्यूल पथ समाधान में कठोर सत्यापन के साथ दोष को ठीक किया गया था। उप-मॉड्यूल का उपयोग करने वाले रिपॉजिटरी का ऑडिट किया जाना चाहिए, और स्वचालित वातावरण को तुरंत अपडेट किया जाना चाहिए।
यह परियोजना केवल शैक्षिक और अनुसंधान उद्देश्यों के लिए है। उत्पादन वातावरण में उपयोग न करें। उद्देश्य भेद्यता के तकनीकी प्रभाव को प्रदर्शित करना और सुरक्षा की अच्छी प्रथाओं को बढ़ावा देना है।