इस लेख में
अगर आपकी कंपनी का ऐप, वेबसाइट, ऑनलाइन स्टोर या API Node.js से बनाया गया है, जिसमें Next.js वाली वेबसाइटें और Express या NestJS पर बने बैकएंड भी शामिल हैं, तो आज ही अपने डेवलपर से Node.js को वर्शन 22.23.4, 24.22.1 या 26.12.1 पर अपडेट करने और फिर सर्वर को दोबारा बिल्ड करके रीस्टार्ट करने को कहें। Node.js प्रोजेक्ट ने ये वर्शन 21 अक्टूबर 2026 को Node2Shell (CVE-2026-111497) नाम की कमज़ोरी को बंद करने के लिए जारी किए। इसे 10 में से 9.2 अंक मिले हैं, और यह किसी भी पासवर्ड के बिना हमलावर को खास तौर पर तैयार किया गया कंप्रेस्ड डेटा भेजकर आपके सर्वर पर कोड चलाने देती है। सऊदी अरब के राष्ट्रीय साइबर सुरक्षा प्राधिकरण (NCA) ने «बहुत ऊंचे» स्तर की चेतावनी जारी की है, और 27 अक्टूबर को अमेरिकी साइबर सुरक्षा एजेंसी CISA ने पुष्टि की कि इस कमज़ोरी का असली हमलों में फायदा उठाया जा रहा है।
असल में क्या हुआ?
कमज़ोरी Brotli में है। Brotli एक कंप्रेशन फॉर्मेट है, जिससे वेब सर्वर और ब्राउज़र आपस में भेजे जाने वाले डेटा को छोटा करते हैं, और Node.js अपने साथ Google के Brotli डिकोडर की अपनी कॉपी लेकर आता है। Node.js की सुरक्षा सूचना के अनुसार, गलत तरीके से बना कंप्रेस्ड डेटा डिकोडर को एक आंतरिक बफ़र की सीमा से आगे लिखने पर मजबूर करता है, जिससे ऐप क्रैश हो सकता है, उसकी मेमोरी की जानकारी लीक हो सकती है, या हमलावर कोड चला सकता है। सूचना में इस कमज़ोरी की रिपोर्ट का श्रेय OpenAI की Codex Security टीम को दिया गया है, और उसी रिलीज़ में कुल 10 कमज़ोरियां ठीक की गईं, जिनमें से 4 उच्च गंभीरता की थीं।
इसके बाद सब कुछ तेज़ी से हुआ। 22 अक्टूबर को, यानी फिक्स के एक दिन बाद, Imperva की रेड टीम ने आधिकारिक Node.js 24.22.0 इमेज पर दो रोज़मर्रा के रास्तों से कोड चलाकर दिखाया: बिल्ट-इन fetch() फ़ंक्शन और Express 5 द्वारा प्रोसेस किए जाने वाले रिक्वेस्ट बॉडी। 26 अक्टूबर को ELLIO ने सार्वजनिक हमला कोड वाला असली एक्सप्लॉइट ट्रैफ़िक दर्ज किया। 27 अक्टूबर को CISA ने इस कमज़ोरी को सक्रिय रूप से इस्तेमाल हो रही कमज़ोरियों की अपनी सूची में जोड़ दिया।
यह खामी खुद पुरानी है। CVE रिकॉर्ड के अनुसार यह Brotli के 1.0.3 से 1.2.0 तक के वर्शन को प्रभावित करती है, और OpenAI का कहना है कि इसकी जड़ वाली समस्या फ़रवरी 2026 में ही Brotli के सोर्स कोड में ठीक कर दी गई थी, लेकिन किसी को नहीं पता था कि यह सुरक्षा खामी है और कोई नया वर्शन भी जारी नहीं हुआ, जब तक 21 अक्टूबर को Brotli 1.2.1 नहीं आया। अगर यह जाना-पहचाना लगता है, तो इसकी वजह है: पिछले हफ़्ते हमने PHP2Shell के बारे में लिखा था, वह कमज़ोरी जिसने PHP और WordPress सर्वर खोल दिए। Node2Shell, JavaScript से बने ऐप्स के लिए उसी तरह का खतरा है।
क्या मेरा ऐप प्रभावित है?
Node.js आधुनिक वेबसाइटों, मोबाइल ऐप बैकएंड, डैशबोर्ड और API के एक बड़े हिस्से का सर्वर वाला काम चलाता है। अगर आपका सिस्टम पिछले कुछ सालों में किसी एजेंसी या फ्रीलांस डेवलपर ने बनाया है, तो काफ़ी संभावना है कि वह आपकी जानकारी के बिना Node.js पर चल रहा हो। प्रभावित लाइनें ठीक किए गए वर्शन से पहले की 22.x, 24.x और 26.x हैं, साथ ही सपोर्ट खत्म हो चुकी 20.x, 23.x और 25.x लाइनें भी, जिनके बारे में Node.js प्रोजेक्ट कहता है कि वे हमेशा प्रभावित रहती हैं और उन्हें कोई फिक्स नहीं मिलेगा।
सिर्फ़ Node.js चलाने से आप खतरे में नहीं आ जाते: किसी चीज़ को हमलावर का डेटा डिकोडर तक पहुंचाना होता है। शोधकर्ता तीन आम रास्ते बताते हैं:
- आने वाले कंप्रेस्ड रिक्वेस्ट। Express 5, body-parser 2 और Koa के बॉडी पार्सर Brotli में कंप्रेस किए गए रिक्वेस्ट बॉडी को अपने आप खोल देते हैं, आपका अपना कोड चलने से भी पहले।
- वह कंटेंट जो आपका सर्वर बाहर से लाता है। अगर आपका ऐप बाहरी लिंक खोलता है, जैसे लिंक प्रीव्यू, वेबहुक, क्रॉलर या वेब पेज पढ़ने वाले AI एजेंट, तो कोई दुश्मन साइट ज़हरीले कंप्रेस्ड डेटा के साथ जवाब दे सकती है। Node का बिल्ट-इन fetch() फ़ंक्शन, axios और Next.js जैसे फ़्रेमवर्क में सर्वर-साइड रिक्वेस्ट इसे अपने आप खोल देते हैं।
- यूज़र द्वारा अपलोड की गई फ़ाइलें। कोई भी कोड जो किसी ग्राहक या विज़िटर के भेजे Brotli डेटा को खोलता है।
खतरा Node.js तक सीमित नहीं है। NCA की चेतावनी में Python, Bun और Envoy का नाम भी है, और Microsoft ने 25 अक्टूबर को .NET 8, 9, 10 और 11, Visual Studio 2019, 2022 और 2026, और PowerShell 7.4 से 7.6 के लिए फिक्स जारी किए, और इस कमज़ोरी को .NET के लिए गंभीर बताते हुए «Exploitation More Likely» आकलन दिया। Microsoft बताता है कि .NET में Brotli डीकंप्रेशन डिफ़ॉल्ट रूप से चालू नहीं होता, इसलिए सिर्फ़ वे ऐप खतरे में हैं जिन्होंने इसे चालू किया है।
अगर आपकी साइट Vercel पर होस्ट है, तो कंपनी अपनी सुरक्षा सूचना में कहती है कि जिस दिन Node.js ने फिक्स जारी किया, उसी दिन उसने सभी प्रोजेक्ट के लिए आने वाले हमले के रास्ते को रोकने वाले फ़ायरवॉल नियम लागू कर दिए, और 28 अक्टूबर से सभी नए डिप्लॉयमेंट ठीक किया गया Node.js इस्तेमाल करते हैं। मौजूदा प्रोजेक्ट को दोबारा डिप्लॉय करना होगा, और जो प्रोजेक्ट अब भी Node.js 20 पर हैं, उन्हें 22 या 24 पर जाना होगा।
आज क्या करें: पांच कदम
- एक लिखित सवाल पूछें। हमारे सर्वर पर और हमारी Docker इमेज के अंदर Node.js का कौन सा वर्शन चल रहा है? अपने डेवलपर से node -v कमांड से Node.js का वर्शन नंबर जांचने को कहें। Brotli के वर्शन नंबर पर भरोसा न करें: ELLIO ने पाया कि यह ठीक किए गए और बिना ठीक किए, दोनों तरह के बिल्ड में 1.2.0 ही दिखाता है।
- ठीक किए गए वर्शन पर अपडेट करें। 22.23.4, 24.22.1 या 26.12.1। अगर आप 20.x, 23.x या 25.x पर हैं, तो 22 या 24 जैसी सपोर्ट वाली लाइन पर जाएं, और लाइव करने से पहले टेस्ट करें।
- दोबारा बिल्ड करें और रीस्टार्ट करें। चल रही प्रोसेस पुराना कोड ही रखती है। कंटेनर इमेज को ठीक की गई बेस इमेज पर दोबारा बिल्ड करें, क्योंकि 24.22.0 पर तय किया गया Dockerfile तब तक कमज़ोर बिल्ड भेजता रहेगा जब तक कोई उस लाइन को बदल न दे। स्टेजिंग सर्वर, बिल्ड पाइपलाइन और सर्वरलेस फ़ंक्शन भी जांचें।
- बाकी कॉपियां भी अपडेट करें। Python के Brotli और brotlicffi पैकेज (वर्शन 1.2.1 और 1.2.1.0), Bun, Envoy, आपके Linux डिस्ट्रीब्यूशन की Brotli लाइब्रेरी, और Microsoft के 25 अक्टूबर के अपडेट के ज़रिए .NET।
- लॉग और क्रैश फ़ाइलें जांचें। असामान्य रूप से बड़े, Brotli में कंप्रेस किए गए रिक्वेस्ट और प्रोसेस के बार-बार क्रैश होने पर नज़र रखें। ELLIO चेतावनी देता है कि ज़्यादातर नाकाम हमले प्रोसेस को क्रैश कर देते हैं, और क्रैश फ़ाइल में विज़िटर्स की सेशन कुकीज़ और कुंजियां रह सकती हैं, इसलिए सीमित करें कि क्रैश फ़ाइलें (core dumps) कौन पढ़ सकता है और आप उन्हें कितने समय तक रखते हैं।
अगर आज अपडेट नहीं कर सकते
अस्थायी उपाय के तौर पर, अगर आपके ऐप को इनकी ज़रूरत नहीं है, तो अपने फ़्रंट सर्वर या फ़ायरवॉल पर Content-Encoding: br हेडर वाले आने वाले रिक्वेस्ट रोक दें। Vercel और Imperva ने इस कमज़ोरी के लिए फ़ायरवॉल नियम जोड़े हैं, लेकिन Vercel खुद ज़ोर देकर कहता है कि फ़ायरवॉल उन जवाबों को कवर नहीं करता जो आपका सर्वर दूसरी साइटों से लाता है: यह रास्ता सिर्फ़ Node.js अपडेट ही बंद करता है। सुरक्षा की हर परत को अपडेट का विकल्प नहीं, बल्कि अतिरिक्त समय मानें।
Origami की राय
एक ही महीने में वेब की नींव में दो गंभीर कमज़ोरियां, पहले PHP2Shell और फिर Node2Shell, एक साफ़ कहानी बताती हैं: आपकी टीम का लिखा कोड ठीक हो सकता है, जबकि उसके नीचे का रनटाइम खुला हो। Node2Shell का फिक्स Brotli के सोर्स कोड में करीब आठ महीने पड़ा रहा, इससे पहले कि किसी को समझ आता कि यह सुरक्षा की समस्या है, और जैसे ही ब्योरे सार्वजनिक हुए, शोधकर्ताओं को आधिकारिक बिल्ड पर कोड चलाने में एक दिन लगा। हम कई कंपनियों में देखते हैं कि सालों पहले सौंपा गया एक ऐप है, जिसके अपडेट की ज़िम्मेदारी किसी के पास नहीं है, और कोई सूची नहीं कि Node.js असल में कहां-कहां चल रहा है। अगर आपकी स्थिति यही है, तो आज ही वह सूची बनाना शुरू करें। Origami में हम वेब ऐप और सिस्टम बनाते हैं, जिनमें से कई Node.js और Next.js पर चलते हैं, और पहले दिन से उनके रनटाइम के अपडेट पर नज़र रखते हैं। अगर आप अपने ऐप की जांच या बिना रुकावट Node.js अपग्रेड करवाना चाहते हैं, तो हमसे संपर्क करें।
स्रोत
- सऊदी राष्ट्रीय साइबर सुरक्षा प्राधिकरण (NCA): Brotli चेतावनी संख्या 2026-7959
- Node.js: 21 अक्टूबर 2026 की सुरक्षा रिलीज़
- GitHub पर Google Brotli: वर्शन 1.2.1 के रिलीज़ नोट्स
- CVE.org: CVE-2026-111497 का रिकॉर्ड, प्रभावित वर्शन और 9.2 का स्कोर
- CISA: सूची में जोड़ी गईं दो इस्तेमाल हो रही कमज़ोरियां, 27 अक्टूबर 2026
- Microsoft Security Response Center: CVE-2026-111497
- Vercel: Node.js पर सुरक्षा सूचना
- Imperva रेड टीम: Node2Shell, Brotli डेटा से कोड चलाने तक
- ELLIO: असली हमलों में Node2Shell का इस्तेमाल
- SecurityWeek: Microsoft, Node.js और Python पैकेज में फिक्स
सामान्य प्रश्न
अगर मेरी कंपनी की वेबसाइट Next.js से बनी है, तो क्या वह Node2Shell से प्रभावित है?
हो सकती है। Next.js, Node.js पर चलता है, और इसके सर्वर-साइड रिक्वेस्ट कमज़ोर डिकोडर से होकर गुज़रते हैं। Vercel पर 28 अक्टूबर से नए डिप्लॉयमेंट ठीक किया गया Node.js इस्तेमाल करते हैं, इसलिए दोबारा डिप्लॉय करना काफ़ी है; अगर आप खुद होस्ट करते हैं, तो Node.js को 22.23.4, 24.22.1 या 26.12.1 पर अपडेट करें।
Node.js के कौन से वर्शन Node2Shell को ठीक करते हैं?
21 अक्टूबर 2026 को जारी वर्शन 22.23.4, 24.22.1 और 26.12.1। 20.x, 23.x और 25.x लाइनों का सपोर्ट खत्म हो चुका है और उन्हें फिक्स नहीं मिलेगा, इसलिए 22 या 24 पर जाएं।
मुझे कैसे पता चले कि मेरा ऐप Node.js का कौन सा वर्शन इस्तेमाल करता है?
अपने डेवलपर से सर्वर पर और हर Docker इमेज के अंदर node -v चलाकर नतीजा आपको लिखकर भेजने को कहें। Brotli के वर्शन नंबर पर भरोसा न करें: यह ठीक किए गए और बिना ठीक किए, दोनों तरह के बिल्ड में 1.2.0 ही दिखाता है।
क्या अपडेट की जगह वेब ऐप्लिकेशन फ़ायरवॉल (WAF) काफ़ी है?
नहीं। WAF आने वाले नुकसानदेह कंप्रेस्ड रिक्वेस्ट रोक सकता है, लेकिन उन जवाबों को कवर नहीं करता जो आपका सर्वर दूसरी साइटों से लाता है। Vercel और Imperva ने इस कमज़ोरी के लिए WAF नियम जोड़े हैं, और दोनों अब भी ग्राहकों से Node.js अपडेट करने को कहते हैं।
Google पर Origami को फ़ॉलो करें
Origami को अपना पसंदीदा स्रोत बनाइए, तो हमारे लेख आपको Google Search और प्रमुख ख़बरों में सबसे पहले दिखेंगे।








