
jackson-databind + jackson-core के 26 सुरक्षा सलाहकारों का स्व-जाँच: निर्देशांक के अनुसार एक-एक करके प्रतिच्छेदन निकालकर वास्तव में उपयुक्त संस्करण प्रदान करता है (2.18.11/2.21.7/2.22.3/3.1.7/3.2.3, 2.21.6 अब पर्याप्त नहीं है); स्रोत कोड स्कैन कर शोर कम करके बताता है कि वास्तव में कितने मेल खाते हैं; इसमें 1 ऐसा है जो GitHub वैश्विक लाइब्रेरी में सूचीबद्ध नहीं है और Dependabot रिपोर्ट नहीं करता (jackson-core वाला, databind अपग्रेड करने पर भी यह अभी भी लागू रहता है) CVE-2026-54515 / CVE-2026-54512
jackson-databind + jackson-core के कुल 26 सुरक्षा सलाहकारों के लिए स्व-जाँच उपकरण। शून्य निर्भरता वाला एकल jar, नेटवर्क से कनेक्ट नहीं होता।
यह उन तीन प्रश्नों का उत्तर देता है जिनका उत्तर Dependabot नहीं दे सकता:
jackson-core का CVE-2026-68498 एक ही शेष है (देखें "v0.3.0" अनुभाग)।@JsonView / बहुरूपी प्रकार / केस-असंवेदनशील मिलान……), और "प्रभावित संस्करण स्थापित है" को कम करके "वास्तव में उस सुविधा तक पहुँचा गया" में बदल देता है।java -jar jackson-check.jar ./target ./src
09-30 और 10-01 को,FasterXML ने फिर 4 high जारी किए(सभी 7.5,सभी denial of service):
| संख्या | निर्देशांक | विषय | ट्रिगर शर्त |
|---|---|---|---|
| CVE-2026-91776 | jackson-databind | हर अज्ञात type id प्रोसेस के जीवनकाल के कैश में एक प्रविष्टि छोड़ता है, मेमोरी केवल बढ़ती है घटती नहीं | @JsonTypeInfo(use = Id.NAME, defaultImpl = …) + हमलावर type id नियंत्रित कर सके + mapper लंबे समय तक पुनः उपयोग हो |
| CVE-2026-91777 | jackson-databind | फ़ॉरवर्ड रेफ़रेंस को उल्टे क्रम में परिभाषित करते समय तुलना की संख्या लगभग N²/2 (N=2000 → 2,003,000 बार) | अविश्वसनीय JSON को @JsonIdentityInfo वाले संग्रह या Map में डीसीरियलाइज़ करना |
| CVE-2026-89425 | jackson-core | विकृत token पूरा का पूरा exception संदेश में जोड़ दिया जाता है, maxErrorTokenLength की सीमा लागू नहीं होती | केवल createParser(DataInput) इसी पथ पर; सूचना में स्पष्ट है कि कोई कॉन्फ़िगरेशन इसे कम नहीं कर सकता |
| CVE-2026-89407 | jackson-core | NumberInput.looksLikeValidNumber() regex की द्विघाती बैकट्रैकिंग (1.6 लाख अक्षरों पर मापा गया 74.4 सेकंड) | JSON में स्ट्रिंग को संख्यात्मक फ़ील्ड में बाइंड करना (databind का डिफ़ॉल्ट व्यवहार); यह पथ maxStringLength (डिफ़ॉल्ट 2 करोड़) से सीमित है, maxNumberLength (डिफ़ॉल्ट 1000) से नहीं |
दोनों निर्देशांकों के फ़िक्स्ड संस्करण समान संख्या वाले हैं:2.18.11 / 2.21.7 / 2.22.3 / 3.1.7 / 3.2.3 (Central पर सभी डाउनलोड योग्य; 89407 3.2 लाइन में 3.2.2 में ठीक हुआ, 89425 के लिए 3.2.3 चाहिए, बड़ा लें)।
इसलिए v0.2.0 / v0.3.0 द्वारा छापे गए 2.18.10 / 2.21.6 / 2.22.2 / 3.1.6 / 3.2.2 09-30 से अपर्याप्त हैं। पुराने संस्करण के jar को इस बात की जानकारी नहीं होगी —— कृपया v0.4.0 पर स्विच करके पुनः स्कैन करें।
⚠️ ये चारों Dependabot के अंधे क्षेत्र नहीं हैं:ये जारी होने के दिन ही GitHub वैश्विक भेद्यता डेटाबेस में शामिल हो गए,Dependabot सामान्य रूप से चेतावनी देगा। v0.4.0 में इन्हें शामिल करने का उद्देश्य केवल यह सुनिश्चित करना है कि「किस संस्करण में अपग्रेड करना चाहिए」का उत्तर सही बना रहे।
🔴 साथ ही v0.2.0 के एक दावे का सुधार:नीचे「v0.2.0」अनुभाग में लिखा है「वे 4 GitHub वैश्विक भेद्यता डेटाबेस में शामिल नहीं हैं、 Dependabot रिपोर्ट नहीं करेगा」09-14 तक सही था, 2026-09-28 से अब सही नहीं है —— चारों को वैश्विक डेटाबेस में शामिल कर लिया गया है (
gen_rules.pyका ASSERT2 10-05 को पुनः चलाया गया:databind पक्ष का अंधा क्षेत्र 4 → 0)। अब केवल एक चीज़ अभी भी नहीं मिलती है, वह हैjackson-coreकाCVE-2026-68498।
jackson-core एक अलग निर्देशांक है, databind स्कैन करने से यह नहीं मिलेगाv0.2.x की निर्धारण तालिका में पूरी में केवल एक artifactId था jackson-databind। इसलिए FasterXML ने
jackson-core रिपॉज़िटरी में जारी किए गए 7 सूचनाओं में से, यह टूल एक भी स्कैन नहीं कर सका ——
और इसके कारण यह कोई त्रुटि भी नहीं देगा, बस चुपचाप सभी jackson-core-*.jar को छोड़ देगा।
「स्कैन नहीं हुआ」और「आप सुरक्षित हैं」रिपोर्ट में एक जैसे दिखते हैं।
v0.3.0 ने निर्धारण की ग्रैन्युलैरिटी को advisory × groupId × अंतराल से बदलकर advisory × groupId × artifactId × अंतराल कर दिया,
निर्धारण, प्रतिच्छेदन निकालना,「यह निर्देशांक स्कैन नहीं हुआ」सभी पूर्ण निर्देशांक को कुंजी मानकर।
सबसे ध्यान देने योग्य एक —— CVE-2026-68498 (high 7.5, 2026-09-12):
StreamReadConstraints.maxNameLength (डिफ़ॉल्ट 5 लाख अक्षर) कैरेक्टर इनपुट पथ पर लागू नहीं हुआ।
ReaderBasedJsonParser प्रॉपर्टी नाम संचित करते समय स्ट्रिंग लंबाई की सीमा (डिफ़ॉल्ट 10 करोड़, लगभग 2000 गुना) का उपयोग करता है,
वास्तविक name सत्यापन पूरी key स्कैन होने के बाद ही चलता है —— तब तक लगभग 200MB आवंटित हो चुका होता है।
एक ही अति-लंबी JSON key पर्याप्त है,डिफ़ॉल्ट कॉन्फ़िगरेशन में ही प्रभावित।
>= 2.16.0, <= 2.18.9 → 2.18.10 · >= 2.19.0, <= 2.21.5 → 2.21.6 ·
>= 2.22.0, <= 2.22.1 → 2.22.2 · 3.x(tools.jackson.core)<= 3.1.5 → 3.1.6 · <= 3.2.1 → 3.2.2UTF8StreamJsonParser हर बार बफ़र बढ़ाने पर पुनः सत्यापन करता है।
byte[] / InputStream से पार्स करने वाले प्रभावित नहीं;String / Reader / char[] से पार्स करने वाले ही प्रभावित।validateNameLength का कॉल केवल फ़िक्स्ड संस्करण के ReaderBasedJsonParser में है,
प्रभावित संस्करण में नहीं (2.18.9→2.18.10 · 2.21.5→2.21.6 · 3.1.5→3.1.6 तीनों लाइनों में पूर्ण पुनरुत्पादन)।⚠️ उपकरण क्षमता की सीमाएँ, यहाँ लिखी गई हैं ताकि गलत न पढ़ा जाए: यह उपकरण jar संस्करण का निर्धारण कर सकता है, आपके कॉल करने के तरीके का निर्धारण नहीं कर सकता ——
readValue(someStringVariable, …)जैसी सबसे आम लेखन शैली में, पाठ स्कैन यह नहीं देख सकता कि वह चरStringहै याbyte[]। इसलिए "ट्रिगर शर्त नहीं मिली" का अर्थ यह नहीं है कि आप प्रभावित नहीं हैं, रिपोर्ट में भी ऐसा ही छपा है।
🔴 इसे "Dependabot jackson-core के प्रति पूरी तरह अंधा है" के रूप में न पढ़ें:
jackson-coreकी उन 7 प्रविष्टियों में केवलCVE-2026-68498एक ही है जो GitHub के वैश्विक भेद्यता डेटाबेस में नहीं मिलती, शेष 6 दर्ज हैं और Dependabot सामान्य रूप से चेतावनी देता है। इस एक प्रविष्टि की पुष्टिgen_rules.pyकाASSERT-C2हर बार पुनः चलाने पर करता है, संख्या बदलते ही जनरेशन अस्वीकार कर दिया जाता है।
🔴 यह अनुभाग 09-14 का अभिलेख है, दो बातें अब पुरानी हो चुकी हैं (ऊपर "v0.4.0" देखें): ① ये 4 प्रविष्टियाँ 2026-09-28 को वैश्विक डेटाबेस में दर्ज हो चुकी हैं, Dependabot अब रिपोर्ट करेगा; ② "एक बार में ठीक करने" वाला संस्करण अब 2.18.10 / 2.21.6 / 3.1.6 नहीं है। मूल पाठ सुरक्षित रखा गया है, हटाया नहीं गया।
FasterXML ने अपने रिपॉज़िटरी के Security पृष्ठ पर नई 4 प्रविष्टियाँ जारी कीं:
| संख्या | स्तर | विषय | ठीक किया गया संस्करण |
|---|---|---|---|
| CVE-2026-68497 | high 7.5 | स्ट्रिंग को javax.xml.datatype.Duration / XMLGregorianCalendar में बाइंड करते समय अंकों की लंबाई की कोई सीमा नहीं → CPU DoS (डिफ़ॉल्ट mapper से ही) | 2.18.10 / 2.21.6 / 2.22.2 / 3.1.6 / 3.2.2 |
| CVE-2026-19032 | medium 5.3 | java.nio.file.Path का डीसीरियलाइज़ेशन URI scheme को सीमित नहीं करता, जिससे किसी भी पंजीकृत FileSystemProvider को चलाया जा सकता है | उपरोक्त के समान |
| CVE-2026-83557 | medium 5.6 | डिफ़ॉल्ट PolymorphicTypeValidator की अस्वीकृति सूची में Comparable छूट गया है | उपरोक्त के समान |
| CVE-2026-77310 | medium 5.3 | CVE-2026-54514 का समाधान अधूरा है: InetAddress शाखा अभी भी तुरंत DNS रिज़ॉल्यूशन करती है | 2.18.9 / 2.21.5 / 2.22.1 / 3.1.5 / 3.2.1 |
प्रत्येक का वास्तविक परीक्षण: