Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2025-12543-Fix-for-Wildfly — Docker-Basis-Image mit backportiertem Host-Header-Validierungs-Fix für CVE-2025-12543 in Undertow 1.4.x, das die sichere Bereitstellung von WildFly 11-Anwendungen ermöglicht. | Kitploit
Tools/GitHubGitHub/kavin71725/cve-2025-12543-fix-for-wildfly
Cloud-Infrastruktur-SicherheitContainer-SicherheitSchwachstellenanalyseWebsicherheitDevSecOpsLieferkettensicherheitFehlkonfiguration
GitHubkavin71725/cve-2025-12543-fix-for-wildfly

CVE-2025-12543-Fix-for-Wildfly

Docker-Basis-Image mit backportiertem Host-Header-Validierungs-Fix für CVE-2025-12543 in Undertow 1.4.x, das die sichere Bereitstellung von WildFly 11-Anwendungen ermöglicht.

Repository anzeigen
4vor 5 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

WildFly 11.0.0.Final Basis-Image – CVE-2025-12543-Patch

Übersicht

Dieses Repository stellt ein Docker-Basis-Image bereit, das auf WildFly 11.0.0.Final basiert und einen Backport-Fix für CVE-2025-12543 enthält, eine kritische Schwachstelle in der Host-Header-Validierung in Undertow.

Das Image ist als Grundlage für Kollegen gedacht. Sie können ihre eigene .war-Anwendung und standalone.xml darauf bereitstellen.


CVE-2025-12543 Zusammenfassung

FeldDetail
CVE-IDCVE-2025-12543
Komponenteio.undertow:undertow-core
SchweregradKritisch (CVSS 9.6)
Betroffene VersionenAlle Versionen < 2.2.39 (einschließlich 1.4.x)
Behoben inUndertow 2.2.39 / 2.3.22
WildFly 11 Versionundertow-core-1.4.18.Final — betroffen

Beschreibung der Schwachstelle

Undertow validiert den Host-Header eingehender HTTP-Anfragen nicht ordnungsgemäß. Anfragen mit fehlerhaften oder bösartigen Host-Headern werden ohne Zurückweisung verarbeitet, was Folgendes ermöglicht:

  • Cache-Vergiftung
  • Session-Hijacking
  • Internes Netzwerk-Scanning
  • Cross-Tenant-Datenvermischung / Trust-Boundary-Umgehungen

Warum nicht WildFly aktualisieren?

Andere Benutzer verwenden weiterhin WildFly 11, und es gibt derzeit keine Ressourcen oder Pläne für ein Upgrade. Der Fix wurde stattdessen zurückportiert direkt in das Undertow 1.4.18.Final-JAR.


Repository-Struktur

root@kitploit:~
.
├── Dockerfile                                  # Main image definition
├── README.md
├── wildfly-dist-11.0.0.Final.tar.gz           # WildFly 11 distribution archive
├── reports/
│   ├── result-20260401-0230.txt               # CVE scan report that identified the vulnerability
│   └── wildfly_11.0.0.Final_*.txt             # Additional scan reports
└── patch/
    ├── src/
    │   ├── HostHeaderHandler.java             # Backported fix — new handler class
    │   ├── HttpReadListener_only.java         # Decompiled + patched HttpReadListener source (reference)
    │   └── PatchHttpReadListener.java         # Javassist bytecode patcher tool
    ├── build.sh                               # Build script — rebuilds the patched JAR from scratch
    ├── undertow-core-1.4.18.Final.jar         # Original (unpatched) JAR — kept for reference
    └── undertow-core-1.4.18.Final-patched.jar # Patched JAR injected into the image

Dateidetails

Dockerfile

Erstellt das endgültige Image. Es:

  1. Verwendet bitnamilegacy/java:1.8.432-7-debian-12-r2 (OpenJDK 1.8.0_432) als Basis
  2. Extrahiert WildFly 11 nach /opt/jboss/wildfly
  3. Ersetzt das ursprüngliche undertow-core-1.4.18.Final.jar durch die gepatchte Version
  4. Startet WildFly über standalone.sh -b 0.0.0.0 (bindet an alle Schnittstellen)

patch/undertow-core-1.4.18.Final-patched.jar

Das gepatchte Undertow-JAR. Es ist bis auf zwei Änderungen identisch mit dem Original:

  • Hinzugefügt: io/undertow/server/handlers/HostHeaderHandler.class (und seine inneren Klassen)
  • Modifiziert: io/undertow/server/protocol/http/HttpReadListener.class — injiziert HostHeaderHandler in die Anfrage-Pipeline

patch/src/HostHeaderHandler.java

Der zurückportierte Host-Header-Validierungs-Handler. Portiert von Undertow PR #1857 (UNDERTOW-2656).

