एसएलएसए साइबर सुरक्षा ढांचे को समझना

सॉफ़्टवेयर आपूर्ति शृंखलाओं की अखंडता हाल के वर्षों में एक प्रमुख चर्चा का विषय बन गई है, पिछले दो वर्षों में सॉफ़्टवेयर आपूर्ति शृंखलाओं पर हमले अधिक बार हुए हैं। डेवलपर्स के लिए यह अनिवार्य हो गया है कि वे अपने सॉफ़्टवेयर सिस्टम में शामिल करने के लिए बाहरी सॉफ़्टवेयर और उत्पादों का सावधानीपूर्वक चयन करें, साथ ही अपने सॉफ़्टवेयर कलाकृतियों की अखंडता सुनिश्चित करने के लिए उपाय भी करें। 

सॉफ़्टवेयर के निर्माण और तैनाती की प्रक्रिया काफी जटिल है, जिसमें पूरी श्रृंखला में कमजोरियों के कई संभावित बिंदु हैं। प्रत्येक भेद्यता के लिए विशिष्ट सुधारों पर भरोसा करने के बजाय, डेवलपर्स के लिए अधिक व्यापक एंड-टू-एंड ढांचे को अपनाना अधिक समझदारी है जो विकास चरण के दौरान खतरों को कम करने में मदद कर सकता है।

ऐसा ही एक ढाँचा है सॉफ्टवेयर कलाकृतियों के लिए आपूर्ति श्रृंखला स्तर (एसएलएसए). यह ढांचा सुरक्षा नियंत्रणों और मानकों की एक व्यापक जांच सूची है जो सॉफ्टवेयर पैकेज और बुनियादी ढांचे की अखंडता सुनिश्चित करती है।

RSI नवप्रवर्तित एसएलएसए सुरक्षा ढांचा किसके बीच सहयोग का एक उत्पाद है ओपनएसएसएफ, गूगल, और अन्य साइबर सुरक्षा हितधारक. यह एक सहमत उद्योग मानक के रूप में कार्य करता है जिसे डेवलपर्स, व्यवसायों और उद्यमों द्वारा अपनाया जा सकता है ताकि वे जिस सॉफ़्टवेयर का निर्माण या उपभोग कर रहे हैं उसकी सुरक्षा के बारे में सूचित विकल्प चुन सकें और संपूर्ण सॉफ़्टवेयर विकास जीवनचक्र को सुरक्षित कर सकें।

एसएलएसए सॉफ्टवेयर आपूर्ति श्रृंखला हमलों से बचाव में कैसे मदद करता है

नियमों के एक सेट से अधिक, एसएलएसए सुरक्षा ढांचा एक मानक ढांचा है जो संभावित रूप से एक सॉफ्टवेयर आर्टिफैक्ट के घटकों की अखंडता को मजबूत कर सकता है। यह एंड-टू-एंड दिशानिर्देश रक्षात्मक उपायों के एक सेट के रूप में कार्य करता है जो सॉफ़्टवेयर उत्पाद बनाने वाले सॉफ़्टवेयर पैकेजों में छेड़छाड़ या किसी भी प्रकार के अनधिकृत संशोधन को रोकता है। एसएलएसए ढांचे को अपनाने से आपके सॉफ़्टवेयर को सामान्य से बचाने में मदद मिल सकती है आपूर्ति श्रृंखला हमले निम्नलिखित के रूप में:

PHP के दुर्भावनापूर्ण प्रतिबद्ध रिपोजिटरी हमले

मार्च 2021 में, निकिता पोपोव ने घोषणा की कि दुर्भावनापूर्ण अभिनेताओं ने एक पिछला दरवाजा बनाकर PHP के स्रोत कोड पर हमला करने का प्रयास किया, जो उन्हें कोड प्लेटफ़ॉर्म तक अनधिकृत पहुंच प्राप्त करने की अनुमति देगा। यदि सफल होता, तो हमला विनाशकारी होता, क्योंकि PHP इंटरनेट पर लगभग 80% वेबसाइटों को शक्ति प्रदान करती है। सौभाग्य से, हमले को समय पर पकड़ लिया गया-लेकिन यह घटना अभी भी दर्शाती है कि एसएलएसए नियंत्रण भविष्य में इस तरह के हमलों को रोकने में कैसे मदद कर सकता है। दो-व्यक्ति समीक्षा और दो-कारक प्रमाणीकरण जैसे एसएलएसए प्रोटोकॉल का पालन करने से स्रोत कोड प्लेटफ़ॉर्म सुरक्षित हो जाता और यह हमलावरों के लिए अधिक कठिन लक्ष्य बन जाता।

