- एनपीएम सुरक्षा आता केवळ वैयक्तिक सीव्हीई निश्चित करण्याऐवजी, मोठ्या अवलंबित्व वृक्षांमध्ये पुरवठा-साखळी जोखीम व्यवस्थापित करण्याभोवती फिरते.
- एनपीएम ऑडिट, लॉक फाइल्स, डिपेंडबॉट आणि सीआय/सीडी चेक सारखी साधने असुरक्षित किंवा जुने पॅकेजेस शोधण्यासाठी आणि दुरुस्त करण्यासाठी एकत्र काम करतात.
- ब्राउझर-इंटरसेप्टर मालवेअर आणि शाई-हुलुद वर्म सारखे वास्तविक जगातील हल्ले हे दर्शवितात की तडजोड केलेले एनपीएम पॅकेजेस क्रेडेन्शियल्स कसे चोरू शकतात किंवा पाइपलाइनमध्ये तोडफोड करू शकतात.
- स्वयंचलित स्कॅनिंग, मजबूत खाते आणि गुप्त व्यवस्थापन आणि काळजीपूर्वक पॅकेज निवड यांचे संयोजन केल्याने यशस्वी npm-आधारित हल्ल्यांची शक्यता मोठ्या प्रमाणात कमी होते.
जर तुम्ही आज Node.js किंवा TypeScript वापरून काहीही तयार केले तर तुम्ही npm अवलंबित्वांच्या एका प्रचंड ढिगाऱ्यावर उभे आहात जे तुम्ही लिहिलेले नाही आणि कदाचित कधीही पूर्णपणे वाचू शकणार नाही. वैशिष्ट्यांचे जलद वितरण करण्यासाठी हे अविश्वसनीयपणे सोयीस्कर आहे, परंतु ते पुरवठा साखळीच्या धमक्या, क्रेडेन्शियल चोरी आणि तुमच्या अॅप्स किंवा CI/CD पाइपलाइनमध्ये सूक्ष्म मागच्या दाराने घुसखोरी करण्यासाठी एक मोठा हल्ला पृष्ठभाग देखील उघडते.
आधुनिक एनपीएम सुरक्षा आता फक्त "माझ्या पॅकेजेसमध्ये ज्ञात सीव्हीई आहेत का?" याबद्दल राहिलेली नाही - ती याबद्दल आहे मेंटेनर अकाउंट्स हायजॅक करणाऱ्या फिशिंग कॅम्पेनपासून बचाव करणे, संक्रमित आवृत्त्या स्वयंचलितपणे प्रकाशित करणारे वर्म्स आणि विकसकाचे डेटा पुसण्याचा प्रयत्न करणारे दुर्भावनापूर्ण लायब्ररी home डायरेक्टरी किंवा क्लाउड क्रेडेन्शियल्स चोरा. या मार्गदर्शकामध्ये आपण कसे ते अनपॅक करू एनपीएम सुरक्षा ऑडिटिंग कार्य करते, जसे की साधनांसह तुमचे कार्यप्रवाह कसे कठोर करायचे npm audit, Dependabot, SAST/SCA स्कॅनर आणि CI/CD चेक, आणि जेव्हा तुम्हाला काळजी वाटते की "ही छान छोटी लायब्ररी मालवेअर असू शकते" तेव्हा तुम्ही डेव्हलपर म्हणून वास्तववादीपणे काय करू शकता.
एनपीएम अवलंबित्व सुरक्षा इतकी मोठी का आहे?

