Pentesting CI/CD Methodology
VCS
VCS का अर्थ है Version Control System, यह प्रणालियाँ डेवलपर्स को उनके सोर्स कोड का प्रबंधन करने में सक्षम बनाती हैं। सबसे आम git है और आपको आमतौर पर कंपनियों को इसका उपयोग निम्नलिखित प्लेटफॉर्म्स में करते हुए पाएंगे:
Github
Gitlab
Bitbucket
Gitea
क्लाउड प्रदाता (वे अपने स्वयं के VCS प्लेटफॉर्म्स प्रदान करते हैं)
Pipelines
Pipelines डेवलपर्स को कोड के स्वचालित निष्पादन (निर्माण, परीक्षण, तैनाती... के उद्देश्यों के लिए) कुछ क्रियाओं के बाद अनुमति देती हैं: एक पुश, एक PR, क्रॉन... वे विकास से उत्पादन तक के सभी चरणों को स्वचालित करने के लिए अत्यंत उपयोगी हैं।
हालांकि, इन प्रणालियों को कहीं न कहीं निष्पादित किया जाना चाहिए और आमतौर पर विशेषाधिकार प्राप्त क्रेडेंशियल्स के साथ कोड तैनात करने के लिए।
VCS Pentesting पद्धति
भले ही कुछ VCS प्लेटफॉर्म्स पाइपलाइन्स बनाने की अनुमति देते हैं, इस खंड के लिए हम केवल सोर्स कोड के नियंत्रण के लिए संभावित हमलों का विश्लेषण करेंगे।
आपके प्रोजेक्ट के सोर्स कोड को समाहित करने वाले प्लेटफॉर्म्स में संवेदनशील जानकारी होती है और लोगों को इस प्लेटफॉर्म के भीतर दी गई अनुमतियों के साथ बहुत सावधान रहना चाहिए। ये कुछ सामान्य समस्याएं हैं जो VCS प्लेटफॉर्म्स में होती हैं जिनका हमलावर दुरुपयोग कर सकता है:
Leaks: यदि आपके कोड में कमिट्स में लीक हैं और हमलावर रेपो तक पहुंच सकता है (क्योंकि यह सार्वजनिक है या क्योंकि उसके पास पहुंच है), तो वह लीक का पता लगा सकता है।
Access: यदि हमलावर VCS प्लेटफॉर्म के भीतर एक खाते तक पहुंच सकता है तो वह अधिक दृश्यता और अनुमतियां प्राप्त कर सकता है।
Register: कुछ प्लेटफॉर्म्स बाहरी उपयोगकर्ताओं को एक खाता बनाने की अनुमति देंगे।
SSO: कुछ प्लेटफॉर्म्स उपयोगकर्ताओं को रजिस्टर करने की अनुमति नहीं देंगे, लेकिन वैध SSO के साथ किसी को भी प्रवेश करने की अनुमति देंगे (तो एक हमलावर उदाहरण के लिए अपने github खाते का उपयोग करके प्रवेश कर सकता है)।
Credentials: Username+Pwd, व्यक्तिगत टोकन, ssh कुंजियाँ, Oauth टोकन, कुकीज़... कई प्रकार के टोकन हैं जिन्हें एक उपयोगकर्ता किसी रेपो में किसी तरह से पहुंचने के लिए चुरा सकता है।
Webhooks: VCS प्लेटफॉर्म्स वेबहुक्स उत्पन्न करने की अनुमति देते हैं। यदि वे सुरक्षित नहीं हैं गैर-दृश्यमान रहस्यों के साथ तो हमलावर उनका दुरुपयोग कर सकता है।
यदि कोई रहस्य स्थान पर नहीं है, तो हमलावर तृतीय पक्ष प्लेटफॉर्म के वेबहुक का दुरुपयोग कर सकता है
यदि रहस्य URL में है, तो वही होता है और हमलावर के पास भी रहस्य होता है
Code compromise: यदि कोई दुर्भावनापूर्ण अभिनेता किसी प्रकार की लिखित पहुंच रेपोस पर है, तो वह दुर्भावनापूर्ण कोड इंजेक्ट करने का प्रयास कर सकता है। सफल होने के लिए उसे शाखा संरक्षणों को बायपास करने की आवश्यकता हो सकती है। ये क्रियाएं विभिन्न लक्ष्यों के साथ की जा सकती हैं:
मुख्य शाखा को समझौता करने के लिए उत्पादन को समझौता करें।
मुख्य (या अन्य शाखाओं) को समझौता करने के लिए डेवलपर्स मशीनों को समझौता करें (क्योंकि वे आमतौर पर अपनी मशीनों में रेपो के अंदर परीक्षण, टेराफॉर्म या अन्य चीजें निष्पादित करते हैं)।
पाइपलाइन को समझौता करें (अगले खंड की जांच करें)
Pipelines Pentesting पद्धति
पाइपलाइन को परिभाषित करने का सबसे सामान्य तरीका, पाइपलाइन निर्माण करने वाले रेपोजिटरी में होस्ट की गई CI कॉन्फ़िगरेशन फ़ाइल का उपयोग करना है। यह फ़ाइल निष्पादित जॉब्स के क्रम, प्रवाह को प्रभावित करने वाली शर्तों, और निर्माण वातावरण सेटिंग्स का वर्णन करती है। ये फ़ाइलें आमतौर पर एक सुसंगत नाम और प्रारूप होती हैं, उदाहरण के लिए - Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI), और GitHub Actions YAML फ़ाइलें जो .github/workflows के तहत स्थित होती हैं। जब ट्रिगर किया जाता है, पाइपलाइन जॉब कोड को पुल करता है चयनित स्रोत से (जैसे कमिट / शाखा), और CI कॉन्फ़िगरेशन फ़ाइल में निर्दिष्ट आदेशों को उस कोड के खिलाफ चलाता है।
इसलिए हमलावर का अंतिम लक्ष्य किसी तरह से उन कॉन्फ़िगरेशन फ़ाइलों को समझौता करना या उनके द्वारा निष्पादित आदेशों को समझौता करना है।
PPE - Poisoned Pipeline Execution
Poisoned Pipeline Execution (PPE) पथ SCM रेपोजिटरी में अनुमतियों का शोषण करता है ताकि CI पाइपलाइन को हेरफेर कर सके और हानिकारक आदेशों को निष्पादित कर सके। आवश्यक अनुमतियों वाले उपयो
Last updated