Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2025-12543-Fix-for-Wildfly — Docker base image con fix backportato per la validazione dell'header Host per CVE-2025-12543 in Undertow 1.4.x, che consente il deployment sicuro di applicazioni WildFly 11. | Kitploit
Strumenti/GitHubGitHub/kavin71725/cve-2025-12543-fix-for-wildfly
Sicurezza dell'Infrastruttura CloudSicurezza dei ContenitoriAnalisi delle VulnerabilitàSicurezza WebDevSecOpsSicurezza della Supply ChainConfigurazione Errata
GitHubkavin71725/cve-2025-12543-fix-for-wildfly

CVE-2025-12543-Fix-for-Wildfly

Docker base image con fix backportato per la validazione dell'header Host per CVE-2025-12543 in Undertow 1.4.x, che consente il deployment sicuro di applicazioni WildFly 11.

Vedi Repository
45 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Immagine Base WildFly 11.0.0.Final — Patch per CVE-2025-12543

Panoramica

Questo repository fornisce un'immagine Docker di base costruita su WildFly 11.0.0.Final con una correzione backportata per CVE-2025-12543, una vulnerabilità critica di validazione dell'header Host in Undertow.

L'immagine è pensata per essere fornita ai colleghi come base. Possono distribuire la propria applicazione .war e il proprio standalone.xml sopra di essa.


Riepilogo di CVE-2025-12543

CampoDettaglio
ID CVECVE-2025-12543
Componenteio.undertow:undertow-core
GravitàCritica (CVSS 9.6)
Versioni vulnerabiliTutte le versioni < 2.2.39 (incluse le 1.4.x)
Corretta inUndertow 2.2.39 / 2.3.22
Versione WildFly 11undertow-core-1.4.18.Final — vulnerabile

Descrizione della vulnerabilità

Undertow non valida correttamente l'header Host nelle richieste HTTP in arrivo. Le richieste contenenti header Host malformati o dannosi vengono elaborate senza essere respinte, consentendo:

  • Avvelenamento della cache
  • Dirottamento della sessione
  • Scansione della rete interna
  • Mescolanza di dati tra tenant / bypass dei confini di fiducia

Perché non aggiornare WildFly?

Altri utenti sono ancora su WildFly 11 e non ci sono risorse o piani attuali per l'aggiornamento. La correzione è stata backportata direttamente nel JAR Undertow 1.4.18.Final.


Struttura del repository

root@kitploit:~
.
├── Dockerfile                                  # Definizione principale dell'immagine
├── README.md
├── wildfly-dist-11.0.0.Final.tar.gz           # Archivio della distribuzione WildFly 11
├── reports/
│   ├── result-20260401-0230.txt               # Report di scansione CVE che ha identificato la vulnerabilità
│   └── wildfly_11.0.0.Final_*.txt             # Report di scansione aggiuntivi
└── patch/
    ├── src/
    │   ├── HostHeaderHandler.java             # Correzioni backportata — nuova classe handler
    │   ├── HttpReadListener_only.java         # Sorgente HttpReadListener decompilato + patchato (riferimento)
    │   └── PatchHttpReadListener.java         # Strumento di patch del bytecode tramite Javassist
    ├── build.sh                               # Script di build — ricostruisce il JAR patchato da zero
    ├── undertow-core-1.4.18.Final.jar         # JAR originale (non patchato) — conservato come riferimento
    └── undertow-core-1.4.18.Final-patched.jar # JAR patchato iniettato nell'immagine

Dettagli dei file

Dockerfile

Costruisce l'immagine finale. Esegue le seguenti operazioni:

  1. Usa bitnamilegacy/java:1.8.432-7-debian-12-r2 (OpenJDK 1.8.0_432) come base
  2. Estrae WildFly 11 in /opt/jboss/wildfly
  3. Sostituisce il JAR originale undertow-core-1.4.18.Final.jar con la versione patchata
  4. Avvia WildFly tramite standalone.sh -b 0.0.0.0 (si lega a tutte le interfacce)

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

