
स्प्रिंग फ्रेमवर्क UrlHandlerFilter ओपन रीडायरेक्ट (CVE-2026-47883) के लिए न्यूनतम प्रूफ-ऑफ-कॉन्सेप्ट, जो दर्शाता है कि निर्मित डबल-स्लैश अनुरोध हमलावर-नियंत्रित Location हेडर उत्पन्न करते हैं।
यह रिपॉज़िटरी CVE-2026-47883 का न्यूनतम पुनरुत्पादन PoC है, जिसे Spring की आधिकारिक सुरक्षा सलाह के रूप में प्रकाशित किया गया है।
Spring Framework Open Redirect in UrlHandlerFilter5.4 (AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N)CWE-601 — URL Redirection to Untrusted Site (Open Redirect)जब Spring Framework के UrlHandlerFilter को अत्यंत व्यापक पैटर्न और redirect मोड के साथ कॉन्फ़िगर किया जाता है, तो एक Location हेडर बन सकता है जो बाहरी origin की ओर इंगित करता है, जिससे open redirect उत्पन्न हो सकता है। Spring की आधिकारिक सलाह Spring MVC और Spring WebFlux दोनों के फ़िल्टर variant को प्रभावित दायरे में निर्दिष्ट करती है।
इस PoC के Servlet पथ में, redirect स्थान request URI के trailing slash को हटाने के बाद response हेडर में उपयोग किया जाता है।
String location = trimTrailingSlash(request.getRequestURI());
response.setHeader(HttpHeaders.LOCATION, location);
यदि raw request URI //attacker.example/ है, तो परिणाम //attacker.example होता है। RFC 3986 §4.2 के अनुसार, //attacker.example एक network-path reference है, इसलिए ब्राउज़र इसे वर्तमान scheme को बनाए रखते हुए एक बाहरी पता (जैसे https://attacker.example) के रूप में व्याख्या कर सकता है।
यह PoC निम्नलिखित शर्तों का उपयोग करता है।
UrlHandlerFilter redirect मोड में पंजीकृत है।/** जैसा अत्यंत व्यापक पैटर्न लागू है।// से शुरू होने वाले raw request target को सर्वर तक पहुँचा सकता है।UrlHandlerFilter.trailingSlashHandler("/**")
.redirect(HttpStatus.PERMANENT_REDIRECT)
.build();
आधिकारिक सलाह के अनुसार प्रभावित artifact:
org.springframework:spring-webmvcorg.springframework:spring-webfluxप्रभावित संस्करण:
7.0.0 - 7.0.86.2.0 - 6.2.19सुधार संस्करण:
| सुधार संस्करण | समर्थन दायरा |
|---|---|
7.0.9 | OSS |
7.0.8.1 | केवल Enterprise Support |
6.2.20 | केवल Enterprise Support |
UrlHandlerFilterBootServletIntegrationTest (मुख्य पुनरुत्पादन)यह एक वास्तविक Spring Boot + embedded Tomcat एप्लिकेशन प्रारंभ करता है और निम्नलिखित फ़िल्टर पंजीकृत करता है।
UrlHandlerFilter.trailingSlashHandler("/**")
.redirect(HttpStatus.PERMANENT_REDIRECT)
.build();
HTTP क्लाइंट को // पथ को पहले से normalize करने से रोकने के लिए, अनुरोध raw TCP socket के माध्यम से भेजा जाता है।
embeddedServletContainerEmitsNetworkPathReferenceForDoubleSlashPath
GET //attacker.example/ HTTP/1.1 भेजता है।308 Permanent Redirect और Location: //attacker.example की पुष्टि करता है।embeddedServletContainerKeepsExpectedSameOriginRelativeLocationForOrdinaryPath
GET /account/ HTTP/1.1 भेजता है।Location: /account बना रहे।UrlHandlerFilterOpenRedirectTest (सहायक परीक्षण)Servlet फ़िल्टर API को mock ऑब्जेक्ट के माध्यम से सीधे सत्यापित करता है और सामान्य पथ नियंत्रण की पुष्टि करता है।
Reactive सहायक परीक्षण में, MockServerHttpRequest के साथ बनाया गया एक विशेष URI /attacker.example में normalize होने के व्यवहार की पुष्टि की जाती है। हालाँकि, यह raw WebFlux request-target का end-to-end पुनरुत्पादन नहीं है, और इसका अर्थ यह नहीं है कि WebFlux प्रभावित नहीं है। Spring की आधिकारिक सलाह का प्रभावित दायरा Spring MVC और Spring WebFlux दोनों है।
Windows:
.\mvnw.cmd test
macOS/Linux:
./mvnw test
कमज़ोर संस्करण के लिए अपेक्षित परिणाम:
UrlHandlerFilterBootServletIntegrationTest: Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
UrlHandlerFilterOpenRedirectTest: Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS
परीक्षण की सफलता का अर्थ है कि "कमज़ोर व्यवहार पुनरुत्पादित कर दिया गया" है। मुख्य एकीकरण परीक्षण में, एक विशेष रूप से निर्मित raw अनुरोध ऐसा Location मान उत्पन्न करता है जिसे बाहरी origin के रूप में व्याख्या किया जा सकता है, जबकि सामान्य अनुरोध same-origin सापेक्ष पथ बनाए रखता है।
यह रिपॉज़िटरी निम्नलिखित संयोजन का उपयोग करती है।
Spring Boot 3.5.14
Spring Framework 6.2.18
Apache Tomcat 10.1.54
Java 17+
Spring Boot और Tomcat PoC चलाने के वातावरण हैं; आधिकारिक रूप से प्रभावित उत्पाद Spring Framework है। PoC में उपयोग किया गया Spring Framework 6.2.18 आधिकारिक प्रभावित दायरे 6.2.0 - 6.2.19 में आता है।
हमलावर उपयोगकर्ता को उस एप्लिकेशन के URL का उपयोग करके किसी बाहरी साइट पर जाने के लिए प्रेरित कर सकता है जिस पर उपयोगकर्ता भरोसा करता है। इसका उपयोग फ़िशिंग, विश्वास संबंधों के दुरुपयोग और उसके बाद क्रेडेंशियल चोरी के परिदृश्यों में किया जा सकता है।
आधिकारिक CVSS वेक्टर के अनुसार किसी पूर्व विशेषाधिकार की आवश्यकता नहीं है, लेकिन उपयोगकर्ता सहभागिता आवश्यक है; यह गोपनीयता और अखंडता के प्रभाव को Low तथा उपलब्धता के प्रभाव को None के रूप में मूल्यांकित करता है।
Spring की आधिकारिक अनुशंसा के अनुसार, आपको अपने उपयोग में आने वाले समर्थन चैनल के अनुरूप सुधार संस्करण में अपग्रेड करना चाहिए। आधिकारिक सलाह में स्पष्ट किया गया है कि अपग्रेड के बाद किसी अतिरिक्त शमन उपाय की आवश्यकता नहीं है।
Spring की आधिकारिक सलाह में निम्नानुसार उल्लेख किया गया है:
@daehyuh)