Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-12543-Fix-for-Wildfly — Image de base Docker avec correctif de validation d'en-tête Host rétroporté pour CVE-2025-12543 dans Undertow 1.4.x, permettant un déploiement sécurisé des applications WildFly 11. | Kitploit
Outils/GitHubGitHub/kavin71725
/
cve-2025-12543-fix-for-wildfly
Sécurité de l'Infrastructure CloudSécurité des ConteneursAnalyse des VulnérabilitésSécurité WebDevSecOpsSécurité de la Chaîne LogistiqueMauvaise Configuration
GitHubkavin71725/cve-2025-12543-fix-for-wildfly

CVE-2025-12543-Fix-for-Wildfly

Image de base Docker avec correctif de validation d'en-tête Host rétroporté pour CVE-2025-12543 dans Undertow 1.4.x, permettant un déploiement sécurisé des applications WildFly 11.

Voir le dépôt
il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Image de base WildFly 11.0.0.Final — Correctif CVE-2025-12543

Présentation

Ce dépôt fournit une image Docker de base construite sur WildFly 11.0.0.Final avec un correctif rétroporté pour CVE-2025-12543, une vulnérabilité critique de validation de l'en-tête Host dans Undertow.

L'image est destinée à être fournie aux collègues comme base. Ils peuvent déployer leur propre application .war et leur standalone.xml par-dessus.


Résumé de CVE-2025-12543

ChampDétail
Identifiant CVECVE-2025-12543
Composantio.undertow:undertow-core
SévéritéCritique (CVSS 9.6)
Versions affectéesToutes les versions < 2.2.39 (y compris 1.4.x)
Corrigé dansUndertow 2.2.39 / 2.3.22
Version WildFly 11undertow-core-1.4.18.Final — affectée

Description de la vulnérabilité

Undertow ne parvient pas à valider correctement l'en-tête Host dans les requêtes HTTP entrantes. Les requêtes contenant des en-têtes Host malformés ou malveillants sont traitées sans rejet, permettant :

  • L'empoisonnement du cache
  • Le détournement de session
  • Le balayage du réseau interne
  • Le mélange de données inter-locataires / le contournement des limites de confiance

Pourquoi ne pas mettre à niveau WildFly ?

D'autres utilisateurs sont toujours sur WildFly 11, et il n'y a actuellement ni ressources ni projets de mise à niveau. Le correctif a été rétroporté directement dans le JAR Undertow 1.4.18.Final.


Structure du dépôt

root@kitploit:~
.
├── Dockerfile                                  # Définition de l'image principale
├── README.md
├── wildfly-dist-11.0.0.Final.tar.gz           # Archive de distribution WildFly 11
├── reports/
│   ├── result-20260401-0230.txt               # Rapport de scan CVE qui a identifié la vulnérabilité
│   └── wildfly_11.0.0.Final_*.txt             # Rapports de scan supplémentaires
└── patch/
    ├── src/
    │   ├── HostHeaderHandler.java             # Correctif rétroporté — nouvelle classe de gestionnaire
    │   ├── HttpReadListener_only.java         # Source décompilée + corrigée de HttpReadListener (référence)
    │   └── PatchHttpReadListener.java         # Outil de correction de bytecode Javassist
    ├── build.sh                               # Script de construction — reconstruit le JAR corrigé à partir de zéro
    ├── undertow-core-1.4.18.Final.jar         # JAR original (non corrigé) — conservé pour référence
    └── undertow-core-1.4.18.Final-patched.jar # JAR corrigé injecté dans l'image

Détails des fichiers

Dockerfile

Construit l'image finale. Il :

  1. Utilise bitnamilegacy/java:1.8.432-7-debian-12-r2 (OpenJDK 1.8.0_432) comme base
  2. Extrait WildFly 11 dans /opt/jboss/wildfly
  3. Remplace le undertow-core-1.4.18.Final.jar original par la version corrigée
  4. Démarre WildFly via standalone.sh -b 0.0.0.0 (liaison à toutes les interfaces)

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

