
डॉकर बेस इमेज जिसमें Undertow 1.4.x में CVE-2025-12543 के लिए होस्ट हेडर सत्यापन सुधार का बैकपोर्ट किया गया है, जो WildFly 11 अनुप्रयोगों की सुरक्षित तैनाती को सक्षम बनाता है।
यह रिपॉजिटरी एक Docker बेस इमेज प्रदान करती है जो WildFly 11.0.0.Final पर बनाई गई है, जिसमें CVE-2025-12543 के लिए एक बैकपोर्टेड फिक्स है, जो Undertow में एक महत्वपूर्ण Host हेडर वैलिडेशन भेद्यता है।
यह इमेज सहकर्मियों को बेस के रूप में प्रदान करने के लिए है। वे इसके ऊपर अपना .war एप्लिकेशन और standalone.xml तैनात कर सकते हैं।
| फ़ील्ड | विवरण |
|---|---|
| CVE ID | CVE-2025-12543 |
| घटक | io.undertow:undertow-core |
| गंभीरता | क्रिटिकल (CVSS 9.6) |
| प्रभावित संस्करण | सभी संस्करण < 2.2.39 (1.4.x सहित) |
| फिक्स किया गया | Undertow 2.2.39 / 2.3.22 |
| WildFly 11 संस्करण | undertow-core-1.4.18.Final — प्रभावित |
Undertow आने वाले HTTP अनुरोधों में Host हेडर को ठीक से मान्य नहीं करता है। विकृत या दुर्भावनापूर्ण Host हेडर वाले अनुरोधों को अस्वीकार किए बिना संसाधित किया जाता है, जिससे निम्न सक्षम होता है:
अन्य उपयोगकर्ता अभी भी WildFly 11 पर हैं, और अपग्रेड करने के लिए वर्तमान में कोई संसाधन या योजना नहीं है। फिक्स को सीधे Undertow 1.4.18.Final JAR में बैकपोर्ट किया गया था।
.
├── Dockerfile # मुख्य इमेज परिभाषा
├── README.md
├── wildfly-dist-11.0.0.Final.tar.gz # WildFly 11 वितरण संग्रह
├── reports/
│ ├── result-20260401-0230.txt # CVE स्कैन रिपोर्ट जिसने भेद्यता की पहचान की
│ └── wildfly_11.0.0.Final_*.txt # अतिरिक्त स्कैन रिपोर्ट
└── patch/
├── src/
│ ├── HostHeaderHandler.java # बैकपोर्टेड फिक्स — नया हैंडलर वर्ग
│ ├── HttpReadListener_only.java # डिकंपाइल्ड + पैच किया गया HttpReadListener स्रोत (संदर्भ)
│ └── PatchHttpReadListener.java # Javassist बाइटकोड पैचर टूल
├── build.sh # बिल्ड स्क्रिप्ट — स्क्रैच से पैच किया गया JAR पुनर्निर्माण करता है
├── undertow-core-1.4.18.Final.jar # मूल (अपैच) JAR — संदर्भ के लिए रखा गया
└── undertow-core-1.4.18.Final-patched.jar # पैच किया गया JAR इमेज में इंजेक्ट किया गया
Dockerfileअंतिम इमेज बनाता है। यह:
bitnamilegacy/java:1.8.432-7-debian-12-r2 (OpenJDK 1.8.0_432) का उपयोग करता है/opt/jboss/wildfly में निकालता हैundertow-core-1.4.18.Final.jar को पैच किए गए संस्करण से बदलता हैstandalone.sh -b 0.0.0.0 (सभी इंटरफेस से बाइंड) के माध्यम से WildFly शुरू करता हैpatch/undertow-core-1.4.18.Final-patched.jarपैच किया गया Undertow JAR। यह दो परिवर्तनों को छोड़कर मूल के समान है:
io/undertow/server/handlers/HostHeaderHandler.class (और इसके आंतरिक वर्ग)io/undertow/server/protocol/http/HttpReadListener.class — अनुरोध पाइपलाइन में HostHeaderHandler इंजेक्ट करता हैpatch/src/HostHeaderHandler.javaबैकपोर्टेड Host हेडर वैलिडेशन हैंडलर। Undertow PR #1857 (UNDERTOW-2656) से पोर्ट किया गया।
सभी स्थिरांक (IP4_EXACT, IP6_EXACT, वर्ण तालिकाएँ) स्व-निहित हैं — Undertow 2.x में जोड़े गए API पर कोई निर्भरता नहीं। प्रत्येक HTTP अनुरोध पर, यह मान्य करता है:
400 Bad Request के साथ अस्वीकार करता हैpatch/src/PatchHttpReadListener.javaएक-शॉट Javassist बाइटकोड पैचर। यह मूल JAR से HttpReadListener लोड करता है और बदलता है:
// पहले
Connectors.executeRootHandler(connection.getRootHandler(), exchange);
// बाद में
Connectors.executeRootHandler(
HostHeaderHandler.WRAPPER.wrap(connection.getRootHandler()),
exchange
);
यह HostHeaderHandler को स्वचालित रूप से प्रत्येक HTTP अनुरोध में इंजेक्ट करता है, बिना HttpReadListener के पूर्ण पुनर्संकलन की आवश्यकता के (जो जटिल आंतरिक वर्गों और xnio आंतरिक पर निर्भर करता है)।
patch/src/HttpReadListener_only.javaUndertow 1.4.18.Final से मूल HttpReadListener का डिकंपाइल्ड स्रोत, जो इंजेक्शन बिंदु का पता लगाने के लिए संदर्भ के रूप में उपयोग किया जाता है। इस स्रोत का पैच किया गया संस्करण भी ऑडिट उद्देश्यों के लिए रखा गया है।
reports/result-20260401-0230.txtCVE स्कैन रिपोर्ट (2026-04-01 को उत्पन्न) जिसने undertow-core-1.4.18.Final में CVE-2025-12543 की पहचान की:
/opt/jboss/wildfly/modules/system/layers/base/io/undertow/core/main/undertow-core-1.4.18.Final.jar
स्कैन रिपोर्ट (result-20260401-0230.txt) ने पुष्टि की कि undertow-core-1.4.18.Final CVE-2025-12543 (CVSS 9.6) से प्रभावित है।
फिक्स Undertow PR #1857 में है, जिसे main (2026-01-09) में मर्ज किया गया और 2.2.x और 2.3.x में बैकपोर्ट किया गया। फिक्स HostHeaderHandler.java जोड़ता है और प्रत्येक अनुरोध पर Host हेडर को मान्य करने के लिए इसे HttpReadListener में वायर करता है।
Undertow 1.4.x → 2.2.x एक प्रमुख संस्करण छलांग है जिसमें ब्रेकिंग API परिवर्तन हैं। WildFly 11 JBoss Modules के माध्यम से Undertow 1.4.x से कसकर जुड़ा हुआ है। सीधे JAR स्वैप से स्टार्टअप पर ClassNotFoundException / NoSuchMethodError होगा।
HostHeaderHandler.java बैकपोर्ट करेंUndertow 1.4.18.Final के साथ संगत HostHeaderHandler.java का एक स्व-निहित संस्करण लिखें:
IP4_EXACT, IP6_EXACT) — 1.4.x NetworkUtils में उपलब्ध नहींexchange.isHostIncludedInRequestURI() को हटाएं — 1.4.x HttpServerExchange में उपलब्ध नहींWildFly इमेज के अंदर Undertow 1.4.18 + xnio क्लासपाथ के विरुद्ध संकलित करें:
javac -cp undertow-core-1.4.18.Final.jar:xnio-api-3.5.4.Final.jar:jboss-logging-3.3.1.Final.jar \
-d out HostHeaderHandler.java
HttpReadListener को पैच करेंइंजेक्शन बिंदु का पता लगाने के लिए Procyon के साथ HttpReadListener को डिकंपाइल करें:
Connectors.executeRootHandler(this.connection.getRootHandler(), httpServerExchange);
handleEventWithNoRunningRequest() में स्थित है।
क्योंकि HttpReadListener में अनाम आंतरिक वर्ग ($1, $2, $3) हैं जिन्हें डिकंपाइल्ड स्रोत से संदर्भित नहीं किया जा सकता है, पूर्ण पुनर्संकलन संभव नहीं है। इसके बजाय, बाइटकोड को सीधे इंस्ट्रूमेंट करने के लिए Javassist (PatchHttpReadListener.java) का उपयोग करें — रूट हैंडलर को HostHeaderHandler.WRAPPER के साथ लपेटने के लिए executeRootHandler कॉल को बदलें।
java -cp javassist.jar:undertow-core-1.4.18.Final.jar:out \
PatchHttpReadListener undertow-core-1.4.18.Final.jar out/
मूल JAR को कॉपी करें और पैच किए गए/नए क्लास फ़ाइलों को इंजेक्ट करें:
cp undertow-core-1.4.18.Final.jar undertow-core-1.4.18.Final-patched.jar
jar uf undertow-core-1.4.18.Final-patched.jar \
-C out io/undertow/server/handlers/HostHeaderHandler.class \
-C out "io/undertow/server/handlers/HostHeaderHandler\$Wrapper.class" \
-C out "io/undertow/server/handlers/HostHeaderHandler\$1.class" \
-C out io/undertow/server/protocol/http/HttpReadListener.class
पैच किए गए JAR के लिए एक COPY जोड़ें और इमेज के अंदर मूल को बदलें:
COPY patch/undertow-core-1.4.18.Final-patched.jar /tmp/
RUN cp /tmp/undertow-core-1.4.18.Final-patched.jar \
/opt/jboss/wildfly/modules/system/layers/base/io/undertow/core/main/undertow-core-1.4.18.Final.jar
docker build -t wildfly:11.0.0.Final-patched .
सत्यापन: