Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/kavin71725/cve-2025-12543-fix-for-wildfly
Segurança de Infraestrutura em NuvemSegurança de ContêineresAnálise de VulnerabilidadesSegurança WebDevSecOpsSegurança da Cadeia de SuprimentosConfiguração Incorreta
GitHubkavin71725/cve-2025-12543-fix-for-wildfly

CVE-2025-12543-Fix-for-Wildfly

Imagem base Docker com correção retroativa de validação de cabeçalho Host para CVE-2025-12543 no Undertow 1.4.x, permitindo a implantação segura de aplicações WildFly 11.

Ver Repositório
4há 5 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Imagem Base WildFly 11.0.0.Final — Correção CVE-2025-12543

Visão Geral

Este repositório fornece uma imagem Docker base construída sobre o WildFly 11.0.0.Final com uma correção portada para CVE-2025-12543, uma vulnerabilidade crítica de validação do cabeçalho Host no Undertow.

A imagem destina-se a ser fornecida a colegas como base. Eles podem implantar sua própria aplicação .war e standalone.xml sobre ela.


Resumo da CVE-2025-12543

CampoDetalhe
ID CVECVE-2025-12543
Componenteio.undertow:undertow-core
GravidadeCrítica (CVSS 9.6)
Versões afetadasTodas as versões < 2.2.39 (incluindo 1.4.x)
Corrigido emUndertow 2.2.39 / 2.3.22
Versão do WildFly 11undertow-core-1.4.18.Final — afetada

Descrição da Vulnerabilidade

O Undertow não valida corretamente o cabeçalho Host em requisições HTTP recebidas. Requisições contendo cabeçalhos Host malformados ou maliciosos são processadas sem rejeição, permitindo:

  • Envenenamento de cache
  • Sequestro de sessão
  • Varredura de rede interna
  • Mistura de dados entre inquilinos / desvio de limites de confiança

Por Que Não Atualizar o WildFly?

Outros usuários ainda estão no WildFly 11, e não há recursos ou planos atuais para atualização. A correção foi portada diretamente para o JAR Undertow 1.4.18.Final.


Estrutura do Repositório

root@kitploit:~
.
├── Dockerfile                                  # Definição principal da imagem
├── README.md
├── wildfly-dist-11.0.0.Final.tar.gz           # Arquivo de distribuição do WildFly 11
├── reports/
│   ├── result-20260401-0230.txt               # Relatório de varredura CVE que identificou a vulnerabilidade
│   └── wildfly_11.0.0.Final_*.txt             # Relatórios de varredura adicionais
└── patch/
    ├── src/
    │   ├── HostHeaderHandler.java             # Correção portada — nova classe de manipulador
    │   ├── HttpReadListener_only.java         # Código fonte do HttpReadListener descompilado + corrigido (referência)
    │   └── PatchHttpReadListener.java         # Ferramenta de correção de bytecode Javassist
    ├── build.sh                               # Script de compilação — reconstrói o JAR corrigido do zero
    ├── undertow-core-1.4.18.Final.jar         # JAR original (não corrigido) — mantido para referência
    └── undertow-core-1.4.18.Final-patched.jar # JAR corrigido injetado na imagem

Detalhes dos Arquivos

Dockerfile

Constrói a imagem final. Ele:

  1. Usa bitnamilegacy/java:1.8.432-7-debian-12-r2 (OpenJDK 1.8.0_432) como base
  2. Extrai o WildFly 11 em /opt/jboss/wildfly
  3. Substitui o undertow-core-1.4.18.Final.jar original pela versão corrigida
  4. Inicia o WildFly via standalone.sh -b 0.0.0.0 (escuta em todas as interfaces)

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

O JAR Undertow corrigido. É idêntico ao original exceto por duas alterações:

  • Adicionado: io/undertow/server/handlers/HostHeaderHandler.class (e suas classes internas)
  • Modificado: io/undertow/server/protocol/http/HttpReadListener.class — injeta HostHeaderHandler no pipeline de requisições

patch/src/HostHeaderHandler.java

O manipulador de validação do cabeçalho Host portado. Portado do PR #1857 do Undertow (UNDERTOW-2656).

Todas as constantes (IP4_EXACT, IP6_EXACT, tabelas de caracteres) são autocontidas — sem dependência de APIs adicionadas no Undertow 2.x. Em cada requisição HTTP, ele valida:

  • Cabeçalho Host está presente (obrigatório para HTTP/1.1)
  • Exatamente um cabeçalho Host (sem duplicatas)
  • Porta é numérica e no intervalo 1–65535
  • Literais IP (IPv4, IPv6, IPvFuture) estão bem formados
  • Caracteres do hostname são caracteres válidos de nome reg do RFC 3986
  • Rejeita com 400 Bad Request em qualquer violação

patch/src/PatchHttpReadListener.java

Um corretor de bytecode Javassist de uso único. Carrega HttpReadListener do JAR original e substitui:

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

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

Isso injeta HostHeaderHandler automaticamente em cada requisição HTTP, sem exigir uma recompilação completa de HttpReadListener (que depende de classes internas complexas e internals do xnio).

patch/src/HttpReadListener_only.java

Código fonte descompilado do HttpReadListener original do Undertow 1.4.18.Final, usado como referência para localizar o ponto de injeção. A versão corrigida deste código fonte também é mantida aqui para fins de auditoria.

reports/result-20260401-0230.txt

Relatório de varredura CVE (gerado em 2026-04-01) que identificou CVE-2025-12543 em undertow-core-1.4.18.Final em:

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

Procedimento de Correção

1. Identificar a vulnerabilidade

