
ऑफ़लाइन Java टूल जो एप्लिकेशन jars को स्कैन करके 14 Netty codec-http CVEs के संपर्क का निर्धारण करता है, तथा असंगत एडवाइज़री सीमाओं के बावजूद सटीक पैच किए गए संस्करण (4.1.137.Final/4.2.17.Final) की पहचान करता है।
14 io.netty:netty-codec-http CVE (2025–2026) के लिए ऑफ़लाइन जाँचकर्ता।
बताता है कि आप वास्तव में किन-किन से प्रभावित हैं — और वह एकमात्र संस्करण जो इन सभी को समाप्त करता है:
4.1.137.Final / 4.2.17.Final, एक संख्या जो चौदहों सलाहकारों में से किसी पर नहीं लिखी गई है।
CVE-2025-58056 · CVE-2025-67735 · CVE-2026-33870 · CVE-2026-41417 · CVE-2026-42580 · CVE-2026-42581 · CVE-2026-42585 · · · · · · ·
CVE-2026-42587CVE-2026-50020CVE-2026-56746CVE-2026-59898CVE-2026-59899CVE-2026-59903CVE-2026-59921एकल jar, शून्य रनटाइम निर्भरताएँ, पूर्णतः ऑफ़लाइन, Java 17+।
हर Netty मॉड्यूल एक ही संस्करण संख्या के अंतर्गत जारी होता है, इसलिए अपग्रेड करना एक एकल निर्णय जैसा लगता है। ऐसा नहीं है। 4.1 लाइन पर इन चौदह के लिए फिक्स संस्करण 125 / 129 / 132 / 133 / 135 / 136 / 137 पर पहुँचते हैं — सात अलग-अलग मान। किसी एक सलाहकार का पालन करें और आप अभी भी बाकी के प्रभावित दायरे में हैं।
netty-codec-http2 netty-codec-http को <version>${project.version}</version> के साथ
compile निर्भरता के रूप में घोषित करता है — दोनों संस्करण एक-दूसरे से जुड़े हुए हैं।
इसलिए यदि आपने 4.1.136.Final पर अपग्रेड किया क्योंकि यही वह संस्करण है जो सात
netty-codec-http2 CVE को समाप्त करता है, तो अब आप netty-codec-http 4.1.136.Final भी चला रहे हैं — और
CVE-2026-59903 <= 4.1.136.Final को कवर करता है। आपको 4.1.137.Final चाहिए। 4.2 लाइन पर भी यही कहानी है:
HTTP/2 का उत्तर 4.2.16.Final है, इस ओर 4.2.17.Final चाहिए।
यह दावा नहीं है कि HTTP/2 सलाह गलत थी — उसने एक अलग मॉड्यूल के लिए उत्तर दिया। यह दावा है कि "एक संस्करण संख्या" इस तथ्य को छिपाती है कि आप केवल एक मॉड्यूल के लिए उत्तर दे रहे थे।
इन चौदह सलाहकारों में ऊपरी सीमा 16 बार <= और 12 बार < लिखी गई है।
इसलिए वही 4.1.136.Final CVE-2026-56746 (< 4.1.136.Final) के लिए सुरक्षित है और
CVE-2026-59903 (<= 4.1.136.Final) के लिए प्रभावित है।
ऑपरेटर को किसी भी दिशा में सामान्य करने से गलत उत्तर मिलता है — एक दिशा अधिक रिपोर्ट करती है, दूसरी
कम रिपोर्ट करती है, और कम रिपोर्ट करना इस तरह के उपकरण के लिए महँगी गलती है।
नियम तालिका प्रत्येक ऑपरेटर को बिल्कुल वैसे ही रखती है जैसे सलाहकार ने लिखा था, और
tools/gen_rules.py में एक assertion बिल्ड को विफल कर देता है यदि वह सीमा मामला कभी इस तरह व्यवहार करना बंद कर दे।
pom.xml स्कैन नहीं करता — जानबूझकरयदि आप Spring WebFlux का उपयोग करते हैं, तो netty-codec-http इस माध्यम से आता है
spring-boot-starter-webflux
-> spring-boot-starter-reactor-netty
-> reactor-netty-http
-> netty-codec-http
artifactId आपके pom.xml में कभी दिखाई नहीं देता। pom-आधारित जाँच "मैं इसका उपयोग नहीं करता" का उत्तर देती है,
जो गलत है। यह उपकरण उन jars को पढ़ता है जो वास्तव में भेजे जाते हैं।
java -jar netty-http-check.jar target/ # बिल्ड आउटपुट स्कैन करें
java -jar netty-http-check.jar myapp.jar # Spring Boot fat-jar / war, नेस्टेड jars शामिल
java -jar netty-http-check.jar --version-of 4.1.136.Final # किसी संस्करण का सीधे मूल्यांकन करें
एग्ज़िट कोड: 0 = प्रभावित नहीं · 1 = प्रभावित · 2 = मूल्यांकन नहीं कर सका।
🔴
2जानबूझकर0नहीं है। "कुछ नहीं मिला" और "स्वच्छ" किसी स्क्रिप्ट को एक जैसे नहीं दिखने चाहिए। जो फ़ाइल पठनीय zip नहीं है, उसे पढ़ने की विफलता के रूप में रिपोर्ट किया जाता है, कभी भी चुपचाप "यहाँ netty नहीं है" के रूप में नहीं माना जाता।
netty-codec-http। अन्य Netty मॉड्यूल के अपने CVE हैं;
यहाँ स्वच्छ परिणाम उनके बारे में कुछ नहीं कहता। यदि आप netty-codec-http2 भी चलाते हैं, तो उपकरण
ऐसा कहता है और ऊपर की क्रॉस-मॉड्यूल समस्या की ओर इशारा करता है, लेकिन उस मॉड्यूल का मूल्यांकन नहीं करता।low है; उन्हें जैसे हैं वैसे ही मुद्रित किया जाता है, किसी डरावने कुल में नहीं जोड़ा जाता।reviewed है, इसलिए Dependabot और
अन्य इन पर अलर्ट करते हैं। यह उपकरण "स्कैनर इसे नहीं देख सकता" नहीं है — यह है "अलर्ट आपको
प्रति सलाहकार एक संस्करण संख्या बताता है, और आपको अभी भी यह पता लगाना है कि कौन सा एकल संस्करण इसे समाप्त करता है।"src/main/java/dev/mikko/nettyhttpcheck/RuleTable.java जनरेटेड है, कभी हाथ से संपादित नहीं:
python tools/gen_rules.py --dry # केवल assertions चलाएँ
python tools/gen_rules.py # तालिका पुनः जनरेट करें
सात assertions को पास होना चाहिए या कुछ भी नहीं लिखा जाता — उनमें से: प्रत्येक सलाहकार अभी भी
reviewed है; प्रत्येक के लिए दोनों संस्करण लाइनें मौजूद हैं; गणना किया गया प्रतिच्छेदन अभी भी
4.1.137.Final / 4.2.17.Final है; वे संस्करण वास्तव में Maven Central से प्राप्त करने योग्य हैं
(एक sentinel संस्करण के साथ जिसे 404 देना चाहिए, ताकि टूटी हुई जाँच चुपचाप पास न हो सके);
§3 में सीमा मामला अभी भी पलटता है; और §2 का HTTP/2 उत्तर अभी भी इस ओर एक छेद छोड़ता है।
वास्तविक-jar एंड-टू-एंड जाँचें tools/e2e_real_jars.py में हैं — वे fixtures के बजाय Maven Central से
वास्तविक jars डाउनलोड करती हैं, क्योंकि "हाथ से बनाई गई zip पर काम करता है, वास्तविक jar पर विफल होता है"
एक वास्तविक विफलता मोड है।
MIT