प्रत्येक वेळी तुम्ही धावता तेव्हा npm install, तुम्ही तुमच्या प्रोजेक्टमध्ये तृतीय-पक्ष कोड आयात करत आहात आणि प्रभावीपणे त्याच्या लेखकांवर विश्वास ठेवणे तुमच्या अटॅक पृष्ठभागाच्या काही भागासह. Node.js मध्ये ही विश्वास साखळी आश्चर्यकारकपणे खोल असू शकते: एकच उच्च-स्तरीय अवलंबित्व तुम्ही कधीही थेट निवडलेले शेकडो संक्रमणात्मक पॅकेजेस ओढू शकते.
असुरक्षित किंवा सोडून दिलेल्या अवलंबित्वांमुळे क्लासिक सुरक्षा समस्या उद्भवू शकतात जसे की इंजेक्शन हल्ले, सेवा नाकारणे (DoS), विशेषाधिकार वाढवणे किंवा डेटा एक्सफिल्टरेशन. कमी-स्तरीय युटिलिटीमध्ये एक लहान बग - HTTP क्लायंट, रंग पार्सर, YAML लोडर - देखील लोकप्रिय फ्रेमवर्क आणि टूल्सच्या खाली बसल्यावर व्यापक परिणाम करू शकतो.
पारंपारिक भेद्यतेच्या पलीकडे, परिसंस्थेला आता पूर्णपणे दुर्भावनापूर्ण वर्तनाचा सामना करावा लागत आहे: गुपिते चोरण्यासाठी जाणूनबुजून तयार केलेले पॅकेजेस, क्रिप्टोमायनिंग कोड इंजेक्ट करा किंवा CI/CD पाइपलाइनशी तडजोड करा. हे सैद्धांतिक धोके नाहीत; अनेक वास्तविक जगातील घटनांमध्ये हल्लेखोर देखभालकर्त्यांच्या खात्यांवर हल्ला करतात आणि नंतर विश्वसनीय पॅकेजेसना शस्त्र बनवतात हे दिसून आले आहे.
अवलंबित्वांचे ऑडिट केलेले आणि अद्ययावत ठेवणे म्हणून, हे स्वच्छतेचे चांगले काम नाही, परंतु कोणत्याही गंभीर Node.js किंवा TypeScript प्रकल्पाची देखभाल करण्याचा एक मुख्य भाग आहे. नियमित सुरक्षा ऑडिट, स्वयंचलित आणि मॅन्युअल दोन्ही, हे तृतीय-पक्ष कोडपासून होणारा धोका स्वीकार्य पातळीवर ठेवण्याचा एकमेव मार्ग आहे.
एनपीएम ऑडिट आणि ते प्रत्यक्षात काय तपासते हे समजून घेणे
npm audit ही अंगभूत कमांड आहे जी तुमच्या प्रोजेक्टच्या डिपेंडन्सी ट्रीला ज्ञात भेद्यतांच्या डेटाबेसवर स्कॅन करते आणि एक सुरक्षा अहवाल तयार करते. जेव्हा तुम्ही ते तुमच्या प्रोजेक्टच्या रूटमध्ये चालवता, तेव्हा npm तुमच्याकडे पाहते package.json आणि लॉक फाइल, संपूर्ण अवलंबित्व आलेख तयार करते आणि प्रत्येक आवृत्तीला सल्लागारांशी जुळवते.
ऑडिट अहवालात दोन्ही समाविष्ट आहेत प्रत्यक्ष आणि अप्रत्यक्ष अवलंबित्व (तुम्ही स्वतः सूचीबद्ध केलेले पॅकेजेस आणि अवलंबित्वांचे अवलंबित्व). प्रत्येक समस्येसाठी, ते प्रभावित पॅकेज, भेद्यतेचा सारांश, त्याची तीव्रता (कमी, मध्यम, उच्च, गंभीर) आणि निराकरण समाविष्ट असलेल्या आवृत्ती श्रेणीची यादी करते.
कार्यप्रवाहाच्या दृष्टिकोनातून, npm audit परस्परसंवादीपणे वापरले जाऊ शकते डेव्हलपर्सद्वारे आणि CI/CD पाइपलाइनमध्ये परस्परसंवादी नसलेले. पाइपलाइनमध्ये तुम्ही बिल्ड अयशस्वी देखील करू शकता जर भेद्यता विशिष्ट तीव्रतेच्या मर्यादेपेक्षा जास्त असतील जसे की फ्लॅग वापरून --audit-level.
हे साधन विस्तृत कुटुंबातील आहे सॉफ्टवेअर रचना विश्लेषण (SCA): ते तुमच्या स्वतःच्या कोडमधील बग्सपेक्षा ओपन-सोर्स घटकांमधील ज्ञात समस्यांवर लक्ष केंद्रित करते. याचा अर्थ असा की ते जुने किंवा असुरक्षित लायब्ररी पकडण्यासाठी खूप शक्तिशाली आहे, परंतु ते काल कधीही न पाहिलेल्या पॅकेज नावाखाली पाठवलेले नवीन मालवेअर जादूने शोधत नाही.
एनपीएम ऑडिट कसे चालवायचे आणि निकालांचा अर्थ कसा लावायचा
मूलभूत सुरक्षा ऑडिट करण्यासाठी, तुमच्या प्रोजेक्ट रूटमध्ये एक टर्मिनल उघडा (जिथे package.json जगतो) आणि पळतो npm audit. एका लहान अवलंबित्व विश्लेषणानंतर, npm समस्यांची एक सारणी आउटपुट करेल, जी तीव्रतेनुसार गटबद्ध केली जाईल, तसेच पॅच केलेल्या आवृत्तीवर अपग्रेड करण्यासारख्या सुचविलेल्या उपाय चरणांसह.
ऑडिट आउटपुटमध्ये सामान्यतः पॅकेजचे नाव, स्थापित आवृत्ती, भेद्यता वर्णन आणि तीव्रता (कमी, मध्यम, उच्च, गंभीर), तसेच अवलंबित्व वृक्षात पॅकेज कुठे वापरले आहे हे दर्शविणारे मार्ग आणि शिफारस केलेली निश्चित आवृत्ती किंवा श्रेणी. याला प्राधान्य दिलेल्या कामांच्या यादीप्रमाणे हाताळा: क्रिटिकल आणि हाय ने सुरुवात करा, नंतर खाली जा.
जर तुम्हाला निकाल इतर टूल्समध्ये इन्स्टॉल करायचे असतील किंवा नंतरसाठी स्टोअर करायचे असतील, तर तुम्ही JSON आउटपुटसाठी विचारू शकता npm audit --json. जेव्हा तुम्ही कस्टम डॅशबोर्ड, तिकीट प्रणाली किंवा सुरक्षा ऑर्केस्ट्रेशन प्लॅटफॉर्मसह एकत्रित करता तेव्हा ते विशेषतः सुलभ होते.
CI/CD पाइपलाइनमध्ये, अनेक संघ पाइपलाइन चालविण्यासाठी कॉन्फिगर करतात npm audit --json अवलंबित्वे स्थापित झाल्यानंतर लगेच, निकालाचे विश्लेषण करा आणि निवडलेल्या तीव्रतेपेक्षा जास्त भेद्यता असल्यास बिल्ड अयशस्वी करा. बाह्य मदतनीस जसे audit-ci तुमच्यासाठी हे लॉजिक गुंडाळू शकते आणि जेव्हा मर्यादा ओलांडली जाते तेव्हा बिल्ड तोडण्यासाठी सोयीस्कर पर्याय प्रदान करू शकते.
एनपीएम ऑडिट फिक्ससह भेद्यता दुरुस्त करणे
एकदा npm audit ध्वज समस्या, तुमची पहिली बचावफळी आहे npm audit fix, जे जवळच्या सुरक्षित आवृत्त्यांमध्ये असुरक्षित अवलंबित्वे स्वयंचलितपणे अपग्रेड करण्याचा प्रयत्न करते. हुड अंतर्गत ते पुन्हा लिहिते package-lock.json (आणि package.json (लागू असल्यास) सुसंगत आवृत्ती श्रेणींमध्ये पॅकेजेस बंप करण्यासाठी.
हे स्वयंचलित उपाय अनेक कमी आणि मध्यम समस्यांसाठी चांगले काम करते, आणि काही उच्च तीव्रतेच्या समस्यांसाठी देखील जिथे निराकरण किरकोळ किंवा पॅच रिलीझ आहे. हा एक जलद विजय आहे जो बहुतेकदा कमीत कमी मानवी प्रयत्नांनी तुमच्या अनुशेषाचा मोठा भाग साफ करतो.
प्रत्येक भेद्यता स्वयंचलित अपग्रेडद्वारे सुरक्षितपणे दुरुस्त करता येत नाही; काहींना मोठे आवृत्ती बदल आवश्यक असतात जे तुमचा कोड किंवा इतर अवलंबित्वे खंडित करू शकतात. तिथेच npm audit fix --force यात येते: ते ब्रेकिंग बदलांमध्ये देखील अपग्रेड करण्यास भाग पाडते, परंतु तुम्ही ते काळजीपूर्वक वापरावे आणि नंतर नेहमीच पूर्णपणे चाचणी करावी.
गंभीर प्रकल्पांमध्ये फोर्स पर्याय चालवण्यापूर्वी, तुमच्या लॉक फाइलचे कमिट किंवा बॅकअप घेणे आणि तुमच्याकडे चांगले चाचणी कव्हरेज असल्याची खात्री करणे शहाणपणाचे आहे. सक्तीने केलेल्या अपग्रेडमुळे वर्तनातील बदल किंवा प्रतिगमन येऊ शकते जे तुमच्याकडे तुलना करण्यासाठी बेसलाइन नसल्यास ट्रॅक करणे कठीण होते.
फायली लॉक करा, npm ci आणि डिटरमिनिस्टिक इंस्टॉल करा
The package-lock.json फाइल (किंवा yarn.lock/pnpm-lock.yaml इतर व्यवस्थापकांसाठी) सुरक्षिततेसाठी महत्त्वाचे आहे कारण ते तुमच्या प्रकल्पाद्वारे वापरल्या जाणाऱ्या प्रत्येक अवलंबित्वाच्या अचूक आवृत्त्या पिन करते. त्याशिवाय, प्रत्येक npm install थोड्या वेगळ्या सुसंगत आवृत्त्या काढू शकतात, ज्यामुळे बिल्ड्स निर्धारक नसतात आणि ऑडिट करणे कठीण होते.
तुम्ही संपादन टाळावे. package-lock.json हाताने आणि त्याऐवजी जेव्हा तुम्ही अवलंबित्वे जोडता, काढता किंवा अपडेट करता तेव्हा npm ला ते व्यवस्थापित करू द्या. कोड कमिट करताना, नेहमी दोन्ही समाविष्ट करा package.json आणि लॉक फाइल जेणेकरून प्रत्येकजण - आणि तुमचा CI/CD - समान आवृत्त्या स्थापित करेल.
स्वयंचलित वातावरणात, प्राधान्य द्या npm ci प्रती npm install कारण npm ci लॉक फाइलचा वापर एका कडक करार म्हणून करते आणि जर ती घोषित अवलंबित्वांशी जुळत नसेल तर ती चालवण्यास नकार देते. त्यामुळे जलद आणि पूर्णपणे पुनरुत्पादित करण्यायोग्य इंस्टॉलेशन मिळतात, जे तुम्हाला CI मध्ये हवे आहे.
पुरवठा साखळी सुरक्षेच्या दृष्टिकोनातून, लॉक करणे आणि इंस्टॉल्सची पुनरुत्पादने करणे म्हणजे दिलेल्या बिल्डसाठी कोणत्या आवृत्त्या वापरल्या गेल्या हे तुम्हाला अचूकपणे माहित असते, जे तुमच्या पाइपलाइनमध्ये दुर्भावनापूर्ण रिलीझ कधी ओढले गेले आहे का याची तपासणी करण्याची आवश्यकता असताना महत्वाचे आहे. आवश्यक असल्यास, असुरक्षित किंवा बॅकडोअर आवृत्ती प्ले होत आहे की नाही हे पाहण्यासाठी तुम्ही ऐतिहासिक लॉक फाइल्स वापरून बिल्ड पुन्हा प्ले करू शकता.
Dependabot, Renovate आणि npm टूलिंग वापरून ऑटोमेटिंग अपडेट्स
अनेक रिपॉझिटरीजमध्ये कालबाह्य किंवा असुरक्षित पॅकेजेस मॅन्युअली ट्रॅक करणे लवकर अव्यवस्थापित होते, म्हणूनच सारख्या साधनांद्वारे ऑटोमेशन डिपेंडबॉट किंवा नूतनीकरण खूप मौल्यवान आहे. या सेवा तुमच्या अवलंबित्वांचे निरीक्षण करतात आणि नवीन आवृत्त्या किंवा सुरक्षा निराकरणे दिसल्यावर पुल विनंत्या उघडतात.
उदाहरणार्थ, GitHub चे Dependabot हे a द्वारे कॉन्फिगर केले आहे .github/dependabot.yml कोणत्या इकोसिस्टम्स पहायच्या, वारंवारता अपडेट करायच्या आणि लक्ष्यित शाखा कशा करायच्या हे निर्दिष्ट करणारी फाइल. जेव्हा ते असुरक्षित किंवा जुने npm पॅकेज शोधते, तेव्हा ते एक PR अपडेटिंग तयार करते package.json आणि package-lock.json, अनेकदा सल्लागारांच्या लिंक्ससह.
सह जोडले npm audit, तुम्हाला एक चांगला फीडबॅक लूप मिळतो: ऑडिट समस्या ओळखतो आणि Dependabot (किंवा Renovate) त्या दुरुस्त करण्यासाठी सतत अपग्रेड प्रस्तावित करतो. तुमचे काम प्रत्येक आवृत्ती बंप हाताने शोधण्याऐवजी या पुल रिक्वेस्ट्सचे पुनरावलोकन करणे आणि चाचणी करणे आहे.
ऑटोमेशनच्या पलीकडे, npm स्वतः मदतनीस कमांड प्रदान करते जसे की npm outdated नवीन आवृत्त्यांसह पॅकेजेसची यादी करणे आणि npm update परवानगी असलेल्या आवृत्ती श्रेणींमध्ये अपग्रेड करण्यासाठी. नियमितपणे वापरल्यास, ते तुम्हाला खूप मागे पडण्याची आणि एकाच वेळी अनेक प्रमुख आवृत्त्या उडी मारण्याची शक्यता कमी करतात.
CI/CD पाइपलाइनमध्ये सुरक्षा तपासणी चालवणे
सुरक्षित npm सेटअप तुमच्या लॅपटॉपपुरता मर्यादित नाही; तुमच्या CI/CD पाइपलाइनने उत्पादनापर्यंत पोहोचण्यापासून असुरक्षित किंवा दुर्भावनापूर्ण कोड रोखण्यासाठी सुरक्षा तपासणी देखील लागू केल्या पाहिजेत. प्रत्येक टप्प्यावर - स्रोत, बांधणी, चाचणी, तैनाती - संबंधित नियंत्रणे असली पाहिजेत.
धावणे सामान्य आहे. npm audit बिल्ड किंवा प्री-डिप्लॉयमेंट टप्प्यात आपोआप, अनेकदा --json मॉनिटरिंग टूल्ससह सुलभ एकत्रीकरणासाठी ध्वजांकन करा. जर स्कॅनमध्ये तुमच्या जोखीम मर्यादेपेक्षा जास्त भेद्यता आढळल्या, तर पाइपलाइन अयशस्वी होऊ शकते आणि रिलीज ब्लॉक होऊ शकते.
प्रगत साधने जसे की Snyk उच्च किंवा गंभीर समस्या आढळल्यास अवलंबित्वे स्कॅन करून आणि बिल्डमध्ये बिल्ड अयशस्वी करून CI/CD मध्ये सुरक्षा द्वारपाल म्हणून काम करू शकते. सोनारक्यूब किंवा सोनारक्लाउड सारख्या दर्जेदार विश्लेषकांसह त्यांचे संयोजन केल्याने तुम्हाला कोड गुणवत्ता, सुरक्षा धोके आणि तांत्रिक कर्जाचे विस्तृत चित्र मिळते.
विकासादरम्यान, ESLint सारखी स्थिर विश्लेषण साधने जसे की प्लगइन्ससह eslint-plugin-security आणि eslint-plugin-node तुमच्या स्वतःच्या कोडमध्ये सुरुवातीला असुरक्षित पॅटर्न पकडण्यास मदत करते. ते अवलंबित्व स्कॅनिंगला पूरक आहे, जे तुमच्या व्यवसायाच्या तर्कापेक्षा तृतीय-पक्ष घटकांवर लक्ष केंद्रित करते.
एनपीएम ऑडिटच्या पलीकडे सीआय/सीडी पाइपलाइन कडक करणे
स्वयंचलित स्कॅन शक्तिशाली असतात, परंतु सुरक्षित पाइपलाइनसाठी मजबूत गुप्त व्यवस्थापन, मजबूत प्रवेश नियंत्रण आणि चांगली भांडार स्वच्छता देखील आवश्यक असते. चुकीची कॉन्फिगर केलेली रहस्ये किंवा जास्त परवानगी देणाऱ्या भूमिकांमुळे किरकोळ उल्लंघन पूर्णपणे घडू शकते.
समर्पित गुप्त व्यवस्थापक वापरा जसे की हॅशिकॉर्प तिजोरी किंवा AWS सिक्रेट्स मॅनेजर वापरून कॉन्फिगरेशन फाइल्स किंवा एन्व्हायर्नमेंट व्हेरिअबल्समध्ये टोकन किंवा की एम्बेड करण्याऐवजी सोर्स कंट्रोलमध्ये तपासले जाते. यामुळे हल्लेखोर किंवा अगदी जिज्ञासू योगदानकर्त्याला तुमच्या रेपोमधील संवेदनशील डेटा सापडण्याची शक्यता कमी होते.
GitHub, npm आणि तुम्ही वापरत असलेल्या कोणत्याही CI/CD प्लॅटफॉर्मसाठी किमान विशेषाधिकाराच्या तत्त्वासह भूमिका-आधारित प्रवेश नियंत्रण (RBAC) अत्यंत महत्त्वाचे आहे. डेव्हलपर्स आणि सेवा खात्यांना फक्त त्यांना आवश्यक असलेल्या परवानग्या असाव्यात - त्याहून अधिक काही नाही.
प्री-कमिट हुक आणि सीक्रेट-स्कॅनिंग टूल्स तुमच्या रिपॉझिटरीजमध्ये एपीआय की, टोकन किंवा पासवर्ड पहिल्यांदाच प्रवेश करण्यापासून रोखू शकतात. स्ट्रक्चर्ड गिटऑप्स वर्कफ्लो आणि संरक्षित शाखांसह एकत्रितपणे, ते एक स्पष्ट ऑडिट ट्रेल प्रदान करतात आणि पुनरावलोकन न केलेले बदल विलीन होण्याचा धोका कमी करतात.
तुमच्या सुरक्षा टूलिंगमधील सूचना स्लॅक, मायक्रोसॉफ्ट टीम्स किंवा ईमेल सारख्या रिअल-टाइम चॅनेलमध्ये एकत्रित केल्या पाहिजेत, परंतु काळजीपूर्वक ट्यून केल्या पाहिजेत जेणेकरून तुमच्या टीमला कमी-मूल्याच्या सूचनांचा त्रास होणार नाही. तीव्रता आणि संदर्भानुसार प्राधान्य देणे खरोखर महत्त्वाच्या गोष्टींवर लक्ष केंद्रित करते.
वास्तविक जगातील एनपीएम पुरवठा साखळी हल्ले आणि ते आपल्याला काय शिकवतात
गेल्या काही वर्षांत, npm मध्ये अनेक हाय-प्रोफाइल सप्लाय-साखळी घटना घडल्या आहेत जिथे हल्लेखोरांनी वैयक्तिक अनुप्रयोगांऐवजी देखभालकर्त्यांना किंवा पॅकेजेसना लक्ष्य केले. हे हल्ले अधोरेखित करतात की एकाच खात्यामुळे लाखो डाउनस्ट्रीम इंस्टॉलमध्ये कसे बदल होऊ शकतात.
एका मोहिमेत, एका सुप्रसिद्ध npm देखभालकर्त्याला एका डोमेनकडून काळजीपूर्वक तयार केलेला फिशिंग ईमेल मिळाला जो अधिकृत npm साइटवरून जवळजवळ वेगळा दिसत नव्हता. संदेशात दोन-घटक प्रमाणीकरण "अपडेट" न केल्यास खाते लॉक करण्याची धमकी देण्यात आली होती, ज्यामुळे पीडित व्यक्तीला क्रेडेन्शियल्स कॅप्चर करणाऱ्या बनावट लॉगिन पेजकडे आकर्षित करण्यात आले.
एकदा हल्लेखोराने देखभालकर्त्याच्या npm खात्यावर नियंत्रण मिळवले की, त्यांनी अब्जावधी आठवड्याच्या डाउनलोडसह १८ अत्यंत लोकप्रिय पॅकेजेसच्या दुर्भावनापूर्ण आवृत्त्या पुढे ढकलल्या. कारण हे पॅकेजेस JavaScript इकोसिस्टमच्या अवलंबित्व आलेखात खोलवर एम्बेड केलेले होते, संभाव्य स्फोट त्रिज्या प्रचंड होती.
इंजेक्ट केलेला कोड क्रिप्टोकरन्सी आणि वेब३ अॅक्टिव्हिटीसाठी वापरल्या जाणाऱ्या ब्राउझर-साइड इंटरसेप्टरसारखा होता: तो ब्राउझर एपीआयशी जोडलेला होता जसे की fetch, XMLHttpRequest आणि वॉलेट इंटरफेस जसे की window.ethereum किंवा सोलाना वॉलेट एपीआय. त्याने क्रिप्टो अॅड्रेस किंवा ट्रान्सफरसारखे दिसणारे काहीही शोधण्यासाठी नेटवर्क प्रतिसाद आणि व्यवहार पेलोड स्कॅन केले.
जेव्हा त्याला एखादा व्यवहार आढळला, तेव्हा मालवेअरने कायदेशीर प्राप्तकर्त्याचा पत्ता हल्लेखोराद्वारे नियंत्रित केलेल्या पत्त्याने बदलला, संशय टाळण्यासाठी अनेकदा समान दिसणारे स्ट्रिंग निवडले. बऱ्याच प्रकरणांमध्ये, हल्लेखोराला निधी पाठवण्यासाठी अंतर्निहित स्वाक्षरी केलेला डेटा आधीच सुधारित केला गेला असतानाही UI अजूनही "योग्य" पत्ता दर्शवत असल्याचे दिसून आले.
दुर्भावनापूर्ण कोड मोठ्या प्रमाणात गोंधळलेला होता, ज्यामध्ये व्हेरिएबल्स जसे की _0x... आणि रनटाइमवर मोठ्या एन्कोडेड स्ट्रिंग अॅरे डीकोड केल्या गेल्या, आणि कधीकधी अॅप्लिकेशनला काहीही चूक लक्षात येऊ नये म्हणून ते बनावट यशस्वी प्रतिसाद देत होते. फक्त काही विशिष्ट अॅप्स खरोखरच वापरण्यायोग्य होते - विशेषतः ज्यांनी वॉलेट्स किंवा क्रिप्टो सेवांशी संवाद साधला आणि अरुंद तडजोड विंडोमध्ये प्रभावित आवृत्त्या स्थापित केल्या.
त्या ब्राउझर-इंटरसेप्टर घटनेवरून मार्गदर्शन
एक स्पष्ट धडा असा आहे की जेव्हा जेव्हा पॅकेज तडजोड जाहीर केली जाते तेव्हा डेव्हलपर्सनी ज्ञात-चांगल्या आवृत्त्यांकडे लवकर परत जाण्यास तयार असले पाहिजे. जरी रजिस्ट्रीने दुर्भावनापूर्ण आवृत्त्या काढून टाकल्या तरीही, तुम्ही स्पष्टपणे डाउनग्रेड किंवा अपग्रेड करेपर्यंत तुमच्या लॉक फाइल्स आणि कॅशे त्यांचा संदर्भ घेऊ शकतात.
ची सखोल तपासणी package.json आणि package-lock.json (किंवा yarn.lock) तुमच्या प्रोजेक्टमध्ये कधी दुर्भावनापूर्ण आवृत्त्या आल्या आहेत का हे पडताळण्यासाठी आवश्यक आहे. येथेच डिटर्मिनिस्टिक इंस्टॉल आणि व्हर्जन-पिन केलेल्या लॉक फाइल्स फॉरेन्सिक काम अधिक व्यवस्थापित करतात.
जर तुमचा अॅप्लिकेशन क्रिप्टो वॉलेट्स किंवा वेब३ एपीआयशी संवाद साधत असेल, तर तुम्ही ज्या वेळेत तडजोड झालेले पॅकेजेस होते त्या वेळेत असामान्य गंतव्यस्थाने किंवा अनपेक्षित मंजुरींसाठी व्यवहार लॉगचे बारकाईने निरीक्षण केले पाहिजे. लवकर निदान झाल्यास आर्थिक नुकसान कमी होऊ शकते आणि प्रभावित वापरकर्त्यांना ओळखण्यास मदत करा.
एनपीएम आणि गिटहब खात्यांसाठी - विशेषतः लोकप्रिय पॅकेजेसच्या देखभालकर्त्यांसाठी - टू-फॅक्टर ऑथेंटिकेशनसह, आदर्शपणे हार्डवेअर की द्वारे खाते सुरक्षा मजबूत करणे अत्यंत महत्वाचे आहे. तरीही, "अपडेट" क्रेडेन्शियल्ससाठी लिंकवर क्लिक करण्यास सांगणाऱ्या ईमेलबद्दल नेहमीच शंका घ्या; त्याऐवजी, थेट अधिकृत साइटवर जा आणि तेथे अलर्ट तपासा.
व्यावसायिक SCA आणि SBOM टूलिंग वापरणाऱ्या संस्था अनेकदा पॅकेजच्या नावाने आणि आवृत्तीनुसार त्यांच्या इन्व्हेंटरीजची चौकशी करू शकतात जेणेकरून नुकसान झालेल्या लायब्ररीवर अवलंबून असलेल्या सर्व सिस्टम आणि अनुप्रयोग शोधता येतील. पुरवठा साखळीच्या घटना घडतात तेव्हा ही दृश्यमानता प्रतिसाद वेळ नाटकीयरित्या कमी करते.
शाई-हुलुद वर्म: स्वतःची प्रतिकृती बनवणारा एनपीएम मालवेअर
आणखी एक उल्लेखनीय मोहीम, ज्याचे टोपणनाव शाई-हुलूद मोहीम, पॅकेजेस आणि डेव्हलपर वातावरणात स्व-प्रतिकृती बनवणाऱ्या वर्मसारखे वागून npm पुरवठा-साखळी हल्ल्यांना पुढील स्तरावर नेले. त्याने npm पोस्ट-इंस्टॉल स्क्रिप्ट्सना शस्त्र बनवले जेणेकरून तडजोड केलेली आवृत्ती स्थापित होताच दुर्भावनापूर्ण लॉजिक चालेल.
मालवेअरने संवेदनशील क्रेडेन्शियल्ससाठी वातावरण स्कॅन केले ज्यामध्ये हे समाविष्ट आहे .npmrc AWS, GCP आणि Azure साठी npm टोकन, GitHub वैयक्तिक प्रवेश टोकन, SSH की आणि क्लाउड प्रदाता API की असलेल्या फायली. जे काही सापडले ते बाहेर काढले गेले. हल्लेखोराद्वारे नियंत्रित केलेल्या पायाभूत सुविधांकडे.
चोरी झालेल्या npm टोकन्सचा वापर करून, वर्मने तडजोड केलेल्या देखभालकर्त्या म्हणून प्रमाणित केले, त्यांच्या मालकीच्या इतर पॅकेजेसची गणना केली, त्याचे पेलोड इंजेक्ट केले आणि नंतर नवीन दुर्भावनापूर्ण आवृत्त्या प्रकाशित केल्या. या ऑटोमेशनमुळे हल्लेखोराने प्रत्येक पॅकेजला मॅन्युअली स्पर्श न करता ते जलद गतीने फॅन आउट होऊ शकले.
बऱ्याच प्रकरणांमध्ये चोरीला गेलेली गुपिते पीडिताच्या स्वतःच्या खात्याखाली नव्याने तयार केलेल्या सार्वजनिक गिटहब रिपॉझिटरीजमध्ये टाकली जात होती, ज्यामध्ये शाई-हुलुदचा संदर्भ असलेली नावे किंवा वर्णने होती. त्यामुळे त्या रिपॉझिटरीजवर अचानक आलेल्या कोणालाही संवेदनशील डेटा उघड झाल्यामुळे समस्या आणखी बिकट झाली.
सुरक्षा संशोधकांनी असे म्हटले आहे की (विचित्र टिप्पण्या आणि अगदी इमोजीसह) असे संकेत आहेत की दुर्भावनापूर्ण बॅश स्क्रिप्टचे काही भाग मोठ्या भाषा मॉडेल्सच्या मदतीने तयार केले गेले आहेत. आक्रमण टूलिंगच्या निर्मितीला गती देण्यासाठी जनरेटिव्ह एआयचा कसा गैरवापर केला जाऊ शकतो याचे हे एक स्पष्ट उदाहरण आहे.
शाई-हुलुद २.०: प्रीइंस्टॉल तोडफोड आणि विध्वंसक फॉलबॅक
नंतरच्या लाटेला, ज्याला Shai-Hulud 2.0 असे नाव देण्यात आले, त्याने इंस्टॉलेशननंतरच्या टप्प्याऐवजी प्री-इंस्टॉलेशन टप्प्यात अंमलात आणण्यासाठी रणनीती बदलल्या, ज्यामुळे डेव्हलपर मशीन आणि CI/CD सर्व्हरवर त्याची पोहोच मोठ्या प्रमाणात वाढली. प्रीइंस्टॉल स्क्रिप्ट्स लाइफसायकलमध्ये अगदी आधी चालतात आणि अधिक सिस्टमवर ट्रिगर होऊ शकतात.
या प्रकारातील सर्वात चिंताजनक बाब म्हणजे फॉलबॅक यंत्रणा: जर मालवेअर उपयुक्त क्रेडेन्शियल्स चोरण्यात किंवा संप्रेषण चॅनेल स्थापित करण्यात अयशस्वी झाला, तर त्याने विध्वंसक वर्तनाचा प्रयत्न केला जसे की पीडितेचे पुसणे home डिरेक्टरी. त्या निर्देशिकेखालील सध्याच्या वापरकर्त्याच्या मालकीच्या कोणत्याही लिहिण्यायोग्य फायली ओव्हरराइट करून आणि सुरक्षितपणे हटवून त्याने असे केले.
पेलोड उपयुक्त बन इंस्टॉलर स्क्रिप्ट्सच्या रूपात वेषात होता जसे की setup_bun.js आणि एक प्रचंड, खूप गोंधळलेले bun_environment.js ९ एमबी पेक्षा जास्त आकाराची फाइल. लक्ष वेधून घेऊ नये म्हणून, मुख्य लॉजिक पार्श्वभूमी प्रक्रियेत वळवले गेले जेणेकरून मूळ स्थापना सामान्यपणे पूर्ण होईल असे दिसून येईल.
या मोहिमेद्वारे गोळा केलेले प्रमाणपत्रे आणि गुपिते पुन्हा गिटहबमध्ये प्रसारित करण्यात आली, यावेळी "Sha1‑Hulud: The Second Coming" म्हणून वर्णन केलेल्या रिपॉझिटरीजमध्ये, आणि मालवेअरने गिटहब अॅक्शन वर्कफ्लो तयार करून टिकून राहण्याचा प्रयत्न केला जसे की discussion.yaml. त्या वर्कफ्लोने संक्रमित मशीन्सना सेल्फ-होस्टेड रनर्स म्हणून नोंदणीकृत केले, ज्यामुळे हल्लेखोर फक्त चर्चा उघडून मनमानी कमांड ट्रिगर करू शकत होते.
एकूण व्याप्ती प्रचंड होती, जी हजारो रिपॉझिटरीज आणि शेकडो गिटहब अकाउंट्समधील २५ हजारांहून अधिक दुर्भावनापूर्ण रिपॉझिटरीजना स्पर्श करते, ज्यात लोकप्रिय लायब्ररींचा समावेश आहे. @ctrl/tinycolor लाखो साप्ताहिक डाउनलोडसह. क्लाउड प्लॅटफॉर्मसाठी क्रेडेन्शियल चोरीचा उद्देश असल्याने, त्याचा परिणाम डेटा चोरी आणि रॅन्समवेअरपासून क्रिप्टोमायनिंग आणि व्यापक सेवा व्यत्ययापर्यंत असू शकतो.
एनपीएम पुरवठा साखळीतील जंतांविरुद्ध तात्काळ बचावात्मक कारवाई
शाई-हुलुद सारख्या मोहिमांना तोंड देताना, घटना प्रतिसादकर्ते सर्व डेव्हलपर-स्तरीय क्रेडेन्शियल्स - एनपीएम टोकन, गिटहब पीएटी, एसएसएच की आणि डेव्हलपर मशीन किंवा बिल्ड सर्व्हरवर वापरल्या जाणाऱ्या कोणत्याही क्लाउड एपीआय की - त्वरित फिरवण्याची शिफारस करतात. समजा एखाद्या बिघाड झालेल्या वर्कस्टेशनवर असलेले काहीही लीक झाले असेल..
सर्व प्रकल्पांमध्ये संपूर्ण अवलंबित्व ऑडिट आवश्यक आहे, जसे की साधनांचा वापर करून npm audit, SBOM इन्व्हेंटरीज किंवा व्यावसायिक SCA प्लॅटफॉर्मवर प्रभावित पॅकेज नावे आणि आवृत्त्यांचा कोणताही वापर शोधण्यासाठी. फायली लॉक करा (package-lock.json, yarn.lock) प्रत्यक्षात काय स्थापित केले होते याचे खरे सत्य सांगा.
विकसकांनी त्यांच्या गिटहब खात्यांमध्ये विचित्र सार्वजनिक भांडार (विशेषतः शाई-हुलुद यांच्या नावावरून), संशयास्पद कमिट किंवा गिटहब अॅक्शन वर्कफ्लोमध्ये अनपेक्षित बदलांसाठी तपासणी करावी ज्यामुळे अनधिकृत धावपटू नोंदणीकृत असू शकतात. कोणत्याही विसंगतींना तडजोडीची चिन्हे मानली पाहिजेत.
सर्व डेव्हलपर खात्यांमध्ये मल्टी-फॅक्टर ऑथेंटिकेशन लागू करणे - शक्य असेल तिथे फिशिंग-प्रतिरोधक पद्धतींसह - हे आणखी एक गैर-तडजोड करण्यायोग्य पाऊल आहे. ते जोखीम दूर करत नाही, परंतु क्रेडेन्शियल-चोरी मोहिमांचा गैरवापर करण्याचा प्रयत्न करणाऱ्या हल्लेखोरांसाठी ते मर्यादा वाढवते.
प्रगत धोका-शिकार प्लॅटफॉर्म वापरणाऱ्या संस्था विशिष्ट व्यक्तींना कॉल करणे यासारख्या ज्ञात निर्देशकांचा शोध घेण्यासाठी कस्टम क्वेरीजचा वापर देखील करू शकतात. webhook.site URL, सारख्या फायलींची उपस्थिती shai-hulud-workflow.yml किंवा संशयास्पदरीत्या मोठे bun_environment.js डेव्हलपर मशीनवर लिहिलेल्या फायली. टेलीमेट्रीद्वारे लवकर ओळखल्याने राहण्याचा वेळ नाटकीयरित्या कमी होऊ शकतो.
विक्रेते कसे प्रतिसाद देत आहेत: शोध आणि प्रतिबंध क्षमता
सुरक्षा विक्रेते एंडपॉइंट आणि नेटवर्कमध्ये npm-केंद्रित पुरवठा-साखळी हल्ले शोधण्यासाठी आणि अवरोधित करण्यासाठी त्यांची उत्पादने अद्यतनित करत आहेत. यामध्ये ज्ञात दुर्भावनापूर्ण पेलोड्ससाठी स्वाक्षऱ्या आणि इंस्टॉलेशन दरम्यान असामान्य प्रक्रिया किंवा फाइल क्रियाकलापांसाठी वर्तणुकीय मॉडेल समाविष्ट आहेत.
प्रगत सँडबॉक्सिंग आणि मालवेअर विश्लेषण सेवा शाई-हुलुद मोहिमांमध्ये वापरल्या जाणाऱ्या अस्पष्ट जावास्क्रिप्ट पेलोड्सना फ्लॅग करू शकतात. जेव्हा ही साधने संशयास्पद पोस्ट-इंस्टॉल किंवा प्रीइंस्टॉल स्क्रिप्ट्स क्रेडेन्शियल डिस्कव्हरी किंवा फाइल नष्ट करण्याचा प्रयत्न करताना दिसतात तेव्हा ते अलर्ट देतात किंवा अंमलबजावणी अवरोधित करतात.
प्रगत धोका प्रतिबंध आणि URL फिल्टरिंगसह पुढील पिढीचे फायरवॉल फिशिंग किंवा एक्सफिल्ट्रेशनमध्ये वापरल्या जाणाऱ्या दुर्भावनापूर्ण डोमेनचा प्रवेश अवरोधित करून मदत करू शकतात - उदाहरणार्थ, बनावट npm समर्थन डोमेन किंवा विशिष्ट webhook.site मालवेअरमध्ये हार्ड-कोड केलेले एंडपॉइंट्स. या URL ला दुर्भावनापूर्ण म्हणून वर्गीकृत केल्याने पेलोड चोरीला गेलेला डेटा यशस्वीरित्या पाठवण्यापासून प्रतिबंधित करते..
एंडपॉइंट डिटेक्शन अँड रिस्पॉन्स (EDR/XDR) एजंट प्रक्रिया वर्तन, स्क्रिप्ट अंमलबजावणी, असामान्य फाइल निर्मिती (जसे की जायंट) यांचे निरीक्षण करून योगदान देतात. bun_environment.js फाइल्स) आणि संशयास्पद कमांड लाईन्स. ते वर्तणुकीच्या नियमांवर आधारित ज्ञात हॅश आणि पूर्वी न पाहिलेले प्रकार दोन्ही थांबवू शकतात.
क्लाउड-नेटिव्ह अॅप्लिकेशन सिक्युरिटी प्लॅटफॉर्म वाढत्या प्रमाणात पुरवठा-साखळी-केंद्रित वैशिष्ट्ये जोडत आहेत जसे की रिअल-टाइम SBOM दृश्यमानता, ओपन-सोर्स घटकांसाठी जोखीम स्कोअरिंग आणि CI/CD चुकीचे कॉन्फिगरेशन तपासणी (गहाळ लॉक फाइल्स, असुरक्षित) npm install वापर, पिन केलेल्या कमिट हॅशशिवाय गिट-आधारित अवलंबित्वे, अटॅक पृष्ठभागाचा विस्तार करणारे न वापरलेले अवलंबित्वे). या नियंत्रणांमुळे दुर्भावनापूर्ण किंवा तपास न केलेल्या पॅकेज आवृत्त्यांना उत्पादन बिल्डमध्ये जाणे कठीण होते.
दुर्भावनापूर्ण npm पॅकेजेसबद्दल काळजीत असलेल्या विकासकांसाठी व्यावहारिक सवयी
जर तुम्ही JS/TS मध्ये नवीन असाल आणि प्रत्येक वेळी npm पॅकेज इन्स्टॉल करताना अस्वस्थ वाटत असाल, तर तुम्ही एकटे नाही आहात - परंतु काही विशिष्ट सवयी आहेत ज्या तुम्ही तुमची उत्पादकता गोठवल्याशिवाय जोखीम कमी करण्यासाठी अवलंबू शकता. त्यांना वैयक्तिक सुरक्षा चेकलिस्ट म्हणून विचारात घ्या.
प्रथम, प्राधान्य द्या चांगल्या देखभाल इतिहासासह सुस्थापित पॅकेजेस, सक्रिय इश्यू ट्रॅकर आणि व्यापक वापर, विशेषतः HTTP क्लायंट, लॉगिंग किंवा क्रिप्टो सारख्या मुख्य पायाभूत सुविधांसाठी. ते सुरक्षिततेची हमी देत नाही, परंतु याचा अर्थ सहसा कोडवर अधिक लक्ष असते आणि काहीतरी चूक झाल्यास जलद शोध घेणे.
लहान किंवा अस्पष्ट पॅकेजेससाठी (विशेषतः ज्यांचे जवळजवळ डाउनलोड होत नाही), त्यांची अधिक बारकाईने तपासणी करा: npm पेज, रिपॉझिटरी लिंक्स, शेवटची प्रकाशन तारीख आणि मेंटेनर स्पष्टपणे ओळखता येतो का ते तपासा. जर npm पॅकेज GitHub रेपोशी लिंक करत असेल ज्यामध्ये प्रत्यक्षात प्रकाशित कोड नसेल किंवा तरीही असंबंधित अपस्ट्रीमकडे निर्देश करत असेल तर सावधगिरी बाळगा.
शक्य असेल तिथे, प्रकाशित पॅकेज टारबॉलची तपासणी करा, फक्त सोर्स रिपॉझिटरीच नाही, कारण हल्लेखोर गिटहबवर दिसणाऱ्या बिल्डपेक्षा वेगळ्या बिल्डला npm वर पाठवू शकतात. साधने जसे की npm pack मॅन्युअल पुनरावलोकनासह (जरी कोड ट्रान्सपाइल किंवा मिनिफाइड केला असला तरीही) विचित्र इंस्टॉल स्क्रिप्ट्स, अस्पष्ट ब्लॉब्स किंवा अनपेक्षित नेटवर्क कॉल्ससारखे स्पष्ट लाल झेंडे उघड करू शकतात.
फक्त टाइप डेफिनेशन आणि मिनिफाइड जावास्क्रिप्ट पाठवणाऱ्या टाइपस्क्रिप्ट लायब्ररींसाठी, जलद मॅन्युअल ऑडिट करणे कठीण आहे, म्हणून तुम्ही त्यांचा वापर फक्त कठोर सँडबॉक्सिंगच्या मागे करण्याचा किंवा जर ते तुमच्या स्टॅकसाठी महत्त्वाचे ठरले तर स्त्रोतापासून फोर्क आणि रीबल्ड करण्याचा निर्णय घेऊ शकता. काही सुरक्षा-संवेदनशील संदर्भांमध्ये, संघ खरोखरच सखोल पुनरावलोकनानंतर खाजगी नोंदणींमध्ये अवलंबित्वे फोर्क करण्याचा पर्याय निवडतात.
अग्निशमन दलापेक्षा एनपीएम सुरक्षा ही एक दिनचर्या बनवा: धावा npm audit नियमितपणे, न वापरलेले अवलंबित्व साफ करा, तुमच्या लॉक फाइल्स वचनबद्ध ठेवा आणि तुमच्या CI/CD मध्ये SCA/SAST चेक एकत्रित करा. मजबूत खाते स्वच्छता आणि गुप्त व्यवस्थापनासह, या पद्धती तुम्हाला अभेद्य बनवत नाहीत, परंतु यादृच्छिक npm इंस्टॉलेशन तुमच्या सिस्टमला शांतपणे तडजोड करेल याची शक्यता ते लक्षणीयरीत्या कमी करतात.