इस लेख में (4)
npm पैकेज जिन पर आपके प्रोजेक्ट भरोसा करते हैं, अब हमले का ज़रिया बन गए हैं
दो अलग-अलग लहरें जो सितंबर 2025 में आईं और जिन्होंने भरोसेमंद JavaScript लाइब्रेरीज़ को क्रिप्टो चोरी और खुद फैलने वाले वर्म्स के वाहन में बदल दिया
दो अरब, साठ करोड़ डाउनलोड प्रति सप्ताह। यह कोई लक्ष्य नहीं है। यह एक विस्फोट की त्रिज्या है। जब हमलावरों ने 8 सितंबर, 2025 को एक विश्वसनीय npm मेंटेनर के अकाउंट से समझौता किया, तो उन्हें npm के इंफ्रास्ट्रक्चर में कोई चालाक zero-day खोजने या किसी क्रिप्टोग्राफिक प्रिमिटिव को रिवर्स-इंजीनियर करने की ज़रूरत नहीं पड़ी। उन्होंने एक फिशिंग ईमेल भेजा। किसी ने क्लिक किया। बाकी सब अपने आप हो गया — पृथ्वी के हर टाइम ज़ोन में चल रही CI/CD पाइपलाइनों की गति से।
8 सितंबर की लहर: एक क्रेडेंशियल, अठारह पैकेज, दो घंटे का एक्सपोज़र
Upwind के विस्तृत घटना विश्लेषण के अनुसार, पहले दुर्भावनापूर्ण पैकेज संस्करण 8 सितंबर, 2025 को UTC 13:16 पर npm पर दिखाई दिए। लगभग UTC 15:20 तक, समुदाय के सदस्यों ने संदिग्ध कोड देखा और GitHub पर अलर्ट उठाए। मेंटेनर्स ने दो घंटे के भीतर समझौता किए गए पैकेजों को वापस कर दिया। एक कम्युनिटी-संचालित इकोसिस्टम के लिए यह प्रतिक्रिया समय वाकई तेज़ था — और फिर भी यह उतना मायने नहीं रखता जितना आप सोच सकते हैं, क्योंकि प्रश्न में शामिल पैकेज कोई अस्पष्ट उपकरण नहीं थे।
Sweet Security की रिपोर्ट के अनुसार, जो Aikido Security की प्रारंभिक खोज का हवाला देती है, समझौता किए गए पैकेजों ने सामूहिक रूप से 2.6 अरब साप्ताहिक डाउनलोड का हिसाब दिया, जिससे यह उस मीट्रिक के हिसाब से इतिहास का सबसे बड़ा npm समझौता बन गया। Brian Krebs ने दायरे को संक्षेप में बताया: debug और chalk सहित 18 लोकप्रिय JavaScript पैकेज हाईजैक किए गए और क्रिप्टोकरेंसी चुराने के लिए तैयार किए गए।
हमले की प्रारंभिक पहुँच की कहानी ठीक इसलिए शिक्षाप्रद है क्योंकि यह कोई चमकदार कारनामा नहीं है। हमलावरों ने npm को नहीं तोड़ा। उन्होंने एक इंसान से समझौता किया। एक मेंटेनर के फिश किए गए क्रेडेंशियल ने उन्हें उन लाइब्रेरीज़ के नए, दुर्भावनापूर्ण संस्करण पुश करने की क्षमता दे दी जो अनगिनत प्रोडक्शन एप्लिकेशन की नींव में बैठी हैं। NowSecure ने बताया कि संभावित डाउनस्ट्रीम एक्सपोज़र मोबाइल एप्लिकेशन तक भी फैला है, क्योंकि कई मोबाइल डेवलपमेंट पाइपलाइन उसी npm इकोसिस्टम से खींचती हैं। इंजेक्ट किए गए कोड ने क्रिप्टोकरेंसी वॉलेट और ब्लॉकचेन ट्रांजेक्शन को निशाना बनाया, जिससे वित्तीय प्रेरणा तत्काल और स्पष्ट हो गई।
यहाँ संरचनात्मक सबक — जो हर डेवलपर और सुरक्षा-जागरूक छात्र को आत्मसात करना चाहिए — डिपेंडेंसी के गणित में है। cyberdesserts.com के npm सुरक्षा विश्लेषण में उद्धृत डेटा के अनुसार, औसत npm प्रोजेक्ट 79 ट्रांज़िटिव डिपेंडेंसी खींचता है। आप अपनी सीधी डिपेंडेंसी की जाँच करते हैं। आप शायद ही कभी अपनी डिपेंडेंसी की डिपेंडेंसी की जाँच करते हैं, या उनकी डिपेंडेंसी की डिपेंडेंसी की। वह पुनरावर्ती अंधा धब्बा ही वह है जिस पर हमलावर भरोसा कर रहे हैं।
15 सितंबर की लहर: जब पेलोड चलना सीख जाता है
सात दिन बाद, खतरे वाले कारक कुछ और महत्वाकांक्षी लेकर लौटे। Trend Micro के शोध के अनुसार, 15 सितंबर को, npm रिपॉजिटरी ने एक दूसरे चल रहे सप्लाई चेन हमले का अनुभव किया, जो फिर से मेंटेनर अकाउंट के खिलाफ एक लक्षित फिशिंग अभियान के ज़रिए शुरू किया गया था। इस लहर ने सार्थक रूप से अलग व्यवहार और लक्ष्यों के साथ दो दस्तावेज़ीकृत पेलोड पेश किए, और इस अंतर को समझना उन सभी के लिए उपयोगी है जो इस मानसिक मॉडल को बना रहे हैं कि सप्लाई चेन हमले कैसे विकसित होते हैं।
पहला पेलोड, जिसे Cryptohijacker कहा जाता है, वेब API को हाईजैक करके और नेटवर्क ट्रैफिक में हेरफेर करके गुपचुप तरीके से क्रिप्टोकरेंसी संपत्तियों को डायवर्ट करता था। यह वित्तीय रूप से केंद्रित है और चुप रहने के लिए डिज़ाइन किया गया है। Trend Micro की टेलीमेट्री पुष्टि करती है कि उत्तरी अमेरिका और यूरोप के संगठन Cryptohijacker से सबसे अधिक प्रभावित थे।
दूसरा पेलोड, Shai-Hulud वर्म, चिंता की पूरी तरह से एक अलग श्रेणी है। Trend Micro द्वारा भी दस्तावेज़ीकृत, Shai-Hulud समझौता किए गए पैकेजों के ज़रिए डिलीवर किया जाता है, क्लाउड सेवा टोकन चुराता है, सीक्रेट-स्कैनिंग टूल तैनात करता है, और अतिरिक्त अकाउंट में स्वचालित रूप से फैलता है। Trend Micro की रिपोर्टिंग तक, वास्तविक दुनिया में Shai-Hulud वर्म का कोई पता नहीं चला था — यह सार्थक संदर्भ है: क्षमता मौजूद है, तंत्र समझा जा चुका है, और रक्षकों के पास तैयारी की एक खिड़की है।
Splunk की थ्रेट रिसर्च टीम ने उपयोगी सटीकता के साथ व्यापक पैटर्न को तैयार किया: सितंबर 2025 के Shai-Hulud हमले ने एक समन्वित सप्लाई चेन समझौते में 500 से अधिक npm पैकेज को संक्रमित किया और, उनके आकलन में, सप्लाई चेन सुरक्षा में एक जलविभाजक पल को चिह्नित किया, ऐसी तकनीकों का प्रदर्शन किया जिनके लिए रक्षकों को अब मानक प्रतिद्वंद्वी ट्रेडक्राफ्ट के रूप में तैयार रहना होगा। 8 सितंबर की घटना (18 पैकेज) और 15 सितंबर की लहर (500 से अधिक पैकेज) के बीच पैमाने का अंतर दर्शाता है कि खतरे वाले कारकों ने प्रारंभिक सफलता पर कितनी तेज़ी से पुनरावृत्ति की।
npm इकोसिस्टम का आकार क्या संभव (और कठिन) बनाता है
यह समझने के लिए कि ये घटनाएं JavaScript समुदाय से परे क्यों महत्व रखती हैं, इकोसिस्टम के पैमाने की सराहना करना मददगार है। Splunk की सुरक्षा टीम नोट करती है कि npm में 2.5 मिलियन से अधिक पैकेज हैं और अरबों साप्ताहिक डाउनलोड प्रक्रिया करता है, जो उनके अनुसार स्केल पर सॉफ्टवेयर सप्लाई चेन से समझौता करने के इच्छुक हमलावरों के लिए एक अप्रतिरोध्य लक्ष्य का प्रतिनिधित्व करता है। गणित, जैसा कि Splunk कहता है, सीधा है: एक लोकप्रिय पैकेज से समझौता करें और आप संभावित रूप से हज़ारों डाउनस्ट्रीम एप्लिकेशन और उनके प्रोडक्शन वातावरण तक पहुँच प्राप्त करते हैं।
हमले की सतह वेब एप्लिकेशन से परे फैली हुई है। NowSecure ने विशेष रूप से मोबाइल एप्लिकेशन पर संभावित प्रभाव को रेखांकित किया, क्योंकि मोबाइल डेवलपमेंट पाइपलाइन नियमित रूप से npm पैकेज को बिल्ड डिपेंडेंसी के रूप में उपभोग करती हैं। एक समझौता किए गए बिल्ड टूल को अंतिम उपयोगकर्ताओं तक सीधे पहुँचने की आवश्यकता नहीं है; इसे केवल एक बार बिल्ड प्रक्रिया को छूने की ज़रूरत है।
Splunk के विश्लेषण ने एक विशिष्ट तंत्र की भी पहचान की जो npm को विशेष रूप से शोषण योग्य बनाती है: लाइफसाइकल हुक। npm के preinstall, install, और postinstall हुक पैकेज इंस्टॉलेशन के दौरान किसी भी उपयोगकर्ता प्रॉम्प्ट या पुष्टि के बिना स्वचालित रूप से कोड निष्पादित करते हैं। एक दुर्भावनापूर्ण postinstall स्क्रिप्ट उसी क्षण चलती है जब कोई डेवलपर npm install टाइप करता है। यह कोई अस्पष्ट एज केस नहीं है; यह मानक npm कार्यक्षमता है जिसे खतरे वाले कारकों ने विश्वसनीय रूप से हथियार बनाना सीख लिया है।
एक शिक्षार्थी और निर्माता के रूप में आपके लिए इसका क्या अर्थ है
यदि आप सॉफ्टवेयर डेवलपमेंट सीख रहे हैं, सुरक्षा का अध्ययन कर रहे हैं, या कुछ भी बना रहे हैं जो JavaScript को छूता है, तो यह कहानी इस बात का एक व्यावहारिक केस स्टडी है कि आधुनिक सॉफ्टवेयर जोखिम वास्तव में कैसे काम करता है। परिधि आपका एप्लिकेशन कोड नहीं है। परिधि हर उस पैकेज तक फैली हुई है जिसे आप इंस्टॉल करते हैं, हर उस पैकेज तक जिसे वे पैकेज इंस्टॉल करते हैं, और उन सभी को बनाए रखने वाले इंसानों तक।
कार्रवाई योग्य निष्कर्ष असाधारण नहीं हैं। package-lock.json या yarn.lock फ़ाइलों का उपयोग करके अपने डिपेंडेंसी संस्करणों को लॉक करें ताकि कोई समझौता किया गया नया संस्करण स्वचालित रूप से आपके अगले इंस्टॉल में न आए। npm audit जैसे टूल का उपयोग करके अपने डिपेंडेंसी ट्री की जाँच करें। ध्यान दें जब सुरक्षा समुदाय GitHub पर अलर्ट उठाए, जैसा कि 8 सितंबर की प्रतिक्रिया ने दिखाया कि समुदाय की गति मायने रख सकती है। और यदि आप ओपन सोर्स पैकेज बनाए रखते हैं, तो अपने npm publish क्रेडेंशियल को प्रोडक्शन डेटाबेस एक्सेस जितनी गंभीरता से लें, क्योंकि एक हमलावर के दृष्टिकोण से, वे समकक्ष हैं।
Shai-Hulud वर्म के वास्तविक दुनिया में पुष्टि किए गए डिटेक्शन की कमी वास्तव में एक अच्छी खबर है, और यह तेज़ सामुदायिक प्रतिक्रिया और सक्रिय रक्षक तैयारी दोनों को दर्शाती है। डिपेंडेंसी स्वच्छता के आसपास बेहतर आदतें बनाने की खिड़की खुली है। सितंबर 2025 की घटनाएं इस बात का एक ज्वलंत, अच्छी तरह से दस्तावेज़ीकृत उदाहरण हैं कि किसी घटना के बाद नहीं, बल्कि पहले वे आदतें क्यों मायने रखती हैं।