CVE-2026-104016 in jackson-dataformat-protobuf
सारांश
द्वारा VulDB • 28/10/2026
ProtobufParser लंबाई-पूर्वनिर्धारित (length-prefixed) protobuf स्ट्रिंग और बाइट्स फ़ील्डों को (_inputPtr + len) <= _inputEnd की जांच करके पार्स करता है, और फिर तेज़ मार्ग पर _finishShortText(len) कॉल करता है। दोनों 32-बिट signed integer arithmetic का उपयोग करते हैं। जब एक आक्रामक (attacker) लंबाई को Integer.MAX_VALUE के निकट varint डिकोडिंग प्रदान करता है, तो _inputPtr + len ऋणात्मक मान पर ओवरफ्लो हो जाता है, बाउंड्स चेक पास हो जाता है, और _finishShortText(len), TextBuffer.expandCurrentSegment(len) तक पहुँचता है, जो Arrays.copyOf को बिना किसी कैप (cap) के करता है और OutOfMemoryError: Requested array size exceeds VM limit फेंकता है।
JVM उपलब्ध हीप की जांच करने से पहले Integer.MAX_VALUE - 8 से बड़े एरेओं को अस्वीकार कर देता है, इसलिए -Xmx ट्यूनिंग इस समस्या का समाधान नहीं करता है। StreamReadConstraints.maxStringLength और maxDocumentLength इस मार्ग पर रोक (gate) नहीं लगाते हैं: एक 33-बाइट वाला पेलोड किसी भी दस्तावेज़ लंबाई सीमा से बहुत नीचे होता है, और आवंटन से पहले स्ट्रिंग लंबाई की जांच सक्रिय नहीं होती। इसकी पुष्टि अधिकतमStringLength, maxDocumentLength और maxNestingDepth को कॉन्फ़िगर किए गए शिपिंग आर्टिफैक्ट्स के खिलाफ प्रायोगिक रूप से की गई थी।
फरवरी 2026 में एक हार्डनिंग कमीट ने पैक्ड-एरे लंबाई और मैसेज लेंथ मार्चों के लिए समान ओवरफ्लो गार्ड जोड़ा, लेकिन स्ट्रिंग लेंथ कॉल साइट्स को अरक्षित छोड़ दिया। पार्सिंग के लिए डेटा सबमिट करने की क्षमता के अलावा किसी विशेषाधिकार या उपयोगकर्ता इंटरैक्शन की आवश्यकता नहीं है।
If you want to get best quality of vulnerability data, you may have to visit VulDB.