Alle Konstanten (IP4_EXACT, IP6_EXACT, Zeichentabellen) sind in sich geschlossen — keine Abhängigkeit von APIs, die in Undertow 2.x hinzugefügt wurden. Bei jeder HTTP-Anfrage validiert es:

  • Host-Header ist vorhanden (erforderlich für HTTP/1.1)
  • Genau ein Host-Header (keine Duplikate)
  • Port ist numerisch und im Bereich 1–65535
  • IP-Literale (IPv4, IPv6, IPvFuture) sind wohlgeformt
  • Hostname-Zeichen sind gültige RFC-3986-Reg-Name-Zeichen
  • Ablehnung mit 400 Bad Request bei jedem Verstoß

patch/src/PatchHttpReadListener.java

Ein einmaliger Javassist-Bytecode-Patcher. Er lädt HttpReadListener aus dem ursprünglichen JAR und ersetzt:

root@kitploit:~
// Before
Connectors.executeRootHandler(connection.getRootHandler(), exchange);

// After
Connectors.executeRootHandler(
    HostHeaderHandler.WRAPPER.wrap(connection.getRootHandler()),
    exchange
);

Dies injiziert HostHeaderHandler automatisch in jede HTTP-Anfrage, ohne dass eine vollständige Neukompilierung von HttpReadListener erforderlich ist (was von komplexen inneren Klassen und xnio-Interna abhängt).

patch/src/HttpReadListener_only.java

Dekompilierter Quellcode des originalen HttpReadListener aus Undertow 1.4.18.Final, verwendet als Referenz zur Lokalisierung des Injektionspunkts. Die gepatchte Version dieses Quellcodes wird hier ebenfalls zu Prüfzwecken aufbewahrt.

reports/result-20260401-0230.txt

CVE-Scan-Bericht (generiert am 01.04.2026), der CVE-2025-12543 in undertow-core-1.4.18.Final unter folgendem Pfad identifizierte:

root@kitploit:~
/opt/jboss/wildfly/modules/system/layers/base/io/undertow/core/main/undertow-core-1.4.18.Final.jar

Patch-Verfahren

1. Die Schwachstelle identifizieren

Der Scan-Bericht (result-20260401-0230.txt) bestätigte, dass undertow-core-1.4.18.Final von CVE-2025-12543 (CVSS 9.6) betroffen ist.

2. Den Upstream-Fix recherchieren

Der Fix befindet sich in Undertow PR #1857, zusammengeführt in main (09.01.2026) und zurückportiert auf 2.2.x und 2.3.x. Der Fix fügt HostHeaderHandler.java hinzu und bindet es in HttpReadListener ein, um den Host-Header bei jeder Anfrage zu validieren.

3. Direkte Upgrade-Machbarkeit bewerten

Undertow 1.4.x → 2.2.x ist ein Major-Version-Sprung mit brechenden API-Änderungen. WildFly 11 ist über JBoss Modules eng an Undertow 1.4.x gekoppelt. Ein direkter JAR-Austausch würde beim Start ClassNotFoundException / NoSuchMethodError verursachen.

4. HostHeaderHandler.java zurückportieren

Schreiben Sie eine eigenständige Version von HostHeaderHandler.java, die mit Undertow 1.4.18.Final kompatibel ist:

  • Alle Regex-Konstanten (IP4_EXACT, IP6_EXACT) inline einfügen — nicht verfügbar in 1.4.x NetworkUtils
  • exchange.isHostIncludedInRequestURI() entfernen — nicht verfügbar in 1.4.x HttpServerExchange
  • Die gesamte Validierungslogik identisch zum Upstream-Fix halten

Kompilieren gegen den Undertow 1.4.18 + xnio Classpath innerhalb des WildFly-Images:

root@kitploit:~
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

5. HttpReadListener mit Javassist patchen

Dekompilieren Sie HttpReadListener mit Procyon, um den Injektionspunkt zu lokalisieren:

root@kitploit:~
Connectors.executeRootHandler(this.connection.getRootHandler(), httpServerExchange);

befindet sich in handleEventWithNoRunningRequest().

Da HttpReadListener anonyme innere Klassen ($1, $2, $3) enthält, die aus dekompiliertem Quellcode nicht referenziert werden können, ist eine vollständige Neukompilierung nicht praktikabel. Verwenden Sie stattdessen Javassist (PatchHttpReadListener.java), um den Bytecode direkt zu instrumentieren — Ersetzen des executeRootHandler-Aufrufs, um den Root-Handler mit HostHeaderHandler.WRAPPER zu umschließen.

root@kitploit:~
java -cp javassist.jar:undertow-core-1.4.18.Final.jar:out \
     PatchHttpReadListener undertow-core-1.4.18.Final.jar out/

6. Das JAR neu paketieren

Kopieren Sie das originale JAR und fügen Sie die gepatchten/neuen Klassendateien ein:

root@kitploit:~
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

7. Das Dockerfile aktualisieren