Il JAR Undertow patchato. È identico all'originale tranne per due modifiche:

  • Aggiunto: io/undertow/server/handlers/HostHeaderHandler.class (e le sue classi interne)
  • Modificato: io/undertow/server/protocol/http/HttpReadListener.class — inietta HostHeaderHandler nella pipeline delle richieste

patch/src/HostHeaderHandler.java

L'handler backportato di validazione dell'header Host. Trasposto dalla PR Undertow #1857 (UNDERTOW-2656).

Tutte le costanti (IP4_EXACT, IP6_EXACT, tabelle di caratteri) sono autonome — nessuna dipendenza da API introdotte in Undertow 2.x. A ogni richiesta HTTP, valida:

  • La presenza dell'header Host (obbligatorio per HTTP/1.1)
  • Esattamente un header Host (niente duplicati)
  • Porta numerica e nel range 1–65535
  • Literal IP (IPv4, IPv6, IPvFuture) ben formati
  • Caratteri hostname validi secondo i caratteri reg-name RFC 3986
  • Rifiuta con 400 Bad Request a ogni violazione

patch/src/PatchHttpReadListener.java

Un patcher del bytecode Javassist monouso. Carica HttpReadListener dal JAR originale e sostituisce:

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

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

Questo inietta HostHeaderHandler automaticamente in ogni richiesta HTTP, senza richiedere una ricompilazione completa di HttpReadListener (che dipende da classi interne complesse e dagli internals di xnio).

patch/src/HttpReadListener_only.java

Sorgente decompilato dell'HttpReadListener originale di Undertow 1.4.18.Final, usato come riferimento per individuare il punto di iniezione. Anche la versione patchata di questo sorgente è conservata qui per scopi di audit.

reports/result-20260401-0230.txt

Report di scansione CVE (generato il 01-04-2026) che ha identificato CVE-2025-12543 in undertow-core-1.4.18.Final in:

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

Procedura di patch

1. Identificare la vulnerabilità

Il report di scansione (result-20260401-0230.txt) ha confermato che undertow-core-1.4.18.Final è vulnerabile a CVE-2025-12543 (CVSS 9.6).

2. Studiare la correzione upstream

La correzione si trova nella PR Undertow PR #1857, integrata in main (09-01-2026) e backportata nelle serie 2.2.x e 2.3.x. La correzione aggiunge HostHeaderHandler.java e lo collega a HttpReadListener per validare l'header Host a ogni richiesta.

3. Valutare la fattibilità dell'aggiornamento diretto

Undertow 1.4.x → 2.2.x è un salto di versione major con modifiche di API che rompono la compatibilità. WildFly 11 è strettamente accoppiato a Undertow 1.4.x tramite JBoss Modules. Una sostituzione diretta del JAR causerebbe ClassNotFoundException / NoSuchMethodError all'avvio.

4. Backport di HostHeaderHandler.java

Scrivere una versione autonoma di HostHeaderHandler.java compatibile con Undertow 1.4.18.Final:

  • Inline di tutte le costanti regex (IP4_EXACT, IP6_EXACT) — non disponibili in NetworkUtils della 1.4.x
  • Rimozione di exchange.isHostIncludedInRequestURI() — non disponibile in HttpServerExchange della 1.4.x
  • Mantenere tutta la logica di validazione identica alla correzione upstream

Compilare usando il classpath di Undertow 1.4.18 + xnio all'interno dell'immagine WildFly:

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. Patch di HttpReadListener tramite Javassist

Decompilare HttpReadListener con Procyon per individuare il punto di iniezione:

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

situato in handleEventWithNoRunningRequest().

Poiché HttpReadListener ha classi interne anonime ($1, $2, $3) che non possono essere referenziate dal sorgente decompilato, una ricompilazione completa non è fattibile. Si usa invece Javassist (PatchHttpReadListener.java) per instrumentare direttamente il bytecode — sostituendo la chiamata executeRootHandler in modo che avvolga il root handler con HostHeaderHandler.WRAPPER.

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