O relatório de varredura (result-20260401-0230.txt) confirmou que undertow-core-1.4.18.Final é afetado pela CVE-2025-12543 (CVSS 9.6).

2. Pesquisar a correção upstream

A correção está no PR #1857 do Undertow, mesclado no main (2026-01-09) e portado para 2.2.x e 2.3.x. A correção adiciona HostHeaderHandler.java e o conecta ao HttpReadListener para validar o cabeçalho Host em cada requisição.

3. Avaliar a viabilidade da atualização direta

Undertow 1.4.x → 2.2.x é um salto de versão principal com mudanças de API que quebram compatibilidade. O WildFly 11 está fortemente acoplado ao Undertow 1.4.x via JBoss Modules. Uma troca direta de JAR causaria ClassNotFoundException / NoSuchMethodError na inicialização.

4. Portar HostHeaderHandler.java

Escrever uma versão autocontida de HostHeaderHandler.java compatível com Undertow 1.4.18.Final:

  • Incluir todas as constantes regex (IP4_EXACT, IP6_EXACT) — não disponíveis em NetworkUtils do 1.4.x
  • Remover exchange.isHostIncludedInRequestURI() — não disponível em HttpServerExchange do 1.4.x
  • Manter toda a lógica de validação idêntica à correção upstream

Compilar contra o classpath do Undertow 1.4.18 + xnio dentro da imagem 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. Corrigir HttpReadListener via Javassist

Descompilar HttpReadListener com Procyon para localizar o ponto de injeção:

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

localizado em handleEventWithNoRunningRequest().

Como HttpReadListener possui classes internas anônimas ($1, $2, $3) que não podem ser referenciadas a partir do código fonte descompilado, uma recompilação completa não é viável. Em vez disso, use Javassist (PatchHttpReadListener.java) para instrumentar o bytecode diretamente — substituindo a chamada executeRootHandler para envolver o manipulador raiz com 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. Reempacotar o JAR

Copiar o JAR original e injetar os arquivos de classe corrigidos/novos:

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. Atualizar o Dockerfile

Adicionar um COPY para o JAR corrigido e substituir o original dentro da imagem:

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. Construir e validar

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

Validação:

root@kitploit:~
# Cabeçalho Host válido — deve retornar 200
curl -v -H "Host: localhost:8080" http://localhost:8080/

# Caracteres ruins no Host — deve retornar 400 Host Header Bad Characters
curl -v -H "Host: evil<script>" http://localhost:8080/

# Cabeçalhos Host duplicados — deve retornar 400 Bad Request
# Nota: curl deduplica cabeçalhos Host internamente, então uma requisição TCP bruta é necessária para este teste
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 fora do intervalo — deve retornar 400 Host Header Malformed Port
curl -v -H "Host: localhost:99999" http://localhost:8080/
RequisiçãoEsperadoResultado
Host: localhost:8080 (válido)200 OK✓
Host: evil<script> (caracteres ruins)400 Host Header Bad Characters✓
Dois cabeçalhos Host: (duplicado, TCP bruto)400 Bad Request✓
Host: localhost:99999 (porta ruim)400 Host Header Malformed Port✓

Mudança Comportamental Conhecida

Requisições HTTP/1.1 Devem Incluir um Cabeçalho Host

Antes desta correção, a opção REQUIRE_HOST_HTTP11 do WildFly padrão era false, o que significava que requisições HTTP/1.1 sem cabeçalho Host eram aceitas silenciosamente.

Após esta correção, o HostHeaderHandler aplica estritamente o RFC 7230 — todas as requisições HTTP/1.1 sem cabeçalho Host são rejeitadas com 400 No Host Header, independentemente da configuração REQUIRE_HOST_HTTP11.

Quem pode ser afetado:

  • Sondas de verificação de saúde enviando GET / HTTP/1.1 simples sem cabeçalho Host
  • Agentes de monitoramento internos ou pings de balanceadores de carga que omitem o cabeçalho Host
  • Qualquer cliente HTTP/1.1 personalizado que não defina um cabeçalho Host

O que fazer: Garanta que todos os clientes HTTP/1.1 incluam um cabeçalho Host. Isso já é exigido pelo RFC 7230 e qualquer biblioteca HTTP padrão (curl, HttpClient do Java, etc.) faz isso automaticamente. Apenas clientes personalizados não conformes ou muito antigos são afetados.

root@kitploit:~
# Isto agora será rejeitado com 400:
GET /health HTTP/1.1
Connection: close

# Isto está correto e funcionará bem:
GET /health HTTP/1.1
Host: seu-servidor:8080
Connection: close

Reconstruindo o JAR Corrigido do Zero

Se você precisar regenerar patch/undertow-core-1.4.18.Final-patched.jar em um novo ambiente (por exemplo, o JAR pré-construído não estiver disponível), use o script de compilação fornecido.

Requisitos: JDK 8, curl, acesso à internet para o Maven Central.

root@kitploit:~
cd patch
bash build.sh

O script irá:

  1. Baixar todos os JARs necessários do Maven Central (undertow-core, xnio-api, jboss-logging, javassist)
  2. Compilar HostHeaderHandler.java
  3. Compilar e executar PatchHttpReadListener.java para corrigir o bytecode do HttpReadListener via Javassist
  4. Reempacotar tudo em undertow-core-1.4.18.Final-patched.jar

Após a conclusão, prossiga com docker build normalmente.


Construindo a Imagem

Nota: wildfly-dist-11.0.0.Final.tar.gz não está incluído neste repositório (excede o limite de 100 MB do GitHub). Baixe-o do Maven Central antes de construir:

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 .

Executando a Imagem

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

Colegas podem montar ou estender a imagem com sua própria implantação:

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/
Baixar ferramenta