विस्तृत विश्लेषण · लगभग 7 मिनट पढ़ना
Brotli डिकोडर की कमजोरी का खुलासा: पैच हर चल रही प्रति तक पहुँचना चाहिए
Node.js ने CVE-2026-111497 का विवरण दिया है। तैनाती संबंधी परामर्श में निर्भर परियोजनाओं के सुधार और अस्थायी उपाय हैं, लेकिन डिकोडिंग और समर्थन अवधि की सीमाएँ महत्वपूर्ण हैं।
- यहाँ प्रकाशित
- स्रोत की तारीख
- स्रोत जाँचा गया
Node.js ने OpenAI Codex Security द्वारा रिपोर्ट की गई CVE-2026-111497 का विवरण दिया है, जबकि PatchthePlanet ने निर्भर परियोजनाओं के सुधार और अस्थायी नियंत्रण बताए हैं। यह मामला साझा लाइब्रेरी में सुधार और तैनात सॉफ़्टवेयर की सुरक्षा के बीच का अंतर दिखाता है। जोखिम इस पर निर्भर करता है कि अविश्वसनीय डेटा किसी प्रभावित डिकोडर तक पहुँचता है या नहीं। केवल Brotli का इस्तेमाल होना यह साबित नहीं करता कि हर तैनाती असुरक्षित है।
समाचार सुनें
यह लेख सुनें या समाचार लगातार चलाएँ।
पढ़ने की तैयारी हो रही है…
डिवाइस की आवाज़
वाक् प्रक्रिया आपके ब्राउज़र या डिवाइस में होती है। AISubHub पाठ किसी ऑडियो API को नहीं भेजता। आवाज़ों और लॉक स्क्रीन पर चलने की सुविधा डिवाइस पर निर्भर है।
जारी करने पर छोटा वाक्यांश दोहराया जा सकता है।
मुख्य बातें
- Node.js ने 22.23.4, 24.22.1 और 26.12.1 में सुधार बताए हैं। यदि कोई अनुप्रयोग हमलावर के दिए Brotli डेटा को डीकंप्रेस करता है, तो यह दोष मेमोरी को दूषित कर सकता है।
- तैनाती परामर्श में Bun, Envoy, Istio और मूल Brotli परियोजना के सुधार भी दिए गए हैं। साथ ही चेतावनी है कि असमर्थित शाखा का पैच लगा संस्करण, समर्थित अपग्रेड का रास्ता नहीं बन जाता।
- अस्थायी नियंत्रणों को हर संबंधित रास्ते पर डिकोडिंग से पहले अविश्वसनीय Brotli रोकना चाहिए। आउटपुट कंप्रेशन बंद करना या Accept-Encoding से केवल br हटाना पर्याप्त नहीं है।
खुलासे और स्रोतों की तारीखें अलग हैं
Node.js का परामर्श Brotli की कमजोरी की रिपोर्ट के लिए OpenAI Codex Security के Khai Tran और Sylvie Mayer तथा उसके सुधार के लिए mcollina और aduh95 को श्रेय देता है। PatchthePlanet की तैनाती मार्गदर्शिका प्रभावित सॉफ़्टवेयर के लिए संबंधित संस्करण और अस्थायी नियंत्रण बताती है। AISubHub का व्यावहारिक विश्लेषण है कि सुरक्षा घटकों के संस्करणों, अंतर्निहित रनटाइम, दोबारा बिल्ड किए गए अनुप्रयोगों और उपयोगकर्ताओं की चल रही तैनातियों तक पहुँचनी चाहिए; केवल एक पैकेज इंस्टॉल कर देना कार्रवाई पूरी होने का प्रमाण नहीं है।
Node.js पृष्ठ के शीर्षक में 21 अक्टूबर की सुरक्षा रिलीज़ का उल्लेख है, पर हर CVE प्रविष्टि जोड़े जाने की तारीख नहीं दी गई है। PatchthePlanet पर लिखा '23 अक्टूबर को अपडेट' उसका मूल प्रकाशन समय नहीं है। इन तारीखों से यह स्थापित नहीं होता कि हर निर्भर परियोजना का सुधार उपयोगकर्ताओं तक कब पहुँचा। AISubHub ने ये सार्वजनिक सामग्री 24 अक्टूबर को पढ़ी; पढ़ने की तारीख, रिलीज़ पृष्ठ के शीर्षक की तारीख या अपडेट के लेबल से अलग है।
आठ बाइट का बफ़र असुरक्षित कैसे बना
Node.js के अनुसार अमान्य ब्लॉक परिवर्तन को स्थायी फ़ॉर्मैट त्रुटि के बजाय ऐसी अस्थायी स्थिति माना गया जिसमें और इनपुट चाहिए था। स्ट्रीमिंग डिकोडर आठ बाइट के आंतरिक बफ़र में डेटा जोड़ता रहा और उसकी सीमा के बाहर लिख सकता था। यदि कोई अनुप्रयोग node:zlib के ज़रिये हमलावर के नियंत्रण वाला डेटा डीकंप्रेस करे, तो क्रैश, मेमोरी की जानकारी का खुलासा या दूर से कोड चलना संभावित परिणाम हैं।
संबंधित सुरक्षा सीमा अविश्वसनीय इनपुट की डिकोडिंग है: अनुरोध के मुख्य भाग, अविश्वसनीय सर्वरों के जवाब और संपीड़ित फ़ाइलें। केवल बाहर भेजे जाने वाले डेटा को कंप्रेस करना जोखिम का प्रमाण नहीं है। परामर्श में अंतर्निहित रनटाइम, curl/libcurl, Python या Java बाइंडिंग, फ़ॉन्ट डिकोडर और फ़ाइल रीडर भी चिन्हित हैं। Electron अनुप्रयोग में Chromium और Node.js की अलग प्रतियाँ हो सकती हैं; एक को ठीक करने से दोनों के ठीक होने का प्रमाण नहीं मिलता।
घटक का समर्थित संस्करण चुनें
Node.js ने 22.23.4, 24.22.1 और 26.12.1 बताए हैं। PatchthePlanet ने Brotli 1.2.1 वाला Bun 1.4.4 और मूल Brotli लाइब्रेरी की संबंधित शाखाओं के लिए 1.0.10, 1.1.1 तथा 1.2.1 बताए हैं। ये अलग-अलग घटकों के संस्करण हैं; डिकोडर को अपने भीतर शामिल करने वाले हर अनुप्रयोग को ठीक करने वाला कोई एक संस्करण नंबर नहीं है।
उसी परामर्श में Envoy 1.40.0, 1.39.3, 1.38.6 और 1.37.8 दिए गए हैं। Envoy 1.36.12 में भी सुधार है, लेकिन वह शाखा असमर्थित है। Istio के सुधार 1.29.9, 1.30.6 और 1.31.2 में हैं; 1.29 की समर्थन अवधि समाप्त हो चुकी है। दोनों अपवादों में समर्थित अपग्रेड मार्ग पर ध्यान देना आवश्यक है। पैच शामिल होने को जारी रखरखाव के बराबर नहीं माना जा सकता।
डिकोडिंग से पहले इनपुट रोकें
तुरंत पैच लगाना संभव न हो, तो PatchthePlanet अविश्वसनीय डेटा की Brotli डिकोडिंग अस्थायी रूप से बंद करने की सलाह देता है। उसका Express उदाहरण हर बॉडी पार्सर से पहले केवल identity, gzip और deflate स्वीकार करता है तथा अन्य या परत-दर-परत लागू एन्कोडिंग को HTTP 415 से अस्वीकार करता है। पहले ही डिकोड करने वाले प्रॉक्सी को अपनी अलग सुरक्षा चाहिए। वैकल्पिक inflate:false सभी संपीड़ित अनुरोध मुख्य भागों को अस्वीकार करता है, जिनमें gzip और deflate भी शामिल हैं।
प्राप्त किए जाने वाले जवाबों में Accept-Encoding से br हटाना केवल प्राथमिकता बताता है: सर्वर फिर भी Brotli भेज सकता है। Python उदाहरण Content-Encoding की जाँच होने तक मुख्य भाग पढ़ने और डिकोड करने को टालता है। उस उदाहरण में रीडायरेक्ट और दोबारा कोशिश बंद हैं; उन्हें जोड़ने पर हर जवाब की जाँच करनी होगी। सामान्य fetch या अपने आप पढ़ने की प्रक्रिया, अनुप्रयोग के हेडर देखने से पहले ही डिकोड कर सकती है। केवल आकार सीमा और WAF नियम हर रास्ते को सुरक्षित नहीं करते।
अस्थायी उपायों की सुरक्षा सीमा तय है
Envoy और Istio के लिए परामर्श दोनों दिशाओं में Brotli डीकंप्रेसर बंद करता है, उसे फिर सक्रिय कर सकने वाले रनटाइम ओवरराइड हटाता है और चेतावनी देता है कि दिशा का उल्लेख न करने पर वह डिफ़ॉल्ट रूप से सक्रिय रहती है। gzip या zstd के अलग फ़िल्टर बने रहने चाहिए; साझा फ़िल्टर नाम सभी को हटाने का कारण नहीं है। एन्कोड किए गए बाइट आगे की प्रणालियों तक पहुँच सकते हैं, इसलिए अनुप्रयोग के डिकोडर को भी सुरक्षा चाहिए।
Next.js का अस्थायी उपाय images.unoptimized को पूरे अनुप्रयोग पर सेट करना, फिर दोबारा बिल्ड और तैनाती करना तथा जाँचना है कि /_next/image अब अंतर्निहित ऑप्टिमाइज़र नहीं चला रहा। यह कस्टम लोडर, सर्वर की अन्य डेटा-प्राप्ति प्रक्रियाओं या अन्य डिकोडरों को सुरक्षित नहीं करता। Istio में हर गेटवे और साइडकार की प्रभावी कॉन्फ़िगरेशन जाँचना आवश्यक है; एक कॉन्फ़िगरेशन फ़ाइल बदलना इस बात का प्रमाण नहीं है कि चल रहे सभी इंस्टेंस बदल गए।
वास्तव में चल रही तैनाती जाँचें
परामर्श रनटाइम और इमेज के तय संस्करण अपडेट करने, उन्हें समाहित करने वाले कंटेनर या निष्पादन योग्य फ़ाइलें दोबारा बिल्ड करने तथा सेवाएँ, वर्कर, निर्धारित कार्य और प्रतिकृतियाँ फिर शुरू या दोबारा तैनात करने को कहता है। चल रहे बाइनरी या इमेज को संबंधित सुधार वाले संस्करण से मिलाएँ। पैच डाउनलोड हो जाना, बिल्ड होस्ट अपडेट होना या ब्राउज़र का एक घटक सुधरना यह साबित नहीं करता कि हर प्रक्रिया सही किया गया डिकोडर इस्तेमाल कर रही है।
AISubHub के एक काल्पनिक उदाहरण में CDN बाहर जाने वाले जवाब कंप्रेस कर सकता है, जबकि अलग वर्कर प्राप्त सामग्री को डिकोड करता है। CDN कंप्रेशन बंद करने से उस वर्कर का जोखिम नहीं बदलेगा; वैकल्पिक मूल सर्वर मार्ग भी प्रॉक्सी की सुरक्षा से बचकर जा सकता है। यह संरचना समझाने का उदाहरण है, हमारे सर्वरों की जाँच का निष्कर्ष नहीं। सत्यापन में संबंधित रास्ते शामिल होने चाहिए और यह भी सुनिश्चित करना चाहिए कि अनुमत कंप्रेशन अब भी काम करता है।
यह क्यों अहम है
व्यावहारिक सीख यह है कि डिकोडिंग कहाँ होती है उसकी सूची बनाएँ और मूल परियोजना के सुधार को दोबारा बिल्ड की गई, वास्तव में चल रही तैनाती तक पहुँचाएँ। संस्करण जाँच और अस्थायी रोक के अलग काम हैं; न साझा लाइब्रेरी का नाम, न ही कॉन्फ़िगरेशन का एक बदलाव पूरी प्रणाली की सुरक्षा साबित करता है।
सीमाएँ और उपलब्धता
हमने दोनों सार्वजनिक परामर्श पढ़े, हमले का कोड, लिंक किए गए सभी रिलीज़ नोट या ग्राहकों के तैनात सिस्टम नहीं। Node.js के अलावा अन्य संस्करणों का विवरण PatchthePlanet की 23 अक्टूबर की समीक्षा पर आधारित है। हमने कमजोरी का दुरुपयोग, रनटाइम अपग्रेड या सर्वर ऑडिट नहीं किया। ये सामग्री व्यापक हमलों या हर जगह सुधार पूरा होने को स्थापित नहीं करती।
स्रोत और प्रमाण
स्रोत की तारीख: · स्रोत जाँचा गया:
पूरक पठन
AI की सहायता से लिखे लेखों को दिए गए प्राथमिक स्रोतों से जाँचा जाता है। प्रदाता के दावों का श्रेय स्पष्ट है; सूची में होना समर्थन नहीं है।