
OpenPLC-v3 में एक पाथ इंजेक्शन भेद्यता है, जो कमांड लाइन से पारित फ़ाइल पथ मापदंडों पर किसी भी वैधता जांच को निष्पादित नहीं करने के कारण उत्पन्न होती है। हमलावर दुर्भावनापूर्ण पथ बनाकर किसी भी पठनीय फ़ाइल को पढ़ सकते हैं, जिससे सूचना रिसाव का जोखिम होता है।
OpenPLC-v3 में एक पथ इंजेक्शन भेद्यता है, जो प्रोग्राम द्वारा कमांड लाइन से पास किए गए फ़ाइल पथ मापदंडों पर कोई वैधता जाँच न करने से उत्पन्न होती है। हमलावर दुर्भावनापूर्ण पथ बनाकर किसी भी पढ़ने योग्य फ़ाइल को पढ़ सकते हैं, जिससे सूचना लीक होने का जोखिम होता है।
अनुचित इनपुट सत्यापन (पथ इंजेक्शन)
सूचना प्रकटीकरण (मनमाना फ़ाइल पठन)
glue_generator.cpp से संकलित बाइनरी प्रोग्राम में उपयोगकर्ता द्वारा प्रदान किए गए फ़ाइल पथों के अपर्याप्त सत्यापन के कारण एक मनमाना फ़ाइल पढ़ने की भेद्यता मौजूद है।
एक हमलावर प्रोग्राम निष्पादित करते समय इनपुट तर्क के रूप में एक मनमाना फ़ाइल (जैसे /etc/passwd) निर्दिष्ट कर सकता है। एप्लिकेशन बाद में फ़ाइल को पंक्ति दर पंक्ति पढ़ता है, सामग्री को पार्स करता है, और निम्न पर कोई सत्यापन किए बिना पार्स किए गए डेटा को सीधे cout का उपयोग करके कंसोल पर प्रिंट करता है:
परिणामस्वरूप, हमलावर चल रही प्रक्रिया के विशेषाधिकार संदर्भ में सुलभ किसी भी फ़ाइल को पढ़ सकते हैं, जिससे संवेदनशील जानकारी का प्रकटीकरण होता है।
1.हमलावर भेद्य बाइनरी को निष्पादित करने में सक्षम है।
2.चल रहे उपयोगकर्ता खाते के पास लक्ष्य फ़ाइल के लिए पढ़ने की अनुमति है।
सफल शोषण से संवेदनशील सिस्टम जानकारी का प्रकटीकरण हो सकता है, जिसमें शामिल हैं लेकिन यहीं तक सीमित नहीं:
यह जानकारी आगे विशेषाधिकार वृद्धि या पार्श्व आंदोलन की सुविधा प्रदान कर सकती है।
glue_generator.cpp में, प्रोग्राम दो स्ट्रिंग सरणियों, varName और varType का उपयोग करता है, पार्स की गई फ़ाइल सामग्री को संसाधित करने और कमांड लाइन पर प्रिंट करने के लिए।
पार्सिंग के दौरान, प्रोग्राम एक विशिष्ट पंक्ति प्रारूप की अपेक्षा करता है:
(<varType>,<varName>,
विशेष रूप से:
( और पहले , के बीच की सामग्री varType को सौंपी जाती है;
पहले और दूसरे , के बीच की सामग्री varName को सौंपी जाती है।
स्रोत फ़ाइल पथ या पार्स किए गए डेटा की वैधता पर कोई सत्यापन नहीं किया जाता है।
चरण 1: एक परीक्षण फ़ाइल बनाएँ
निम्नलिखित सामग्री के साथ test.txt नामक एक फ़ाइल बनाएँ:
(aaaaaaaa,123,
चरण 2: भेद्य प्रोग्राम निष्पादित करें
निम्नलिखित कमांड चलाएँ:
./glue_generator ./test.txt whatever.cpp
प्रोग्राम सामग्री को पार्स करेगा और निकाले गए मानों को कंसोल पर प्रिंट करेगा।
चरण 3: मनमाना फ़ाइल पठन
यदि कोई हमलावर किसी संवेदनशील फ़ाइल (उदाहरण के लिए /etc/passwd) को संशोधित या नियंत्रित कर सकता है ताकि उसमें आवश्यक प्रारूप से मेल खाने वाला डेटा शामिल हो:
(aaaaaaaa,123,
भेद्य प्रोग्राम फ़ाइल से संबंधित सामग्री को पार्स और प्रिंट करेगा।
संवेदनशील फ़ाइलों के लिए, निम्नलिखित पैटर्न से मेल खाने वाली कोई भी पंक्ति प्रकट हो सकती है:
(<content1>,<content2>,
लीक हुई जानकारी की मात्रा इस पर निर्भर करती है:
भेद्यता निम्न के कारण होती है:
1.उपयोगकर्ता-नियंत्रित फ़ाइल पथों के लिए सत्यापन का अभाव।
2.मनमानी फ़ाइलों पर लागू असुरक्षित पार्सिंग तर्क।
3.प्राधिकरण जाँच के बिना पार्स की गई सामग्री का सीधा कंसोल आउटपुट।
4.सुलभ फ़ाइल स्थानों पर प्रतिबंधों की अनुपस्थिति।
भेद्यता को कम करने के लिए: