package-lock.json - पैकेज लॉक json - npm typosquatting

Package-Lock.json में टाइपो: यह आपके बिल्ड को कैसे हाईजैक कर सकता है

विषय - सूची

अवश्य पढ़ें पोस्ट

रुचि के नवीनतम पोस्ट

डेवलपर्स के लिए Package-Lock.JSON क्यों महत्वपूर्ण है?

Node.js प्रोजेक्ट्स में, package-lock.json सिर्फ package.json की सहायक फ़ाइल नहीं है। यह इंस्टॉल की गई हर डिपेंडेंसी के सटीक वर्ज़न को लॉक कर देती है, जिसमें नेस्टेड डिपेंडेंसी भी शामिल हैं। यह फ़ाइल अलग-अलग एनवायरनमेंट में एकरूपता सुनिश्चित करती है और नए पैकेज वर्ज़न प्रकाशित होने पर होने वाले अप्रत्याशित परिवर्तनों को रोकती है। इसके बिना, डेवलपर्स को डिपेंडेंसी ट्री में बदलाव के कारण डेवलपमेंट, टेस्टिंग और प्रोडक्शन चरणों में अलग-अलग व्यवहार का जोखिम उठाना पड़ सकता है, और अगर लॉकफ़ाइल में कोई गलती हो जाती है तो npm द्वारा टाइपिंग में गड़बड़ी होने का खतरा भी बढ़ जाता है।


सही तरीके से इस्तेमाल करने पर, package-lock.json आपकी टीम और आपके सभी सदस्यों को सुरक्षा प्रदान करता है। CI/CD pipeline इंस्टॉल किए जाने कोड वही है। लेकिन इस फ़ाइल में एक छोटी सी टाइपिंग की गलती भी आपके ऐप को सीधे जाल में फंसा सकती है।

टाइपिंग की गलतियाँ NPM टाइपोस्क्वेटिंग हमलों का कारण कैसे बनती हैं?

मान लीजिए कि एक वैध पैकेज में package.json सही वर्तनी है, जैसे दर्ज करनालेकिन एक गलत टाइप की गई प्रविष्टि में पैकेज-lock.jsonइस तरह के रूप में, लोडासयह अभी भी आपके डिपेंडेंसी ट्री में घुसपैठ कर सकता है, खासकर अगर किसी ने इसे मैन्युअल रूप से संपादित किया हो या किसी दोषपूर्ण टूल ने इसे लिखा हो।

हमलावर npm typosquatting नामक तकनीक का उपयोग करके इन टाइपो का फायदा उठाते हैं। वे लोकप्रिय नामों से मिलते-जुलते नामों वाले दुर्भावनापूर्ण पैकेज अपलोड करते हैं (उदाहरण के लिए, रिएक्ट-डोम, एक्सप्रेस, कोणीययदि आपके पैकेज लॉक JSON में इस तरह की कोई टाइपो त्रुटि है, तो npm बिना किसी प्रश्न के हमलावर का पैकेज इंस्टॉल कर देता है, क्योंकि आपने उसे स्पष्ट रूप से ऐसा करने के लिए कहा था।

npm typosquatting केवल सैद्धांतिक नहीं है। वास्तविक दुनिया में npm typosquatting के हमलों ने सुर्खियां बटोरी हैं। इसका एक उदाहरण यह था कि... सीओए पैकेज समझौता, जहां दुर्भावनापूर्ण कोड यह एक विश्वसनीय पैकेज के अपडेट के माध्यम से भेजा गया था। अंतर यह है कि npm typosquatting में, डेवलपर गलती से किसी डिपेंडेंसी को गलत टाइप करके हमलावर को आमंत्रित कर देता है।

वास्तविक जोखिम CI/CD Pipelineपैकेज लॉक JSON त्रुटियों के कारण

आधुनिक CI/CD pipelineउपचार पैकेज-lock.json सत्य के स्रोत के रूप में। निर्माण या परिनियोजन के दौरान, pipeline चलाता है एनपीएम सीआई or एनएमपी स्थापित करेंये दोनों ही लॉकफ़ाइल से पढ़ते हैं। अगर कोई टाइपिंग की गलती होती है, तो दुर्भावनापूर्ण पैकेज अपने आप इंस्टॉल हो जाता है। कोई अलर्ट नहीं, कोई प्रॉम्प्ट नहीं।

इसका मतलब है कि स्थानीय विकास के दौरान हुई एक टाइपो त्रुटि चुपचाप स्टेजिंग या यहां तक ​​कि प्रोडक्शन तक फैल सकती है। हमलावर क्रेडेंशियल चुराने वाले, क्रिप्टो माइनर या बैकडोर एम्बेड कर सकते हैं जो डिप्लॉयमेंट के बाद सक्रिय हो जाते हैं। यह सब सुरक्षा उपकरणों को सक्रिय किए बिना हो सकता है, क्योंकि निर्भरता को "घोषित" किया गया था। पैकेज-lock.json.

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

एनपीएम टाइपोस्क्वेटिंग को कम करने के लिए निर्भरता संबंधी टाइपो का पता लगाना और उन्हें रोकना

टाइपो पैकेज-lock.json जब तक आप सक्रिय रूप से उनकी तलाश नहीं करते, वे अदृश्य रहते हैं। शुरुआत कैसे करें, यहाँ बताया गया है:

  • स्थैतिक विश्लेषणकुछ टूल इन समस्याओं को पकड़ नहीं पाते, लेकिन समर्पित डिपेंडेंसी स्कैनर ऐसा कर सकते हैं। ऐसे टूल को एकीकृत करें जो npm टाइपोस्क्वेटिंग पैटर्न को स्कैन करते हैं और अपने कोड की जांच करें। पैकेज-lock.json विसंगतियों के लिए।
  • लिंटिंग लॉकफाइलें: सत्यापन के लिए कस्टम लिंटिंग नियमों या प्लगइन्स का उपयोग करें पैकेज-lock.json ज्ञात सुरक्षित सूचियों के विरुद्ध प्रविष्टियाँ।
  • कोड समीक्षाएँसहकर्मी समीक्षाएँ महत्वपूर्ण हैं। लॉकफ़ाइल अंतर शोरगुल पैदा करते हैं, लेकिन अपनी टीम को सिखाएँ कि वे कोड की तरह ही उनकी समीक्षा करें।
  • स्वचालित जाँच: स्थापित करना pre-commit hooks या CI जॉब्स में अपुष्ट या संदिग्ध प्रविष्टियों को अस्वीकार करने के लिए पैकेज-lock.json.

यहां GitHub Actions का उपयोग करके एक व्यावहारिक उदाहरण दिया गया है:

यह पूरी तरह से अचूक नहीं है, लेकिन यह उन अजीब पैकेज नामों को चिह्नित करता है जो एनपीएम द्वारा टाइपोस्क्वेटिंग का संकेत दे सकते हैं।

Node.js प्रोजेक्ट्स को NPM टाइपोस्क्वेटिंग और सप्लाई चेन हमलों से सुरक्षित करना

अपने Node.js ऐप को सुरक्षित करने और हमलों से बचाने के लिए पैकेज-lock.json:

  • सख्त संस्करण पिनिंग: संस्करण श्रेणियों से बचें (^, ~) में package.jsonअप्रत्याशित अपडेट और विचलन को कम करने के लिए सभी निर्भरताओं को सटीक संस्करणों पर लॉक करें।
  • हस्ताक्षर जांचपैकेज की प्रामाणिकता और उत्पत्ति को सत्यापित करने के लिए Sigstore और npm की प्रोवेनेंस सुविधाओं जैसे टूल का उपयोग करें।
  • अपरिवर्तनीय निर्माण: सदैव प्रयोग करें एनपीएम सीआई एक मान्य के साथ पैकेज-lock.json उत्पादन वातावरण में फ़ाइल का उपयोग न करें। कभी भी इस पर भरोसा न करें। एनएमपी स्थापित करें तैनाती के दौरान, क्योंकि इससे बिना जांचे-परखे बदलाव आ सकते हैं।
  • निरंतर निगरानीऐसे निगरानी समाधानों का उपयोग करें जो आपको निम्नलिखित स्थितियों में सचेत करें:
    • नए पैकेज आपके खाते में दिखाई देते हैं पैकेज-lock.json
    • मौजूदा पैकेजों में अप्रत्याशित परिवर्तन हो जाते हैं
    • संदिग्ध पैटर्न (उदाहरण के लिए, पैकेज के नाम जैसे) एक्सप्रेस, रिएक्ट-डोम, कोणीय) का पता लगाया जाता है
  • निर्भरता ऑडिट उपकरणस्वचालित उपकरणों को एकीकृत करें जैसे कि एनपीएम ऑडिट, संन्यासीया, ज़ायजेनी अपने सीआई में pipeline कमजोरियों और टाइपोस्क्वेटिंग के संकेतकों की जांच करने के लिए।
  • लॉकफ़ाइल स्वच्छता: इलाज पैकेज-lock.json कोड के रूप में। समीक्षा के दौरान इसकी समीक्षा करें। pull requestsविशेषकर जब निर्भरताओं को अपडेट या जोड़ा जाता है।
  • स्वचालित Pre-Commit जाँचता: उपयोग pre-commit hooks वर्जन कंट्रोल में पहुंचने से पहले अपनी लॉकफाइल को मान्य करने के लिए।

पैकेज-lock.json npm टाइपोस्क्वेटिंग हमलों में एक उच्च-मूल्य वाला लक्ष्य है। इस प्रकार की टाइपो त्रुटि रिएक्ट-डोम or लोडास इससे हमलावरों को आपके सिस्टम में सीधे प्रवेश करने का रास्ता मिल जाता है। pipelineआपूर्ति श्रृंखला की अखंडता बनाए रखने के लिए इस फाइल के संबंध में सतर्कता आवश्यक है।

इसलिए, एक छोटी सी टाइपिंग की गलती भी आपके प्रोजेक्ट को बर्बाद कर सकती है। इसे होने मत दीजिए!

एक टाइपो पैकेज-lock.json यह सिर्फ लापरवाही से की गई कोडिंग नहीं है; यह npm टाइपोस्क्वेटिंग के लिए एक वास्तविक खतरा है। यह फ़ाइल एक रक्षक की तरह है, और अगर इसमें सेंध लग जाती है, तो आपका pipeline यह भी उतना ही महत्वपूर्ण है। इसका समाधान आकर्षक नहीं है: गति धीमी करें, लॉकफ़ाइल की समीक्षा करें, स्वचालित जांच करें और परिवर्तनों की निगरानी करें। लेकिन यह प्रयास सार्थक है।

अपनी सुरक्षा को मजबूत करने के लिए, Xygeni जैसे टूल का उपयोग करने पर विचार करें, जो टाइपोस्क्वेटिंग का पता लगाने और उसकी जांच करने के लिए डिज़ाइन किए गए हैं। पैकेज लॉक JSON फ़ाइलों की सुरक्षा करें, और अपने पूरे पैकेज की अखंडता को सुरक्षित रखें। CI/CD pipelineओपन सोर्स के युग में, विश्वास अर्जित और सत्यापित किया जाता है।

एससीए-टूल्स-सॉफ्टवेयर-कंपोजिशन-एनालिसिस-टूल्स
अपने सॉफ़्टवेयर जोखिमों को प्राथमिकता दें, उनका निवारण करें और उन्हें सुरक्षित करें।
अपना निःशुल्क खाता प्राप्त करें।
किसी क्रेडिट कार्ड की आवश्यकता नहीं।

अपने सॉफ़्टवेयर विकास और वितरण को सुरक्षित करें

Xygeni प्रोडक्ट सूट के साथ