Le JAR Undertow corrigé. Il est identique à l'original à l'exception de deux modifications :

  • Ajouté : io/undertow/server/handlers/HostHeaderHandler.class (et ses classes internes)
  • Modifié : io/undertow/server/protocol/http/HttpReadListener.class — injecte HostHeaderHandler dans le pipeline de requêtes

patch/src/HostHeaderHandler.java

Le gestionnaire de validation d'en-tête Host rétroporté. Porté depuis la PR Undertow #1857 (UNDERTOW-2656).

Toutes les constantes (IP4_EXACT, IP6_EXACT, tables de caractères) sont autonomes — aucune dépendance aux API ajoutées dans Undertow 2.x. Sur chaque requête HTTP, il valide :

  • L'en-tête Host est présent (obligatoire pour HTTP/1.1)
  • Exactement un en-tête Host (pas de doublons)
  • Le port est numérique et dans la plage 1–65535
  • Les littéraux IP (IPv4, IPv6, IPvFuture) sont bien formés
  • Les caractères du nom d'hôte sont des caractères valides RFC 3986 reg-name
  • Rejette avec 400 Bad Request en cas de violation

patch/src/PatchHttpReadListener.java

Un correcteur de bytecode Javassist à usage unique. Il charge HttpReadListener depuis le JAR original et remplace :

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

// Après
Connectors.executeRootHandler(
    HostHeaderHandler.WRAPPER.wrap(connection.getRootHandler()),
    exchange
);