एप्पल का दुर्भावनापूर्ण कंपाइलर उल्लंघन

2015 में, Apple उत्पादों के लिए ऐप्स बनाने वाले सॉफ़्टवेयर डेवलपर्स ने एक असत्यापित होस्टिंग प्लेटफ़ॉर्म से Xcode (Apple उपकरणों के लिए एक कोड-लेखन उपकरण) का एक संस्करण डाउनलोड किया। XcodeGhost के नाम से जाना जाने वाला Xcode का संस्करण दुर्भावनापूर्ण कोड से संक्रमित हो गया था जिसे गुप्त रूप से इसके साथ बनाए गए ऐप्स में ले जाया गया था। इसने कई ऐप्स के लिए एक पिछला दरवाज़ा तैयार किया जो ऐप्पल की कोड समीक्षा प्रक्रिया और ऐप स्टोर पर पेश किए गए ऐप्स से बच गए। एसएलएसए ढांचे में बिल्ड-संबंधित सुरक्षा प्रोटोकॉल शामिल हैं जो इस तरह के हमले को रोक सकते थे या इसे और अधिक कठिन बना सकते थे। ऐसा ही एक उपाय हर्मेटिक बिल्ड आवश्यकता है जो डेवलपर्स को उनके द्वारा उपयोग किए गए निर्मित टूल सहित अपने सभी स्रोतों को घोषित करने के लिए मजबूर करेगा।

दुर्भावनापूर्ण उल्लंघन की छवि

दुर्भावनापूर्ण कलाकृतियाँ अपलोड की गईं

1 अप्रैल, 2021 को, कोडकोव टीम ने अपने बैश अपलोडर्स को प्रभावित करने वाले हमलों का खुलासा किया, जिसमें कोडकोव गिटहब एक्शन, द कोडकोव सर्किलसीआई ओर्ब और कोडकोव बिटराइज स्टेप शामिल थे। हमलावर ने HMAC कुंजी निकालकर अनधिकृत पहुंच प्राप्त की, जो कोडकोव की सार्वजनिक सेल्फ-होस्टेड डॉकर छवियों में से एक की मध्यवर्ती परत के Google क्लाउड स्टोरेज सेवा खाते तक पहुंच प्रदान करती है। इस कुंजी ने उन्हें अंतिम उपयोगकर्ताओं पर सीधे दुर्भावनापूर्ण कोड अपलोड करने के लिए बैश अपलोडर को संशोधित करने की अनुमति दी। एसएलएसए फ्रेमवर्क ने इस क्रिया को यह दिखाकर पकड़ा होगा कि कलाकृतियों को उनके स्रोत भंडार में अपेक्षित रूप से भिन्न तरीके से बनाया गया है।

इवेंट-स्ट्रीम ख़राब निर्भरता

2018 में, हैकर्स ने npm पर एक दुर्भावनापूर्ण पैकेज फ़्लैटमैप-स्ट्रीम प्रकाशित किया और इसे बाद में प्लेटफ़ॉर्म के व्यापक रूप से उपयोग किए जाने वाले इवेंट-स्ट्रीम पैकेज पर निर्भरता के रूप में जोड़ा गया। निर्भरता जोड़ने के बाद, हमलावरों ने इसे दुर्भावनापूर्ण व्यवहार के साथ अद्यतन किया। चूँकि अपडेट GitHub को सबमिट किए गए कोड से मेल नहीं खाता, SLSA फ्रेमवर्क ने हमले को पकड़ लिया होगा और वेक्टर को रोका होगा। दुर्भावनापूर्ण कोड की उत्पत्ति पर नज़र रखने से पता चलेगा कि यह GitHub या उचित बिल्डर से नहीं आया था। किसी भी तरह से हमले को रोका जा सकता था.

एसएलएसए साइबर सुरक्षा ढांचे के चार सुरक्षा स्तर

एसएलएसए ढांचा एक वृद्धिशील और कार्रवाई योग्य प्रोटोकॉल है। इसमें चार स्तर होते हैं, स्तर 4 एक सुरक्षित प्रणाली की आदर्श अंतिम स्थिति का प्रतिनिधित्व करता है। उच्चतम स्तर पर कलाकृतियाँ उपभोक्ता का विश्वास हासिल करने के लिए सभी आवश्यकताओं को पूरा करती हैं कि इसके साथ किसी भी तरह से छेड़छाड़ नहीं की गई है और उनके सभी घटकों का उनके स्रोतों से पता लगाया जा सकता है। निचले स्तरों पर कलाकृतियाँ वे हैं जिन्होंने अपनी रैंक के आधार पर विशिष्ट अखंडता गारंटी के साथ वृद्धिशील मील के पत्थर भी हासिल किए हैं।

स्तर 1—नींव रखना

आप एसएलएसए ढांचे के स्तर 1 को सुरक्षित सॉफ्टवेयर बनाने के लिए पूरे ढांचे के लिए एक प्रकार की नींव के रूप में मान सकते हैं। इस स्तर पर, एसएलएसए को अपनाने वाले डेवलपर्स या संगठनों को दो काम करने होंगे। सबसे पहले, उन्हें अपनी निर्माण प्रक्रिया को पूरी तरह से स्वचालित करना होगा। यह विभिन्न तरीकों से किया जा सकता है, लेकिन बिल्ड को स्वचालित करने का पारंपरिक तरीका मेकफ़ाइल का उपयोग करना है। समान परिणाम प्राप्त करने के लिए GitHub क्रियाओं का भी उपयोग किया जा सकता है।

एसएलएसए स्तर 1 प्राप्त करने का दूसरा भाग पूर्ण उद्गम दस्तावेज़ तैयार करना है। यह मेटाडेटा है जो दिखाता है कि सॉफ़्टवेयर आर्टिफैक्ट कैसे बनाया गया था। इसमें संपूर्ण निर्माण प्रक्रिया, सभी निर्भरताएं और इसे बनाने में उपयोग किए गए शीर्ष-स्तरीय स्रोतों का विवरण होना चाहिए।

निर्माण प्रक्रिया को स्क्रिप्ट करने और सॉफ़्टवेयर आर्टिफैक्ट की उत्पत्ति को इस तरीके से दिखाने से उपभोक्ताओं के लिए सॉफ़्टवेयर उत्पाद का उपयोग करने के बारे में सूचित निर्णय लेना आसान हो जाता है। हालाँकि SLSA 1 सत्यापन होने का मतलब यह नहीं है कि सॉफ़्टवेयर छेड़छाड़ से पूरी तरह सुरक्षित है, इससे सॉफ़्टवेयर के घटकों की पहचान करना आसान हो जाता है। कमजोरियों के प्रबंधन में यह पहला चरण है।

स्तर 2—सुनिश्चित करें कि आपकी निर्माण प्रक्रिया छेड़छाड़-प्रतिरोधी है

एसएलएसए ढांचे का स्तर 2 वह है जहां आप यह सुनिश्चित करने के लिए उपाय करना शुरू करते हैं कि आपकी निर्माण प्रक्रिया यथासंभव छेड़छाड़-प्रतिरोधी है। एसएलएसए ढांचे के स्तर 2 को प्राप्त करने से उपभोक्ता को सॉफ्टवेयर की उत्पत्ति के बारे में अधिक विश्वास मिलता है।

फिर, यह दो चरणों में किया जाता है, पहला संस्करण नियंत्रण का उपयोग करना और दूसरा उत्पत्ति को प्रमाणित करने के लिए होस्टेड बिल्ड सेवा का उपयोग करना शामिल है। पहले चरण के लिए, GitHub, GitLab, या किसी अन्य समान सेवा का उपयोग कोड को संग्रहीत करने और उसमें किए गए किसी भी परिवर्तन को रिकॉर्ड करने के लिए किया जाता है। इस तरह से किसी भी संस्करण परिवर्तन को ट्रैक करने से कलाकृति के निर्माण की प्रक्रिया में किए गए किसी भी बदलाव को समझना आसान हो जाता है।

हालाँकि लेवल 2 के लिए लेवल 1 की तरह ही उद्गम दस्तावेज़ की आवश्यकता होती है, यहाँ अंतर यह है कि सॉफ़्टवेयर आर्टिफैक्ट को होस्टेड बिल्ड सेवा द्वारा प्रमाणित किया जाना चाहिए। होस्ट की गई सेवा एक विश्वसनीय तृतीय पक्ष के रूप में कार्य करती है जो पुष्टि कर सकती है कि प्रारंभिक उद्गम दस्तावेज़ में विस्तृत निर्माण प्रक्रिया सटीक है। GitHub Actions एक प्रकार की होस्टिंग सेवा है जो प्रमाणित उद्गम प्रदान कर सकती है।

 स्तर 3—एसएलएसए के सुरक्षा नियंत्रण

स्तर 3 वह जगह है जहां आप एसएलएसए ढांचे में हाइलाइट किए गए विशिष्ट सुरक्षा नियंत्रण को लागू करना शुरू करते हैं। इस स्तर को प्राप्त करने के लिए, आपके सॉफ़्टवेयर कलाकृतियों के लिए स्रोत और निर्माण प्लेटफ़ॉर्म को विशिष्ट मानकों को पूरा करना होगा जो गारंटी देते हैं कि स्रोत श्रवण योग्य है और कोड की उत्पत्ति पर भरोसा किया जा सकता है। एसएलएसए लेवल 3 एक अधिक मजबूत गारंटी प्रदान करता है कि कलाकृति छेड़छाड़ और विशिष्ट वर्गों के खतरों से अच्छी तरह से सुरक्षित है।

लेवल 3 की कुछ विशिष्ट आवश्यकताओं में शामिल हैं:

  •     स्रोत कोड सत्यापित इतिहास और अवधारण-एक स्रोत कोड सत्यापित इतिहास यह सुनिश्चित करता है कि सॉफ़्टवेयर स्रोत कोड में किया गया कोई भी परिवर्तन लेखक, समीक्षक, या अपलोडर की प्रमाणित पहचान के साथ होता है जिसने परिवर्तन के विशिष्ट टाइमस्टैम्प के साथ परिवर्तन किया है। इस परिवर्तन इतिहास को भी कम से कम 18 महीने तक संग्रहीत किया जाना चाहिए।
  •   अल्पकालिक वातावरण में पृथक निर्माण-इस आवश्यकता को पूरा करने के लिए, सॉफ़्टवेयर बिल्ड को अल्पकालिक वातावरण में लागू किया जाना चाहिए जहां वे किसी भी अन्य बिल्ड इंस्टेंस से पूरी तरह से स्वतंत्र हों। आप इसे प्राप्त करने के लिए GitHub Actions जैसी सेवा का उपयोग कर सकते हैं, जो आपकी मांग पर निर्माण करने के लिए वर्चुअल बिल्ड मशीन का उपयोग करती है।
  •     कोड के रूप में बनता है-इन मानदंडों के अनुसार आपको अपनी बिल्ड फ़ाइलों को कोड की तरह व्यवहार करना होगा। इसका मतलब है कि उन्हें एक संस्करण नियंत्रण प्रणाली में संग्रहीत किया जाना है जो आवश्यक होने पर बिल्ड प्रक्रियाओं को फिर से बनाना संभव बनाता है।
  •     गैर मिथ्या उद्गम-इस आवश्यकता का उद्देश्य उपयोगकर्ताओं को बिल्ड सेवा द्वारा उत्पन्न उद्गम दस्तावेज़ के साथ छेड़छाड़ करने से रोकना है।

स्तर 4-उपभोक्ता विश्वास

एसएलएसए ढांचे के स्तर 4 का उद्देश्य यह सुनिश्चित करना है कि सॉफ़्टवेयर के साथ किसी भी तरह से छेड़छाड़ नहीं की गई है। केवल सॉफ़्टवेयर कलाकृतियाँ जो निम्नलिखित आवश्यकताओं को पूरा करती हैं, फ्रेमवर्क के स्तर 4 को प्राप्त कर सकती हैं:

सभी परिवर्तनों की दो-व्यक्ति समीक्षा

इस मानदंड के लिए संगठनों को सॉफ़्टवेयर कोड और घटकों में किसी भी प्रस्तावित परिवर्तन की गहन समीक्षा करने के लिए दो योग्य समीक्षक नियुक्त करने की आवश्यकता होती है। यह दो-व्यक्ति समीक्षा प्रक्रिया यह सुनिश्चित करती है कि केवल विश्वसनीय और प्रमाणित डेवलपर ही सॉफ़्टवेयर कलाकृतियों में परिवर्तन कर सकते हैं।