6. Ricreare il JAR

Copiare il JAR originale e iniettare i file di classe nuovi/patchati:

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. Aggiornare il Dockerfile

Aggiungere un COPY per il JAR patchato e sostituire l'originale all'interno dell'immagine:

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. Build e validazione

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

Validazione:

root@kitploit:~
# Header Host valido — dovrebbe restituire 200
curl -v -H "Host: localhost:8080" http://localhost:8080/

# Caratteri non validi in Host — dovrebbe restituire 400 Host Header Bad Characters
curl -v -H "Host: evil<script>" http://localhost:8080/

# Header Host duplicati — dovrebbe restituire 400 Bad Request
# Nota: curl deduplica internamente gli header Host, quindi è necessario un tentativo TCP grezzo per questo 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>&-

# Porta fuori range — dovrebbe restituire 400 Host Header Malformed Port
curl -v -H "Host: localhost:99999" http://localhost:8080/
RichiestaAttesoRisultato
Host: localhost:8080 (valido)200 OK✓
Host: evil<script> (caratteri non validi)400 Host Header Bad Characters✓
Due header Host: (duplicato, TCP grezzo)400 Bad Request✓
Host: localhost:99999 (porta non valida)400 Host Header Malformed Port✓

Modifica comportamentale nota

Le richieste HTTP/1.1 devono includere un header Host

Prima di questa patch, l'opzione REQUIRE_HOST_HTTP11 di WildFly era impostata di default su false, il che significava che le richieste HTTP/1.1 senza header Host venivano accettate silenziosamente.

Dopo questa patch, HostHeaderHandler applica rigorosamente la RFC 7230 — tutte le richieste HTTP/1.1 senza header Host vengono respinte con 400 No Host Header, indipendentemente dall'impostazione di REQUIRE_HOST_HTTP11.

Chi potrebbe essere interessato:

  • Sonde di health check che inviano un semplice GET / HTTP/1.1 senza header Host
  • Agenti di monitoraggio interni o ping di bilanciatori di carico che omettono l'header Host
  • Qualsiasi client HTTP/1.1 personalizzato che non imposta l'header Host

Cosa fare: Assicurarsi che tutti i client HTTP/1.1 includano un header Host. Questo è già richiesto dalla RFC 7230 e qualsiasi libreria HTTP standard (curl, HttpClient di Java, ecc.) lo fa automaticamente. Sono interessati solo i client non conformi o personalizzati molto vecchi.

root@kitploit:~
# Ora verrà respinta con 400:
GET /health HTTP/1.1
Connection: close

# Questo è corretto e funzionerà:
GET /health HTTP/1.1
Host: your-server:8080
Connection: close

Ricostruire il JAR patchato da zero

Se è necessario rigenerare patch/undertow-core-1.4.18.Final-patched.jar in un nuovo ambiente (ad es. il JAR precompilato non è disponibile), usare lo script di build fornito.

Requisiti: JDK Java 8, curl, accesso a Internet per Maven Central.

root@kitploit:~
cd patch
bash build.sh

Lo script eseguirà le seguenti operazioni:

  1. Scaricherà tutti i JAR richiesti da Maven Central (undertow-core, xnio-api, jboss-logging, javassist)
  2. Compilerà HostHeaderHandler.java
  3. Compilerà ed eseguirà PatchHttpReadListener.java per patchare il bytecode di HttpReadListener tramite Javassist
  4. Ricreerà tutto in undertow-core-1.4.18.Final-patched.jar

Al termine, procedere con docker build come al solito.


Creazione dell'immagine

Nota: wildfly-dist-11.0.0.Final.tar.gz non è incluso in questo repository (supera il limite di 100 MB di GitHub). Scaricarlo da Maven Central prima della build:

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 .

Esecuzione dell'immagine

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

I colleghi possono montare o estendere l'immagine con la propria distribuzione:

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/
Scarica lo strumento