npm ईआरआर! 404 नहीं मिला: Event-stream@3.3.6


85

मैं अपनी परियोजना को तैनात करने की कोशिश कर रहा हूं और मुझे अचानक यह त्रुटि मिल रही है।

npm ईआरआर! 404 नहीं मिला: Event-stream@3.3.6


1
npm ने इस पैकेज को हटा दिया है। check github.com/webpack/webpack-cli/issues/698
प्रयाग सी। पटेल 10

1
इस सवाल पर मेटा पर चर्चा की गई थी: meta.stackoverflow.com/questions/378071/…
रोमन

सिर्फ पैकेज-लॉक.जसन फ़ाइल को डिलीट करना और फिर npm इंस्टॉल ठीक काम करता है।
जितेंद्र पवार

जवाबों:


189

tldr;

पवित्र गाय! यह पता चलता है कि इवेंट-स्ट्रीम पैकेज में एक भेद्यता थी जिसने एक हैकर को बिटकॉइन चोरी करने की अनुमति दी थी।

इसे ठीक करने के लिए आपको अपना event-streamपैकेज अपडेट करना होगा ।

  1. node_modulesफ़ोल्डर हटाएँ ।
  2. package-lock.jsonफ़ाइल हटाएँ ।
  3. दौड़ो 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 ऑडिट चलाकर असुरक्षित निर्भरता है। यदि आपने इस इवेंट-स्ट्रीम के प्रभावित संस्करण को स्थापित किया है, तो हम अनुशंसा करते हैं कि आप जल्द से जल्द बाद के संस्करण में अपडेट करें।


7
या बस npm list event-streamकिसी भी शीर्ष स्तर के पैकेज को अपडेट करें और अपडेट करें
फिल

4
पैकेज-लॉक को हटाना एक बुरे विचार की तरह लगता है। कृपया एनपीएम ब्लॉग पोस्ट का लिंक साझा करें।
प्रोनबर्ड

वाह। क्या आपके द्वारा उद्धृत लेख का कोई लिंक है? EDIT - यह पाया गया: blog.npmjs.org/post/180565383195/…
friederbluemle

7

वास्तव में हमें उन सभी पैकेजों को अपडेट करने की आवश्यकता नहीं है जो इवेंट-stream@3.3.6 पर निर्भर करते हैं।

आप इसे खोल सकते हैं package-lock.json, सभी घटना-धारा संदर्भों को हटा सकते हैं और npm installफिर से कॉल कर सकते हैं। यह और तेज होगा।

उसके बाद, npm shrinkwrap && mv npm-shrinwrap.json package-lock.jsonकेवल घटना-स्ट्रीम संदर्भों को अपडेट करना चाहिए और संपूर्ण फ़ाइल को नहीं


4

नीचे दिए गए तरीकों का पालन करें:

  1. नोड_मॉड्यूल और पैकेज_लॉक.जसन फ़ाइलों को हटाएं

  2. Npm सूची इवेंट-स्ट्रीम चलाएँ

  3. Npm ऑडिट चलाएं
  4. Npm कैश सत्यापन चलाएँ
  5. एनपीएम इंस्टॉल करें
  6. भागो जोड़ो। (आवश्यक फाइलें जोड़ें)
  7. रन कमिट कमिट (अपने बदलाव करें)
  8. रन पुश पुश (अपना कोड पुश करें)

3

मैं इस समस्या को निम्न चरणों से हल करता हूं:

  1. इस त्रुटि के लिए /node_cache/_logs/xxxx-xx-xxx-debug.log में अपनी नवीनतम लॉग खोलें
  2. 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

  1. इस स्थिति में, रूट नोडमॉन है, इसलिए आप इसे ठीक कर सकते हैं: npm स्थापित करें nodemon@1.18.4
  2. npm अब सफलतापूर्वक स्थापित करें

2

मैंने npm-run-all को 4.1.3 से 4.1.5 तक package.json में अपडेट किया है (लॉक फाइल इवेंट स्ट्रीम में निकालें) फिर npm इंस्टॉल करें।


2

जैसा कि टिप्पणियों में उल्लेख किया गया है, अंतर्निहित मुद्दा था package-lock.json(तालाबंदी) में एक पदावनत पैकेज था। लॉकफ़ाइल को हटाने और निर्भरता को फिर से स्थापित करने से समस्या हल हो गई।

ऐसा करने का सबसे तेज़ तरीका ये 2 चरण हैं:

  • package-lock.jsonफ़ाइल को हटा दें
  • प्रकार npm i(या npm install) निर्भरता को फिर से स्थापित करने के लिए
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.