एक सुव्यवस्थित और प्रतिलिपि प्रस्तुत करने योग्य निर्माण प्रक्रिया

एक निर्माण प्रक्रिया को हेमेटिक तब कहा जाता है जब सभी इनपुट निर्माण प्रक्रिया के सामने और बाहर निर्दिष्ट होते हैं। यह नियम सोर्स कोड के साथ-साथ बिल्ड में उपयोग किए गए सभी कंपाइलर्स, लाइब्रेरीज़ और टूल्स पर भी लागू होता है। यह सभी तृतीय-पक्ष आयातों की अखंडता की गारंटी देने में मदद करता है। प्रतिलिपि प्रस्तुत करने योग्य निर्माण मानदंड एक अनिवार्य आवश्यकता नहीं है, लेकिन इसकी अनुशंसा भी की जाती है। मानदंड के लिए निर्माण प्रक्रिया को समान आउटपुट उत्पन्न करने की आवश्यकता होती है, चाहे वह कहीं भी या जब भी चल रही हो।

एसएलएसए स्तरों को पूरा करने के लिए तकनीकी आवश्यकताएँ

आवश्यकताओं की सूची की छवि

एसएलएसए ढांचे में विभिन्न स्तरों के लिए विशिष्ट तकनीकी आवश्यकताएं हैं। इन आवश्यकताओं को पाँच मुख्य श्रेणियों में वर्गीकृत किया गया है: स्रोत आवश्यकताएँ, निर्माण प्रक्रिया आवश्यकताएँ, सामान्य आवश्यकताएँ, उद्गम सामग्री आवश्यकताएँ, और उद्गम पीढ़ी आवश्यकताएँ। इनमें से प्रत्येक आवश्यकता श्रेणी को नीचे हाइलाइट किया गया है।

स्रोत आवश्यकताएँ

यह उन आवश्यकताओं को संदर्भित करता है जो आपके स्रोत कोड की अखंडता सुनिश्चित करने के लिए हैं। प्रोटोकॉल के इन सेटों का पालन आपके कोड में छेड़छाड़ और दुर्भावनापूर्ण परिवर्तनों को रोकता है। यह यह भी सुनिश्चित करता है कि किसी भी नापाक हरकत पर किसी का ध्यान नहीं जाए। स्रोत आवश्यकताएँ नीचे दी गई तालिका में दी गई हैं।

स्रोत आवश्यकताएँ विवरण एसएलएसए स्तर
संस्करण नियंत्रण स्रोत कोड में सभी परिवर्तनों को ट्रैक किया जाना चाहिए। 2
सत्यापित इतिहास प्रत्येक संस्करण संशोधन के "कौन," "क्या" और "कब" का विवरण देने वाला व्यापक इतिहास दर्ज किया जाना चाहिए। 3
अनिश्चित काल तक बरकरार रखा गया सभी संस्करण परिवर्तन और इतिहास की जानकारी अनिश्चित काल तक संग्रहीत की जानी चाहिए और हटाई नहीं जानी चाहिए। 4
दो व्यक्तियों ने समीक्षा की दो विश्वसनीय और अत्यधिक प्रमाणित लोगों को किसी भी संस्करण परिवर्तन को अधिकृत करना होगा। 4

आवश्यकताएँ बनाएँ

एसएलएसए फ्रेमवर्क बिल्ड प्लेटफॉर्म की सुरक्षा में सुधार और बिल्ड प्रक्रिया की अखंडता को बनाए रखने के लिए बिल्ड आवश्यकताओं पर प्रकाश डालता है।

आवश्यकताएँ बनाएँ विवरण एसएलएसए स्तर
स्क्रिप्टेड निर्माण निर्माण प्रक्रिया के सभी चरण पूर्णतः स्वचालित होने चाहिए. 1
सेवा बनाएँ निर्माण प्रक्रिया के सभी चरण एक समर्पित निर्माण सेवा पर चलने चाहिए। 2
क्षणभंगुर एवं पृथक वातावरण निर्माण प्रक्रिया विशेष रूप से निर्माण के लिए प्रदान किए गए अल्पकालिक वातावरण में चलनी चाहिए। चरणों को अन्य निर्माण उदाहरणों से मुक्त एक पृथक वातावरण में भी चलना चाहिए।

 