Fügen Sie ein COPY für das gepatchte JAR hinzu und ersetzen Sie das Original im Image:

root@kitploit:~
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

8. Erstellen und validieren

root@kitploit:~
docker build -t wildfly:11.0.0.Final-patched .

Validierung:

root@kitploit:~
# Valid Host header — should return 200
curl -v -H "Host: localhost:8080" http://localhost:8080/

# Bad characters in Host — should return 400 Host Header Bad Characters
curl -v -H "Host: evil<script>" http://localhost:8080/

# Duplicate Host headers — should return 400 Bad Request
# Note: curl deduplicates Host headers internally, so a raw TCP request is required for this test
exec 3<>/dev/tcp/localhost/8080; \
printf "GET / HTTP/1.1\r\nHost: localhost\r\nHost: evil.com\r\nConnection: close\r\n\r\n" >&3; \
sleep 1; head -1 <&3; exec 3>&-

# Port out of range — should return 400 Host Header Malformed Port
curl -v -H "Host: localhost:99999" http://localhost:8080/
Anfrage (Request)Erwartet (Expected)Ergebnis (Result)
Host: localhost:8080 (gültig)200 OK✓
Host: evil<script> (ungültige Zeichen)400 Host Header Bad Characters✓
Zwei Host:-Header (dupliziert, raw TCP)400 Bad Request✓
Host: localhost:99999 (ungültiger Port)400 Host Header Malformed Port✓

Bekannte Verhaltensänderung

HTTP/1.1-Anfragen müssen einen Host-Header enthalten

Vor diesem Patch stand die Option REQUIRE_HOST_HTTP11 von WildFly standardmäßig auf false, was bedeutete, dass HTTP/1.1-Anfragen ohne Host-Header stillschweigend akzeptiert wurden.

Nach diesem Patch setzt der HostHeaderHandler RFC 7230 streng durch — alle HTTP/1.1-Anfragen ohne einen Host-Header werden mit 400 No Host Header abgelehnt, unabhängig von der Einstellung REQUIRE_HOST_HTTP11.

Wer könnte betroffen sein:

  • Health-Check-Probes, die bare GET / HTTP/1.1 ohne Host-Header senden
  • Interne Überwachungsagenten oder Load-Balancer-Pings, die den Host-Header weglassen
  • Jeder benutzerdefinierte HTTP/1.1-Client, der keinen Host-Header setzt

Was ist zu tun: Stellen Sie sicher, dass alle HTTP/1.1-Clients einen Host-Header enthalten. Dies ist bereits durch RFC 7230 erforderlich und jede Standard-HTTP-Bibliothek (curl, Java's HttpClient, etc.) macht dies automatisch. Nur nicht konforme oder sehr alte benutzerdefinierte Clients sind betroffen.

root@kitploit:~
# This will now be rejected with 400:
GET /health HTTP/1.1
Connection: close

# This is correct and will work fine:
GET /health HTTP/1.1
Host: your-server:8080
Connection: close

Das gepatchte JAR von Grund auf neu erstellen

Wenn Sie patch/undertow-core-1.4.18.Final-patched.jar in einer neuen Umgebung neu generieren müssen (z.B. wenn das vorgebaute JAR nicht verfügbar ist), verwenden Sie das bereitgestellte Build-Skript.

Anforderungen: Java 8 JDK, curl, Internetzugang zu Maven Central.

root@kitploit:~
cd patch
bash build.sh

Das Skript wird:

  1. Alle erforderlichen JARs von Maven Central herunterladen (undertow-core, xnio-api, jboss-logging, javassist)
  2. HostHeaderHandler.java kompilieren
  3. PatchHttpReadListener.java kompilieren und ausführen, um den Bytecode von HttpReadListener mittels Javassist zu patchen
  4. Alles in undertow-core-1.4.18.Final-patched.jar neu paketieren

Nach Abschluss fahren Sie wie gewohnt mit docker build fort.


Erstellen des Images

Hinweis: wildfly-dist-11.0.0.Final.tar.gz ist nicht in diesem Repository enthalten (überschreitet das 100-MB-Limit von GitHub). Laden Sie es vor dem Erstellen von Maven Central herunter:

root@kitploit:~
https://repo1.maven.org/maven2/org/wildfly/wildfly-dist/11.0.0.Final/wildfly-dist-11.0.0.Final.tar.gz
root@kitploit:~
docker build -t wildfly:11.0.0.Final-patched .

Ausführen des Images

root@kitploit:~
docker run -d -p 8080:8080 wildfly:11.0.0.Final-patched

Kollegen können das Image mit ihrer eigenen Bereitstellung mounten oder erweitern:

root@kitploit:~
FROM wildfly:11.0.0.Final-patched
COPY standalone.xml /opt/jboss/wildfly/standalone/configuration/standalone.xml
COPY myapp.war /opt/jboss/wildfly/standalone/deployments/
Tool herunterladen