सॉफ़्टवेयर आपूर्ति श्रृंखला सुरक्षा जोखिमों को कम करने में अक्सर सुरक्षा की कई परतों और विभिन्न रणनीतियों को लागू करना शामिल होता है। लेकिन आपके सॉफ़्टवेयर को सुरक्षित रखने के सबसे कुशल तरीकों में से एक आपके सॉफ़्टवेयर एप्लिकेशन के विकास चरण के दौरान संभावित सुरक्षा कमजोरियों को संबोधित करना है। यह अक्सर एक चुनौती है क्योंकि केवल कुछ सॉफ्टवेयर विकास जीवन चक्र मॉडल ही सॉफ्टवेयर सुरक्षा के मुद्दों को स्पष्ट रूप से संबोधित करते हैं। अपने सॉफ़्टवेयर को सुरक्षित रखने के लिए, आप जिस भी सॉफ़्टवेयर विकास जीवनचक्र मॉडल का उपयोग करना चुनते हैं, उसके लिए आपको सुरक्षित सॉफ़्टवेयर विकास प्रथाओं को अपनाने की आवश्यकता होगी।
सिक्योर सॉफ्टवेयर डेवलपमेंट फ्रेमवर्क (एसएसडीएफ) कुछ बुनियादी प्रथाओं की रूपरेखा तैयार करता है जिनका आपको आपके द्वारा बनाए जा रहे सॉफ्टवेयर की सुरक्षा सुनिश्चित करने के लिए पालन करना चाहिए। एसएसडीएफ राष्ट्रीय मानक और प्रौद्योगिकी संस्थान (एनआईएसटी) द्वारा स्थापित मानक सॉफ्टवेयर विकास सुरक्षा प्रथाओं पर आधारित है और सॉफ्टवेयर विकास में सुरक्षा मुद्दों को स्पष्ट रूप से संबोधित करता है। एसएसडीएफ संस्करण 1.1 को इसमें परिभाषित किया गया है एनआईएसटी एसपी 800-218 प्रकाशन। फ्रेमवर्क को शुरुआत में सितंबर 2021 में एक के रूप में प्रकाशित किया गया था मसौदा संस्करण। 22 मार्च, 2021 को, NIST ने SSDF 1.1 का अंतिम संस्करण जारी किया। सभी उच्च-स्तरीय प्रथाएँ और कार्य समान रहे, जिनमें बहुत सारे अंतर दिए गए विभिन्न उदाहरणों पर केंद्रित थे। यह तय करने में कि किन प्रथाओं को लागू करना है, एनआईएसटी लागत, व्यवहार्यता और प्रयोज्यता के विरुद्ध जोखिम को संतुलित करने की सिफारिश करता है। सॉफ़्टवेयर सुरक्षा को बढ़ावा देने के लिए यथासंभव अधिक से अधिक जाँचों और प्रक्रियाओं को स्वचालित करना विचार करने योग्य एक प्रमुख विशेषता है।
सॉफ़्टवेयर विकास जीवन चक्र मॉडल के साथ काम करने वाले एक संगठन के रूप में, आपको अपने सॉफ़्टवेयर को सॉफ़्टवेयर आपूर्ति श्रृंखला कमजोरियों से सुरक्षित करने के समग्र प्रयासों के हिस्से के रूप में एसएसडीएफ के दिशानिर्देशों को लागू करना चाहिए। इस ढांचे का पालन करने से सॉफ़्टवेयर जारी होने से पहले संबोधित न की गई कमजोरियों का पता लगाने में सहायता मिलेगी। यह इन अज्ञात कमजोरियों के कारण संभावित सुरक्षा शोषण के जोखिम और प्रभावों को कम करता है। यह आलेख एक व्यापक मार्गदर्शिका है जो बताती है कि एसएसडीएफ ढांचा क्या है और यह सॉफ्टवेयर आपूर्ति श्रृंखला सुरक्षा में कैसे योगदान देता है।
सुरक्षित सॉफ्टवेयर डेवलपमेंट फ्रेमवर्क की 4 प्रथाएँ
एसएसडीएफ प्रथाओं को चार श्रेणियों में बांटा गया है। एसएसडीएफ ढांचे में, प्रत्येक अभ्यास को एक विशिष्ट पहचानकर्ता द्वारा पहचाना जाता है और यह क्या है, यह क्यों फायदेमंद है, और इसे लागू करने के लिए किन कार्यों को करने की आवश्यकता है, इसका संक्षिप्त विवरण दिया गया है। ढांचे में स्थापित सुरक्षित विकास अभ्यास दस्तावेजों के संदर्भ में प्रथाओं को लागू करने के लिए उपकरण, प्रक्रियाओं और तरीकों के उदाहरण भी शामिल हैं। सिक्योर सॉफ्टवेयर डेवलपमेंट फ्रेमवर्क (एसएसडीएफ) संस्करण 1.1 की चार स्तंभ प्रथाएं निम्नलिखित हैं:
संगठन तैयार करें (PO)
सुरक्षित सॉफ़्टवेयर विकास अत्यधिक लोगों पर निर्भर है। इसलिए, एसएसडीएफ को लागू करते समय पहला कदम यह सुनिश्चित करना है कि आपके संगठन में हर कोई उन परिवर्तनों के लिए पर्याप्त रूप से तैयार है जिनकी रूपरेखा में आवश्यकता होगी। आरंभ करने के लिए, आपको सॉफ़्टवेयर विकास के लिए उपयोग किए जाने वाले टूल के आधार पर आपके द्वारा विकसित किए जा रहे सॉफ़्टवेयर की विशिष्ट सुरक्षा आवश्यकताओं की पहचान करनी होगी। इस तरह आप संगठनात्मक और व्यक्तिगत दोनों स्तरों पर लोगों, प्रक्रियाओं और उनके द्वारा उपयोग की जाने वाली तकनीक को तैयार करना शुरू कर सकते हैं।
संगठन को तैयार करना आम तौर पर शीर्ष प्रबंधन से जानकारी प्राप्त करने और कर्मचारियों के लिए आवश्यक प्रशिक्षण लागू करने के रूप में आता है। आपकी तैयारी के प्रयासों में ऐसे उपकरण लागू करना भी शामिल हो सकता है जो प्रक्रियाओं को स्वचालित करने और विकास के लिए एक सुरक्षित वातावरण बनाने में मदद करते हैं।
सॉफ़्टवेयर को सुरक्षित रखें (पीएस)
सिक्योर सॉफ्टवेयर डेवलपमेंट फ्रेमवर्क आपके सॉफ्टवेयर के सभी घटकों को अनधिकृत पहुंच और छेड़छाड़ से बचाने के लिए प्रथाओं की रूपरेखा तैयार करता है। कोड में अनजाने और जानबूझकर किए गए अनधिकृत परिवर्तनों को रोकने और आपके सॉफ़्टवेयर स्रोत कोड और सॉफ़्टवेयर कॉन्फ़िगरेशन की सुरक्षा के लिए यह एक महत्वपूर्ण कदम है। आपके सॉफ़्टवेयर की सुरक्षा में विशिष्ट स्थिति के आधार पर विभिन्न दृष्टिकोण शामिल हो सकते हैं। जब कोड को सार्वजनिक रूप से पहुंच योग्य बनाने का इरादा नहीं है, तो यह सॉफ़्टवेयर की चोरी को रोक सकता है और हमलावरों के लिए कमजोरियों को ढूंढना कठिन या अधिक समय लेने वाला बना सकता है।
एसएसडीएफ के इस खंड में उल्लिखित प्रथाओं का पालन करके, सॉफ्टवेयर उपभोक्ता यह सुनिश्चित करते हैं कि उनके द्वारा प्राप्त किया गया सॉफ्टवेयर वैध है और उसके साथ छेड़छाड़ नहीं की गई है। इसके अतिरिक्त, यह सॉफ़्टवेयर रिलीज़ को संरक्षित करके रिलीज़ के बाद सॉफ़्टवेयर में कमजोरियों को पहचानने, विश्लेषण करने और समाप्त करने में मदद करता है।
अच्छी तरह से सुरक्षित सॉफ़्टवेयर (पीडब्लू) तैयार करें
न्यूनतम सुरक्षा कमजोरियों के साथ अच्छी तरह से सुरक्षित सॉफ्टवेयर का उत्पादन करने के लिए, सॉफ्टवेयर विकास जीवनचक्र में पालन करने के लिए बुनियादी कदम हैं। इसमे शामिल है:
- सुरक्षित सॉफ़्टवेयर कॉन्फ़िगरेशन चुनना
- अपने सॉफ़्टवेयर की अखंडता सुनिश्चित करने के लिए उसके किसी तृतीय-पक्ष घटक का मूल्यांकन करना
- यह सुनिश्चित करना कि आपका सॉफ़्टवेयर स्रोत कोड सुरक्षित कोडिंग प्रथाओं के अनुरूप है
- कमजोरियों के लिए अपने कोड की समीक्षा, विश्लेषण और परीक्षण करना और कोड जारी होने से पहले पहचाने गए किसी भी मुद्दे का समाधान करना
- कंपाइलर्स और दुभाषियों जैसी बिल्ड टूल सुविधाओं का उपयोग करके कमजोरियों को रोकना
कमजोरियों पर प्रतिक्रिया (आरवी)
आपका सॉफ़्टवेयर जारी होने के बाद भी, यह संभावना बनी रहती है कि आप उसमें कमज़ोरियाँ खोज लेंगे। आपके संगठन के परीक्षक, बाहरी सुरक्षा शोधकर्ता या यहां तक कि ग्राहक भी इन कमजोरियों का पता लगा सकते हैं। आपके सॉफ़्टवेयर को सुरक्षित करने का एक महत्वपूर्ण हिस्सा इन कमजोरियों का पता चलते ही उन पर तुरंत प्रतिक्रिया देना है। आप किसी सुरक्षा खामी को जितनी देर तक छिपाएंगे, वह उतना ही अधिक नुकसान पहुंचा सकती है। नई कमजोरियों का विश्लेषण करने और उन्हें कैसे संबोधित किया जाना चाहिए, यह तय करने के लिए प्रत्येक संगठन को एक भेद्यता प्रकटीकरण कार्यक्रम, साथ ही अन्य नीतियों की आवश्यकता होती है।
विचार करने योग्य मुख्य बिंदु क्या हैं?
एसएसडीएफ का मुख्य उद्देश्य संगठनों को उनकी सॉफ्टवेयर विकास गतिविधियों में सुरक्षा को संरेखित करने और प्राथमिकता देने में मदद करना है। सॉफ्टवेयर विकास जीवनचक्र में सुरक्षा लागू करते समय एसएसडीएफ व्यावसायिक आवश्यकताओं, जोखिम सहनशीलता और संसाधनों को ध्यान में रखता है। इस ढांचे के कुछ प्रमुख विचारों में शामिल हैं:
-
SDLC में सुरक्षा एकीकृत करें
सुरक्षित सॉफ़्टवेयर के निर्माण में पहला कदम आपके सॉफ़्टवेयर विकास जीवनचक्र के विभिन्न चरणों और चरणों में सुरक्षा को एकीकृत करना है। अनिवार्य रूप से, आपकी विकास टीम में सुरक्षा-केंद्रित संस्कृति होनी चाहिए और यह विकास प्रक्रिया के शुरुआती चरण में भी शुरू होनी चाहिए।
ज्यादातर मामलों में, कई मानक कोडिंग प्रथाएं कई कमजोरियां पेश करती हैं जिनका बाद में सॉफ्टवेयर जारी होने पर दुर्भावनापूर्ण पार्टियों द्वारा फायदा उठाया जा सकता है। यही कारण है कि डेवलपर्स को शुरू से ही सुरक्षा के बारे में सोचना चाहिए, और उन रणनीतियों पर अच्छी तरह से शिक्षित होना चाहिए जो इन संभावित हमले मार्गों को कम करने में मदद करते हैं।
अपने सॉफ़्टवेयर को सुरक्षित करने के मानवीय पहलुओं के बारे में सोचने के अलावा, आपको शुरुआत से ही संभावित कमजोरियों के लिए अपने सॉफ़्टवेयर के परीक्षण और निगरानी की प्रक्रिया को स्वचालित करने पर भी विचार करना चाहिए।
-
सुरक्षित सॉफ़्टवेयर विकास नीति
एक सुरक्षित सॉफ़्टवेयर विकास नीति दिशानिर्देशों का एक औपचारिक सेट है जो उन प्रथाओं और प्रक्रियाओं का विवरण देता है जिनका आपका संगठन सुरक्षित सॉफ़्टवेयर विकास के लिए पालन करता है। इस नीति दस्तावेज़ में विकास जीवनचक्र के प्रत्येक चरण के लिए आपके द्वारा अनुसरण किए जाने वाले लोगों, प्रौद्योगिकी और प्रक्रियाओं के लिए विस्तृत निर्देश शामिल हैं।
एक सुरक्षित सॉफ़्टवेयर विकास नीति आपके सॉफ़्टवेयर की अखंडता को बढ़ाने के लिए केवल एक अनुशंसा से कहीं अधिक है। कुछ मामलों में यह अनिवार्य भी है। उदाहरण के लिए, यदि आपके सॉफ़्टवेयर को ISO 27001 या SOC टाइप 2 मानकों जैसे सुरक्षा मानकों को पूरा करना होगा, तो आपको सुरक्षित विकास नीति दस्तावेज़ीकरण की आवश्यकता होगी। सौभाग्य से, ऐसे टेम्पलेट गाइड हैं जिन्हें आप इस उद्देश्य के लिए अपना सकते हैं। आपकी सॉफ़्टवेयर सुरक्षा टीम शुरुआत से ही नीति दस्तावेज़ तैयार कर सकती है और उसे आपकी विशिष्ट आवश्यकताओं के अनुसार अनुकूलित कर सकती है।
-
तृतीय-पक्ष विक्रेता
सुरक्षित कोड लिखना और आंतरिक रूप से सुरक्षा आवश्यकताओं का पालन करना पर्याप्त नहीं है। अधिकांश सॉफ़्टवेयर अभी भी तीसरे पक्ष के विक्रेताओं से घटक लेते हैं जो आपके जैसे समान सुरक्षा मानकों का पालन नहीं कर सकते हैं। ये तृतीय-पक्ष कोड घटक सामान्य मार्ग हैं जिनके माध्यम से सॉफ़्टवेयर आपूर्ति श्रृंखला पर हमले निष्पादित किए गए हैं।
आपके सॉफ़्टवेयर विकास जीवनचक्र में सुरक्षा अनुपालन सुनिश्चित करने के प्रयासों के हिस्से के रूप में, आपको आपके द्वारा उपयोग किए जाने वाले सभी तृतीय-पक्ष घटकों की निगरानी करनी चाहिए और सुनिश्चित करना चाहिए कि विक्रेता आपकी सुरक्षा आवश्यकताओं से पूरी तरह अवगत हैं और आपके जैसे ही सुरक्षा मानकों का पूरी तरह से अनुपालन करते हैं।
-
कोड अखंडता सुरक्षा
आपका सॉफ़्टवेयर कोड और उसके सभी घटक हमले के संभावित बिंदु हैं जिनका दुर्भावनापूर्ण अभिनेता आपके सॉफ़्टवेयर में कमजोरियाँ डालने के लिए शोषण कर सकते हैं। इसे रोकने के लिए, सभी कोड को सुरक्षित रिपॉजिटरी में रखा जाना चाहिए जब वे किसी भी प्रकार की छेड़छाड़ से सुरक्षित हों।
कोड अखंडता बनाए रखने के प्रयासों में यह सुनिश्चित करना शामिल है कि केवल अधिकृत डेवलपर्स के पास ही स्रोत कोड तक पहुंच हो। आपकी पसंद के कोड रिपॉजिटरी में इसे सुनिश्चित करने के लिए सुविधाएँ होनी चाहिए, साथ ही साइन-इन प्रक्रिया को सुरक्षित करने और आपके कोड में किए जाने वाले किसी भी बदलाव की निगरानी के लिए अतिरिक्त सुविधाएँ होनी चाहिए। आप एक्सेस डेटा की निगरानी और आवधिक कोड विश्लेषण करने के लिए स्वचालन को नियोजित करके कोड अखंडता में और सुधार कर सकते हैं।
-
पूर्व-स्थापित मैलवेयर
सॉफ़्टवेयर आपूर्ति श्रृंखला हमलों का एक सामान्य मार्ग पूर्व-स्थापित मैलवेयर में सुरक्षा कमजोरियों को छिपाना है। यह एक वायरस, रैंसमवेयर, ट्रोजन हॉर्स या स्पाइवेयर हो सकता है जो आपके सॉफ़्टवेयर पर कहर बरपा सकता है। मैलवेयर आपके सॉफ़्टवेयर निर्माण प्रक्रिया में उपयोग किए जाने वाले डिवाइस या विश्वसनीय सॉफ़्टवेयर या यहां तक कि किसी तृतीय-पक्ष विक्रेता के सिस्टम पर पहले से इंस्टॉल किया जा सकता है। यह मैलवेयर लंबे समय तक छिपा रह सकता है जब तक कि एक वैध, डिजिटल हस्ताक्षरित प्रक्रिया इसे आपके सिस्टम में फैलने की अनुमति न दे। आपके सॉफ़्टवेयर विकास को सुरक्षित करने में इस पूर्व-स्थापित मैलवेयर पर नज़र रखना और उन्हें पहचानने और हटाने के लिए उपाय करना शामिल है।
-
कोड परीक्षण, समीक्षा और जाँच सूचियाँ
सॉफ़्टवेयर विकास के लिए पारंपरिक दृष्टिकोण आमतौर पर कोड परीक्षण को सॉफ़्टवेयर विकास जीवनचक्र के अंत तक छोड़ देता है। हालाँकि, सॉफ़्टवेयर कमजोरियों को पकड़ने के लिए यह प्रतिक्रियाशील दृष्टिकोण बहुत प्रभावी नहीं है। कोड बनाते समय उसमें खामियों को लगातार पकड़ने के लिए स्वचालित परीक्षण स्थापित करना एक अधिक कुशल तरीका है। बाद में खामियों का पता चलने पर निराशा से बचने के लिए डेवलपर्स को अपने कोड की मैन्युअल रूप से समीक्षा और जांच करनी चाहिए।
चूंकि ट्रैक करने के लिए कई भाग और घटक हैं, इसलिए जब आप निर्माण करते हैं तो चेकलिस्ट बनाना समझ में आता है। इससे आपकी सॉफ़्टवेयर विकास और निगरानी टीम को यह सुनिश्चित करने में मदद मिलती है कि एसएसडीएफ नीतियों में निर्धारित सभी कार्रवाइयों का विधिवत पालन किया जाता है।
-
कमजोरियाँ शमन
एसएसडीएफ और अन्य सुरक्षा मानकों के अनुपालन के बावजूद, सॉफ्टवेयर विकास में कमजोरियां व्यावहारिक रूप से अपरिहार्य हैं। सबसे महत्वपूर्ण बात यह है कि इन कमजोरियों के घटित होने पर उन्हें कम करने के लिए तैयार रहना चाहिए। इसका मतलब यह होगा कि सुरक्षा संबंधी घटनाओं के घटित होते ही उन्हें संबोधित करने के लिए स्पष्ट रूप से निर्धारित योजनाओं और रणनीतियों वाली एक टीम मौजूद होगी।
आपका संगठन सुरक्षा कमजोरियों पर कितनी जल्दी प्रतिक्रिया दे सकता है, इससे ऐसे हमलों के प्रतिकूल प्रभावों को कम करने में बहुत फर्क पड़ेगा। जब सॉफ़्टवेयर की खामियां पकड़ी जाती हैं और उन्हें तुरंत ठीक किया जाता है, तो दुर्भावनापूर्ण अभिनेताओं के पास उनका फायदा उठाने के लिए एक छोटी खिड़की होगी। इस प्रकार, भेद्यता शमन सुरक्षित सॉफ़्टवेयर विकास का एक महत्वपूर्ण पहलू है जिस पर प्रत्येक संगठन को ध्यान देना चाहिए।
-
डिफ़ॉल्ट सेटिंग्स सुरक्षित करें
आपके नए सॉफ़्टवेयर में डिफ़ॉल्ट सुरक्षा सेटिंग्स होनी चाहिए जो उन्नत ज्ञान के बिना भी उपयोगकर्ताओं को सॉफ़्टवेयर कमजोरियों से बचाने में मदद करें। आप ऐसे उपाय भी लागू कर सकते हैं जो उपयोगकर्ताओं को आपके सॉफ़्टवेयर को अपनाने के शुरुआती चरणों में भी सुरक्षित रखने के लिए इन डिफ़ॉल्ट सेटिंग्स के बारे में शिक्षित करते हैं।
निष्कर्ष
सिक्योर सॉफ्टवेयर डेवलपमेंट फ्रेमवर्क (एसएसडीएफ) उन्नत प्रथाओं का एक सेट है जिसे हर संगठन के सॉफ्टवेयर विकास जीवनचक्र में एकीकृत किया जाना चाहिए। विकास प्रक्रिया की शुरुआत में इस ढांचे में निर्धारित प्रथाओं का पालन करके, आप अपने सॉफ़्टवेयर के उस संस्करण में सुरक्षा खामियों को कम कर सकते हैं जिसे आप अंततः जारी करते हैं। एसएसडीएफ आपको सुरक्षा जोखिमों का पता लगाने में भी मदद करता है और अज्ञात कमजोरियों के संभावित प्रभाव को कम करता है जो इसे अंतिम रिलीज में बनाते हैं। यह ढांचा भविष्य में ऐसे सुरक्षा मुद्दों की पुनरावृत्ति को रोकने के लिए महत्वपूर्ण है।