3
पैरामीटर रहित एवं भलीभांति निर्माण प्रक्रिया को उपयोगकर्ता मापदंडों के बजाय पूरी तरह से बिल्ड स्क्रिप्ट पर निर्भर होना चाहिए। सभी संक्रमणीय निर्माण चरण भली भांति बंद होने चाहिए, जिसका अर्थ है कि सभी स्रोतों और निर्भरताओं को निर्माण प्रक्रिया के पहले और बाहर पूरी तरह से घोषित किया जाना चाहिए। 4

उद्गम सृजन आवश्यकताएँ

ये आवश्यकताएँ सॉफ़्टवेयर परिसंपत्ति के सभी घटकों के स्रोत को सत्यापित करने के लिए हैं। उद्गम पीढ़ी की आवश्यकता को नीचे दी गई तालिका में दर्शाया गया है।

उद्गम सृजन आवश्यकताएँ विवरण एसएलएसए स्तर
उपलब्ध उपभोक्ता को स्वीकार्य प्रारूप में उद्गम स्थल की जानकारी तक पहुंच होनी चाहिए। 1
निरीक्षण उपभोक्ता को प्रदान की गई उत्पत्ति संबंधी जानकारी की प्रामाणिकता को सत्यापित करने में सक्षम होना चाहिए। 1
सेवा-जनित निर्माण सेवा द्वारा सभी उद्गम जानकारी उत्पन्न की जानी चाहिए।

 

2
गैर झूठा साबित किया उपयोगकर्ता उद्गम डेटा को गलत साबित नहीं कर सकते। 3
पूर्ण निर्भरता  उद्गम डेटा में निर्माण चरणों के दौरान उपयोग की गई सभी निर्भरताएँ शामिल होनी चाहिए। 4

उद्गम सामग्री आवश्यकताएँ

उद्गम सामग्री आवश्यकताएँ उन सभी कलाकृतियों, निर्भरताओं और निर्माण प्रतिबंधों की पहचान और स्रोत को सत्यापित करती हैं जिनका उपयोग निर्माण प्रक्रिया में किया गया था। उन्हें नीचे दी गई तालिका में हाइलाइट किया गया है।

उद्गम सामग्री आवश्यकताएँ विवरण एसएलएसए स्तर
कलाकृति, निर्माता, स्रोत और प्रवेश बिंदु की पहचान करता है।       आउटपुट आर्टिफैक्ट की पहचान करता है

      बिल्ड इकाई की पहचान करता है

      एक अपरिवर्तनीय संदर्भ के माध्यम से स्रोत की पहचान करता है

      उस कमांड की पहचान करता है जिसने बिल्ड स्क्रिप्ट को लागू किया

1
सभी बिल्ड पैरामीटर शामिल हैं सभी निर्माण मापदंडों की पहचान की जानी चाहिए।

 

3
परिवर्तनीय निर्भरता और प्रतिलिपि प्रस्तुत करने योग्य जानकारी शामिल है   इसमें सभी सकर्मक निर्भरताएँ शामिल हैं

  यदि निर्माण प्रतिलिपि प्रस्तुत करने योग्य है, तो इसे पुन: प्रस्तुत करने के लिए आवश्यक सभी जानकारी प्रदान की जानी चाहिए

 

4
मेटाडेटा शामिल है जांच में सहायता के लिए सभी मेटा-डेटा को शामिल किया जाना चाहिए। 0

सामान्य आवश्यकताएँ

सामान्य आवश्यकताएं एसएलएसए के स्तर 4 पर सॉफ्टवेयर कलाकृतियों पर लागू होती हैं। प्रत्येक विश्वसनीय कलाकृति से इन आवश्यकताओं को पूरा करने की उम्मीद की जाती है। उनमें आधारभूत सुरक्षा आवश्यकताएं और लॉग शामिल हैं जो सभी भौतिक और दूरस्थ पहुंच का विवरण देते हैं। सामान्य आवश्यकताएँ प्लेटफ़ॉर्म व्यवस्थापकों की एक छोटी संख्या भी निर्धारित करती हैं जो एसएलएसए दस्तावेज़ीकरण में शर्तों को ओवरराइड कर सकते हैं।