मैं अपनी परियोजना को तैनात करने की कोशिश कर रहा हूं और मुझे अचानक यह त्रुटि मिल रही है।
npm ईआरआर! 404 नहीं मिला: Event-stream@3.3.6
मैं अपनी परियोजना को तैनात करने की कोशिश कर रहा हूं और मुझे अचानक यह त्रुटि मिल रही है।
npm ईआरआर! 404 नहीं मिला: Event-stream@3.3.6
जवाबों:
tldr;
पवित्र गाय! यह पता चलता है कि इवेंट-स्ट्रीम पैकेज में एक भेद्यता थी जिसने एक हैकर को बिटकॉइन चोरी करने की अनुमति दी थी।
इसे ठीक करने के लिए आपको अपना event-stream
पैकेज अपडेट करना होगा ।
node_modules
फ़ोल्डर हटाएँ ।package-lock.json
फ़ाइल हटाएँ ।npm install
।इससे आपके पैकेज को एक सुरक्षित संस्करण में अपडेट होना चाहिए और आपको जाने के लिए अच्छा होना चाहिए।
और यहाँ एनपीएम ब्लॉग की आधिकारिक प्रतिक्रिया है:
घटना-धारा की घटना के बारे में विवरण यह उस घटना-धारा की घटना का विश्लेषण है जिसके बारे में आप में से कई इस सप्ताह के शुरू में अवगत हुए थे। npm परिचालन संबंधी चिंताओं और मुद्दों को संबोधित करने के लिए तुरंत कार्य करता है जो हमारे समुदाय की सुरक्षा को प्रभावित करते हैं, लेकिन हम आमतौर पर घटनाओं पर चर्चा करने से पहले अधिक गहन विश्लेषण करते हैं- हमें पता है कि आप इंतजार कर रहे हैं।
26 नवंबर की सुबह, एनपीएम की सुरक्षा टीम को एक दुर्भावनापूर्ण पैकेज के बारे में सूचित किया गया था जिसने एक लोकप्रिय npm पैकेज इवेंट-स्ट्रीम में अपना रास्ता बना लिया था। मैलवेयर को ट्राई करने के बाद, npm सिक्योरिटी ने रजिस्ट्री से फ्लैटमैप-स्ट्रीम और ईवेंट-स्ट्रीम 3.3.6 को हटाकर और आगे के दुरुपयोग को रोकने के लिए इवेंट-स्ट्रीम पैकेज का स्वामित्व ले लिया।
दुर्भावनापूर्ण पैकेज फ्लैटमैप-स्ट्रीम का संस्करण 0.1.1 था। इस पैकेज को 9 सितंबर, 2018 को 3.3.6 संस्करण में एक नए अनुचर द्वारा इवेंट-स्ट्रीम पैकेज के प्रत्यक्ष निर्भरता के रूप में जोड़ा गया था। ईवेंट-स्ट्रीम पैकेज का व्यापक रूप से उपयोग किया जाता है, लेकिन दुर्भावनापूर्ण कोड किसी ऐसी कंपनी में डेवलपर्स को लक्षित करता है, जिनके पास एक बहुत ही विशिष्ट विकास वातावरण सेटअप था: किसी अन्य वातावरण में पेलोड को चलाने का कोई प्रभाव नहीं पड़ता है। इस विशिष्ट लक्ष्यीकरण का अर्थ है कि, अंततः, अधिकांश डेवलपर्स प्रभावित नहीं होंगे, भले ही उन्होंने गलती से दुर्भावनापूर्ण मॉड्यूल स्थापित किया हो।
इंजेक्ट कोड कोपा एप्लिकेशन को लक्षित करता है। जब कोपे में एक डेवलपर अपनी रिलीज़ बिल्ड स्क्रिप्ट में से एक चलाता है, तो परिणामस्वरूप कोड को एप्लिकेशन में बंडल होने से पहले संशोधित किया जाता है। कोड को 100 से अधिक बिटकॉइन या 1000 बिटकॉइन कैश के बैलेंस वाले खातों से खाते के विवरण और निजी कुंजी को काटने के लिए डिज़ाइन किया गया था।
कोपे की शुरुआती प्रतिक्रिया यह थी कि इस दुर्भावनापूर्ण कोड वाले किसी भी बिल्ड को जनता के लिए जारी नहीं किया गया था, लेकिन अब हमें कोपे की पुष्टि हुई है कि "दुर्भावनापूर्ण कोड 5.1.0 के माध्यम से 5.0.2 संस्करणों पर तैनात किया गया था।"
यह हमला एक सामाजिक इंजीनियरिंग हमले के रूप में शुरू हुआ। हमलावर, एक अनुरक्षक के रूप में प्रस्तुत करते हुए, घटना-धारा मॉड्यूल की अनुरक्षण पर कब्जा कर लिया।
तकनीकी विवरण यहां कुछ तकनीकी विवरण दिए गए हैं, जिनके बारे में हम जानते हैं, जिनमें से आप इसमें रुचि रखते हैं।
इंजेक्शन कोड:
एईएस एन्क्रिप्टेड डेटा में एक फ़ाइल से एक परीक्षण स्थिरता के रूप में प्रच्छन्न। एनपीएम पैकेज का विवरण पकड़ा जो इसे आयात करता था, स्वचालित रूप से सेट किए गए परिवेश चर का उपयोग करके पैकेज विवरण का उपयोग करता था एक प्रच्छन्न फ़ाइल से खींचे गए डेटा का एक हिस्सा डिक्रिप्ट करने के लिए डिक्रिप्ट किए गए डेटा एक मॉड्यूल का हिस्सा था, जिसे तब मेमोरी में संकलित किया गया था और निष्पादित किया गया था।
इस मॉड्यूल ने निम्नलिखित क्रियाएं कीं:
अस्वीकृत फ़ाइल से डेटा का एक और हिस्सा एन्क्रिप्ट किया गया है, पहली डिक्रिप्टेड चंक से दूसरी डिक्रिप्टेड चंक के अंत तक एक छोटी, टिप्पणी की गई उपसर्ग को अमान्य जेएस से कोड के समवर्ती ब्लॉक को बदलने के लिए मामूली डिकोडिंग कार्य निष्पादित करते हैं जो मान्य जेएस को मानते हैं (हम मानते हैं कि यह था। डायनेमिक विश्लेषण टूल द्वारा पता लगाने से बचने के लिए) जेएस के इस संसाधित ब्लॉक को एक निर्भरता में संग्रहीत फ़ाइल से बाहर लिखा था जिसे बिल्ड स्क्रिप्ट द्वारा पैक किया जाएगा: कोड का हिस्सा जो लिखा गया था वह वास्तविक दुर्भावनापूर्ण कोड था, जिसे चलाने का इरादा था कोपे के अंतिम उपयोगकर्ताओं के स्वामित्व वाले उपकरणों पर।
यह कोड निम्नलिखित कार्य करेगा:
वर्तमान परिवेश का पता लगाएं: मोबाइल / कॉर्डोबा / इलेक्ट्रॉन पीड़ित के खाते पर बिटकॉइन और बिटकॉइन कैश बैलेंस की जांच करें यदि वर्तमान शेष 100 बिटकॉइन, या 1000 बिटकॉइन कैश से अधिक था: पीड़ित के खाते के डेटा को पूर्ण हार्वेस्ट पीड़ित के निजी कुंजी को हैक करें 111.90.151.134 पर चल रही संग्रह सेवा में पीड़ित के खाते के डेटा / निजी कुंजियों को भेजें। कोपे ऐप के उपयोगकर्ताओं के लिए, बिटपे सलाह देता है, "यदि आप 5.0.2 से 5.1.0 तक किसी भी संस्करण का उपयोग कर रहे हैं, तो आपको कोपे ऐप को चलाना या खोलना नहीं चाहिए।"
Npm उपयोगकर्ताओं के लिए, आप जाँच सकते हैं कि क्या आपके प्रोजेक्ट में npm ऑडिट चलाकर असुरक्षित निर्भरता है। यदि आपने इस इवेंट-स्ट्रीम के प्रभावित संस्करण को स्थापित किया है, तो हम अनुशंसा करते हैं कि आप जल्द से जल्द बाद के संस्करण में अपडेट करें।
npm list event-stream
किसी भी शीर्ष स्तर के पैकेज को अपडेट करें और अपडेट करें
वास्तव में हमें उन सभी पैकेजों को अपडेट करने की आवश्यकता नहीं है जो इवेंट-stream@3.3.6 पर निर्भर करते हैं।
आप इसे खोल सकते हैं package-lock.json
, सभी घटना-धारा संदर्भों को हटा सकते हैं और npm install
फिर से कॉल कर सकते हैं। यह और तेज होगा।
उसके बाद, npm shrinkwrap && mv npm-shrinwrap.json package-lock.json
केवल घटना-स्ट्रीम संदर्भों को अपडेट करना चाहिए और संपूर्ण फ़ाइल को नहीं
नीचे दिए गए तरीकों का पालन करें:
नोड_मॉड्यूल और पैकेज_लॉक.जसन फ़ाइलों को हटाएं
Npm सूची इवेंट-स्ट्रीम चलाएँ
मैं इस समस्या को निम्न चरणों से हल करता हूं:
event-stream
उदाहरण के लिए, पत्ती की जड़ का पता लगाएं :
45 silly saveTree +-- nodemon@1.18.4
45 silly saveTree | +-- chokidar@2.0.4
45 silly saveTree | +-- pstree.remy@1.1.0
45 silly saveTree | | `-- ps-tree@1.2.0
45 silly saveTree | | `-- event-stream@3.3.6
45 silly saveTree | | +-- duplexer@0.1.1
45 silly saveTree | | +-- from@0.1.7
45 silly saveTree | | +-- pause-stream@0.0.11
45 silly saveTree | | `-- split@0.3.3
मैंने npm-run-all को 4.1.3 से 4.1.5 तक package.json में अपडेट किया है (लॉक फाइल इवेंट स्ट्रीम में निकालें) फिर npm इंस्टॉल करें।
जैसा कि टिप्पणियों में उल्लेख किया गया है, अंतर्निहित मुद्दा था package-lock.json
(तालाबंदी) में एक पदावनत पैकेज था। लॉकफ़ाइल को हटाने और निर्भरता को फिर से स्थापित करने से समस्या हल हो गई।
ऐसा करने का सबसे तेज़ तरीका ये 2 चरण हैं:
package-lock.json
फ़ाइल को हटा देंnpm i
(या npm install
) निर्भरता को फिर से स्थापित करने के लिए