आपके कोड में क्या छिपा है?

सभी पद

यहां तक ​​कि सरल परियोजनाओं में भी तेज़ी से बढ़ने का एक तरीका होता है और यह प्रवृत्ति कोड या नोड लाइब्रेरी के मौजूदा टुकड़ों को शामिल करने में आसानी से बढ़ जाती है।

यह तब भी कुछ हद तक प्रबंधनीय है जब आप उस कोड को लिखने वाले अकेले हों, लेकिन जब कोड कई डेवलपर्स और टीमों द्वारा लिखा जाता है तो यह कठिन हो जाता है, जैसा कि सामान्य रूप से होता है।

यहां तक ​​कि टीम लीड, जो सभी पुल अनुरोधों को मंजूरी देने का प्रभारी है, कोड की प्रत्येक पंक्ति, प्रत्येक फ़ंक्शन और प्रत्येक चर को नहीं जान सकता है।

भरोसे का मुद्दा

यह उन कारणों में से एक है जो 2020 के अंत में ओरियन ऐप में मामूली कोड परिवर्तन हुआ था, जिसे बाद में इस नाम से जाना गया सोलरविंड्स, इतने लंबे समय तक पता नहीं चला। संपूर्ण परिवर्तन कोड की केवल कुछ दर्जन पंक्तियों का था, और वे बहुत अच्छे थे मूल वर्ग के अंदर छिपा हुआ.

बदले गए उत्पाद पर ठीक से हस्ताक्षर किए गए थे, इसलिए उस पर संदेह करने का कोई कारण नहीं था, और विकास टीमों ने कोड के मालिक पर भरोसा किया।

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

इसने मैलवेयर युक्त पैकेज बनाने और उन्हें उनकी जानकारी के बिना विश्वसनीय, लोकप्रिय अनुरक्षकों को सौंपने में सक्षम बनाया। गलत भरोसे का मामला आपके कोड में छिपी एक समस्याग्रस्त भेद्यता का मतलब हो सकता है।

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

कैनसस विश्वविद्यालय में हाल ही में किए गए एक अध्ययन में ("कांटा क्या है? एनपीएम में हिडन कोड क्लोन ढूँढना”), शोधकर्ता बताते हैं कि कैसे पूरी तरह से जांचे गए पैकेजों का उपयोग भी असुरक्षित हो सकता है।

आप इसके बारे में क्या कर सकते हैं?

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

ऐसी कुछ चीजें हैं जो आप कर सकते हैं:

  1. आपके द्वारा शामिल किए गए प्रत्येक लाइब्रेरी मालिक या प्रोग्राम विक्रेता से पूर्ण एसबीओएम का अनुरोध करें। एक एसबीओएम आपको यह सुनिश्चित करने में मदद कर सकता है कि लाइब्रेरी या उत्पाद में सभी 'सामग्री' क्या हैं। इसके अतिरिक्त, यदि आपको लाइब्रेरी या उत्पाद में कुछ ऐसा मिलता है जो एसबीओएम में सूचीबद्ध नहीं है तो इसे संदिग्ध माना जाना चाहिए। आप एसबीओएम क्या है इसके बारे में अधिक जान सकते हैं यहाँ उत्पन्न करें.
  2. विक्रेता या लाइब्रेरी मालिक से एक विश्वसनीय सत्यापन का अनुरोध करें कि एक अखंडता जांच की गई है और आपको वही मिल रहा है जिसकी आप अपेक्षा करते हैं। आपको केवल विक्रेता के आश्वासन पर ही भरोसा नहीं करना चाहिए।
  3. पैकेज स्थापित करते समय npm CLI ध्वज का उपयोग करें --ignore-scripts इंस्टॉल चरण के दौरान तृतीय पक्ष पैकेज से स्क्रिप्ट निष्पादित करने से बचने के लिए।
  4. उपयोग पैकेज-lock.json पैकेज संस्करण संख्याओं को लॉक करने के लिए फ़ाइल। जब आप a का उपयोग करते हैं पैकेज-lock.json आप न केवल आपके द्वारा उपयोग किए जा रहे पैकेज संस्करणों को लॉक करते हैं, बल्कि आप उनकी निर्भरता को भी लॉक कर रहे हैं। जोखिम यह है कि आप किसी भी स्वचालित पैकेज अपडेट को नहीं खींचेंगे जिसमें विभिन्न बगों के समाधान शामिल हो सकते हैं। लेकिन, यदि आपने एक निश्चित संस्करण को सत्यापित करने के लिए काम किया है और पहले इसे सत्यापित किए बिना कुछ और शामिल नहीं करना चाहते हैं, तो अपने संस्करण संख्याओं को लॉक करना सबसे अच्छा विकल्प है।

निम्नलिखित नए नियमों, उम्मीद है कि अधिकांश लोग निकट भविष्य में एसबीओएम का उपयोग शुरू कर देंगे। जितनी अधिक कंपनियां एसबीओएम और अन्य सत्यापन मांगेंगी, उतना ही अधिक संगठनों और अनुरक्षकों को अनुपालन करना होगा।

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