Ceci injecte HostHeaderHandler automatiquement dans chaque requête HTTP, sans nécessiter une recompilation complète de HttpReadListener (qui dépend de classes internes complexes et d'internals xnio).

patch/src/HttpReadListener_only.java

Source décompilée du HttpReadListener original d'Undertow 1.4.18.Final, utilisée comme référence pour localiser le point d'injection. La version corrigée de cette source est également conservée ici à des fins d'audit.

reports/result-20260401-0230.txt

Rapport de scan CVE (généré le 2026-04-01) qui a identifié CVE-2025-12543 dans undertow-core-1.4.18.Final à :

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

Procédure de correction

1. Identifier la vulnérabilité

Le rapport de scan (result-20260401-0230.txt) a confirmé que undertow-core-1.4.18.Final est affecté par CVE-2025-12543 (CVSS 9.6).

2. Rechercher le correctif amont

Le correctif se trouve dans Undertow PR #1857, fusionné dans main (2026-01-09) et rétroporté dans 2.2.x et 2.3.x. Le correctif ajoute HostHeaderHandler.java et le câble dans HttpReadListener pour valider l'en-tête Host sur chaque requête.

3. Évaluer la faisabilité d'une mise à niveau directe

Undertow 1.4.x → 2.2.x est un saut de version majeur avec des changements d'API cassants. WildFly 11 est étroitement couplé à Undertow 1.4.x via JBoss Modules. Un remplacement direct du JAR provoquerait ClassNotFoundException / NoSuchMethodError au démarrage.

4. Rétroporter HostHeaderHandler.java

Écrire une version autonome de HostHeaderHandler.java compatible avec Undertow 1.4.18.Final :

  • Intégrer toutes les constantes regex (IP4_EXACT, IP6_EXACT) — non disponibles dans NetworkUtils de la version 1.4.x
  • Supprimer exchange.isHostIncludedInRequestURI() — non disponible dans HttpServerExchange de la version 1.4.x
  • Garder toute la logique de validation identique au correctif amont

Compiler avec le classpath Undertow 1.4.18 + xnio à l'intérieur de l'image 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. Corriger HttpReadListener via Javassist

Décompiler HttpReadListener avec Procyon pour localiser le point d'injection :

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

situé dans handleEventWithNoRunningRequest().

Comme HttpReadListener a des classes internes anonymes ($1, $2, $3) qui ne peuvent pas être référencées depuis une source décompilée, une recompilation complète n'est pas réalisable. Utiliser plutôt Javassist (PatchHttpReadListener.java) pour instrumenter directement le bytecode — en remplaçant l'appel executeRootHandler pour envelopper le gestionnaire racine avec 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. Reconditionner le JAR

Copier le JAR original et injecter les fichiers de classe corrigés/nouveaux :

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. Mettre à jour le Dockerfile

Ajouter un COPY pour le JAR corrigé et remplacer l'original dans l'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. Construire et valider

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

Validation :

root@kitploit:~
# En-tête Host valide — doit renvoyer 200
curl -v -H "Host: localhost:8080" http://localhost:8080/

# Caractères incorrects dans Host — doit renvoyer 400 Host Header Bad Characters
curl -v -H "Host: evil<script>" http://localhost:8080/

# En-têtes Host en double — doit renvoyer 400 Bad Request
# Remarque : curl déduplique les en-têtes Host en interne, donc une requête TCP brute est nécessaire pour ce 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 hors plage — doit renvoyer 400 Host Header Malformed Port
curl -v -H "Host: localhost:99999" http://localhost:8080/
RequêteAttenduRésultat
Host: localhost:8080 (valide)200 OK✓
Host: evil<script> (mauvais caractères)400 Host Header Bad Characters✓
Deux en-têtes Host: (doublon, TCP brut)400 Bad Request✓
Host: localhost:99999 (mauvais port)400 Host Header Malformed Port✓

Changement de comportement connu

Les requêtes HTTP/1.1 doivent inclure un en-tête Host

Avant ce correctif, l'option REQUIRE_HOST_HTTP11 de WildFly était par défaut à false, donc les requêtes HTTP/1.1 sans en-tête Host étaient acceptées silencieusement.

Après ce correctif, le HostHeaderHandler applique strictement la RFC 7230 — toutes les requêtes HTTP/1.1 sans en-tête Host sont rejetées avec 400 No Host Header, quel que soit le paramètre REQUIRE_HOST_HTTP11.

Qui peut être affecté :

  • Les sondes de vérification de santé qui envoient un GET / HTTP/1.1 brut sans en-tête Host
  • Les agents de surveillance interne ou les pings d'équilibreur de charge qui omettent l'en-tête Host
  • Tout client HTTP/1.1 personnalisé qui ne définit pas d'en-tête Host

Que faire : Assurez-vous que tous les clients HTTP/1.1 incluent un en-tête Host. Ceci est déjà requis par la RFC 7230 et toute bibliothèque HTTP standard (curl, HttpClient de Java, etc.) le fait automatiquement. Seuls les clients non conformes ou très anciens sont affectés.

root@kitploit:~
# Ceci sera désormais rejeté avec 400 :
GET /health HTTP/1.1
Connection: close

# Ceci est correct et fonctionnera :
GET /health HTTP/1.1
Host: votre-serveur:8080
Connection: close

Reconstruire le JAR corrigé à partir de zéro

Si vous devez régénérer patch/undertow-core-1.4.18.Final-patched.jar dans un nouvel environnement (par exemple, si le JAR pré-construit n'est pas disponible), utilisez le script de construction fourni.

Prérequis : JDK Java 8, curl, accès Internet à Maven Central.

root@kitploit:~
cd patch
bash build.sh

Le script va :

  1. Télécharger tous les JAR requis depuis Maven Central (undertow-core, xnio-api, jboss-logging, javassist)
  2. Compiler HostHeaderHandler.java
  3. Compiler et exécuter PatchHttpReadListener.java pour corriger le bytecode de HttpReadListener via Javassist
  4. Reconditionner le tout dans undertow-core-1.4.18.Final-patched.jar

Une fois terminé, procédez au docker build comme d'habitude.


Construction de l'image

Remarque : wildfly-dist-11.0.0.Final.tar.gz n'est pas inclus dans ce dépôt (dépasse la limite de 100 Mo de GitHub). Téléchargez-le depuis Maven Central avant la construction :

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 .

Exécution de l'image

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

Les collègues peuvent monter ou étendre l'image avec leur propre déploiement :

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/
Télécharger l’outil