@stablelib/cbor: गहराई से नेस्टेड CBOR एरे, मैप या टैग के माध्यम से स्टैक एग्जॉशन (Stack exhaustion) से इनकार-सेवा (Denial of Service)
प्लेटफ़ॉर्म
nodejs
कॉम्पोनेन्ट
@stablelib/cbor
ठीक किया गया
2.0.3
### सारांश `@stablelib/cbor` नेस्टेड CBOR संरचनाओं को पुनरावर्ती रूप से डिकोड करता है और अधिकतम नेस्टिंग गहराई को लागू नहीं करता है। इसलिए, एक पर्याप्त रूप से गहरी हमलावर-नियंत्रित CBOR पेलोड `RangeError: Maximum call stack size exceeded` के साथ डिकोडिंग को क्रैश कर सकता है। ### विवरण डिकोडर पुनरावर्ती कॉल के माध्यम से एरे, मैप और टैग किए गए मानों को संसाधित करता है। प्रत्येक नेस्टेड कंटेनर `_decodeValue()` में एक और वंश का कारण बनता है जब तक कि एक लीफ वैल्यू तक नहीं पहुंच जाता। कोई गहराई सीमा नहीं है, कोई पुनरावृत्त फॉलबैक नहीं है, और रोगग्रस्त नेस्टिंग के खिलाफ कोई सुरक्षा नहीं है। इसलिए, एक हमलावर हजारों नेस्टेड एरे, मैप या टैग से बना एक पेलोड प्रदान कर सकता है और डिकोडर को तब तक पुनरावर्ती करने के लिए मजबूर कर सकता है जब तक कि जावास्क्रिप्ट कॉल स्टैक समाप्त न हो जाए। ### PoC ```js import { decode } from "@stablelib/cbor"; const depth = 12000; const payload = new Uint8Array(depth + 1); // Build [[[...[null]...]]] payload.fill(0x81, 0, depth); // array(1) payload[depth] = 0xf6; // null decode(payload); // RangeError: Maximum call stack size exceeded ``` ### प्रभाव हमलावर-नियंत्रित CBOR को डिकोड करने वाला कोई भी एप्लिकेशन एक ही तैयार पेलोड के साथ विश्वसनीय इनकार-सेवा (denial of service) में मजबूर किया जा सकता है। तत्काल परिणाम एक अपवाद (exception) है
कैसे ठीक करें
कोई आधिकारिक पैच उपलब्ध नहीं है। वैकल्पिक समाधान खोजें या अपडेट की निगरानी करें।
अपनी निर्भरताओं की स्वचालित निगरानी करें
जब नई कमज़ोरियाँ आपके प्रोजेक्ट को प्रभावित करें तो अलर्ट पाएं।
मुफ़्त शुरू करें