Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-12543-Fix-for-Wildfly — CVE-2025-12543に対するUndertow 1.4.xのバックポートされたHostヘッダー検証修正を含むDockerベースイメージ。これによりWildFly 11アプリケーションの安全なデプロイが可能になります。 | Kitploit
ツール/GitHubGitHub/kavin71725/cve-2025-12543-fix-for-wildfly
クラウドインフラストラクチャセキュリティコンテナセキュリティ脆弱性分析ウェブセキュリティDevSecOpsサプライチェーンセキュリティ設定ミス
GitHubkavin71725/cve-2025-12543-fix-for-wildfly

CVE-2025-12543-Fix-for-Wildfly

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2025-12543に対するUndertow 1.4.xのバックポートされたHostヘッダー検証修正を含むDockerベースイメージ。これによりWildFly 11アプリケーションの安全なデプロイが可能になります。

リポジトリを見る
45ヶ月前未レビュー

WildFly 11.0.0.Final ベースイメージ — CVE-2025-12543 パッチ

概要

このリポジトリは、WildFly 11.0.0.Final 上に構築された Docker ベースイメージを提供し、Undertow における深刻な Host ヘッダ検証の脆弱性 CVE-2025-12543 に対するバックポート修正を含んでいます。

このイメージは、同僚にベースとして提供することを意図しています。各自の .war アプリケーションや standalone.xml をその上にデプロイできます。


CVE-2025-12543 の概要

項目詳細
CVE IDCVE-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 のアップグレードをしない理由

他のユーザーはまだ WildFly 11 を使用しており、現在のところアップグレードのリソースや計画はありません。代わりに、修正は Undertow 1.4.18.Final JAR に直接バックポート されました。


リポジトリ構造

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

最終イメージを構築します。以下の処理を行います:

  1. bitnamilegacy/java:1.8.432-7-debian-12-r2 (OpenJDK 1.8.0_432) をベースとして使用
  2. WildFly 11 を /opt/jboss/wildfly に展開
  3. 元の undertow-core-1.4.18.Final.jar をパッチ適用済みバージョンで置き換え
  4. standalone.sh -b 0.0.0.0 で WildFly を起動 (すべてのインターフェースにバインド)

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

パッチ適用済み Undertow JAR。2つの変更点を除いて元のものと同一:

  • 追加: 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 リクエストで以下を検証します:

  • Host ヘッダが存在すること (HTTP/1.1 で必須)
  • Host ヘッダが正確に 1つであること (重複なし)
  • ポートが数値で、範囲 1〜65535 であること
  • IP リテラル (IPv4、IPv6、IPvFuture) が適切な形式であること
  • ホスト名の文字が有効な RFC 3986 reg-name 文字であること
  • 違反がある場合は 400 Bad Request で拒否

patch/src/PatchHttpReadListener.java

1回限りの Javassist バイトコードパッチャー。元の JAR から HttpReadListener をロードし、以下の置き換えを行います:

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

// 変更後
Connectors.executeRootHandler(
    HostHeaderHandler.WRAPPER.wrap(connection.getRootHandler()),
    exchange
);

これにより、HttpReadListener の完全な再コンパイル (複雑な内部クラスや xnio 内部に依存) を必要とせずに、すべての HTTP リクエストに HostHeaderHandler が自動的に注入されます。

patch/src/HttpReadListener_only.java

Undertow 1.4.18.Final の元の HttpReadListener を逆コンパイルしたソース。注入ポイントを見つけるための参考として使用。このソースのパッチ適用版も監査目的でここに保持されています。

reports/result-20260401-0230.txt

undertow-core-1.4.18.Final で CVE-2025-12543 を特定した CVE スキャンレポート (生成日 2026-04-01):

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

パッチ手順

1. 脆弱性の特定

スキャンレポート (result-20260401-0230.txt) により、undertow-core-1.4.18.Final が CVE-2025-12543 (CVSS 9.6) の影響を受けることが確認されました。

2. アップストリームの修正を調査

修正は Undertow PR #1857 にあり、main (2026-01-09) にマージされ、2.2.x および 2.3.x にバックポートされました。この修正により HostHeaderHandler.java が追加され、すべてのリクエストで Host ヘッダを検証するために HttpReadListener に配線されます。

3. 直接アップグレードの実現可能性を評価

Undertow 1.4.x → 2.2.x は メジャーバージョンジャンプ であり、API に破壊的変更があります。WildFly 11 は JBoss Modules を介して Undertow 1.4.x と密結合しています。JAR を直接交換すると、起動時に ClassNotFoundException / NoSuchMethodError が発生します。

4. 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 クラスパスに対してコンパイル:

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. Javassist を使用した HttpReadListener のパッチ適用

Procyon で HttpReadListener を逆コンパイルし、注入ポイントを見つけます:

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

handleEventWithNoRunningRequest() 内にあります。

HttpReadListener は匿名内部クラス ($1、$2、$3) を持ち、逆コンパイルされたソースから参照できないため、完全な再コンパイルはできません。代わりに Javassist (PatchHttpReadListener.java) を使用してバイトコードを直接操作し、executeRootHandler 呼び出しをルートハンドラを 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. JAR の再パッケージ化

元の JAR をコピーし、パッチ適用済み/新しいクラスファイルを注入します:

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. Dockerfile の更新

パッチ適用済み JAR の COPY を追加し、イメージ内の元の JAR を置き換えます:

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. ビルドと検証

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

検証:

root@kitploit:~
# 有効な Host ヘッダ — 200 を返すべき
curl -v -H "Host: localhost:8080" http://localhost:8080/

# Host に不正文字 — 400 Host Header Bad Characters を返すべき
curl -v -H "Host: evil<script>" http://localhost:8080/

# 重複 Host ヘッダ — 400 Bad Request を返すべき
# 注意: curl は内部で Host ヘッダを重複排除するため、このテストには raw TCP リクエストが必要
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>&-

# ポート範囲外 — 400 Host Header Malformed Port を返すべき
curl -v -H "Host: localhost:99999" http://localhost:8080/

既知の動作変更

HTTP/1.1 リクエストは Host ヘッダを含まなければならない

このパッチの前、WildFly の REQUIRE_HOST_HTTP11 オプションはデフォルトで false であり、Host ヘッダのない HTTP/1.1 リクエストは黙って受け入れられていました。

このパッチの後、HostHeaderHandler は RFC 7230 を厳密に強制し、REQUIRE_HOST_HTTP11 設定に関係なく、Host ヘッダのないすべての HTTP/1.1 リクエストは 400 No Host Header で拒否されます。

影響を受ける可能性があるもの:

  • Host ヘッダなしで裸の GET / HTTP/1.1 を送信するヘルスチェックプローブ
  • Host ヘッダを省略する内部監視エージェントやロードバランサーの ping
  • Host ヘッダを設定しないカスタム HTTP/1.1 クライアント

対応方法: すべての HTTP/1.1 クライアントが Host ヘッダを含むことを確認してください。これは RFC 7230 で既に必須であり、標準の HTTP ライブラリ (curl、Java の HttpClient など) は自動的にこれを行います。影響を受けるのは、非準拠の非常に古いカスタムクライアントのみです。

root@kitploit:~
# これは現在 400 で拒否されます:
GET /health HTTP/1.1
Connection: close

# これは正しく、問題なく動作します:
GET /health HTTP/1.1
Host: your-server:8080
Connection: close

パッチ適用済み JAR の再構築

新しい環境で patch/undertow-core-1.4.18.Final-patched.jar を再生成する必要がある場合 (例: 事前構築済み JAR が利用できない場合)、提供されているビルドスクリプトを使用してください。

必要条件: Java 8 JDK、curl、Maven Central へのインターネットアクセス。

root@kitploit:~
cd patch
bash build.sh

スクリプトは以下を実行します:

  1. Maven Central から必要なすべての JAR (undertow-core、xnio-api、jboss-logging、javassist) をダウンロード
  2. HostHeaderHandler.java をコンパイル
  3. PatchHttpReadListener.java をコンパイルして実行し、Javassist を介して HttpReadListener のバイトコードをパッチ
  4. すべてを undertow-core-1.4.18.Final-patched.jar に再パッケージ化

完了後、通常通り docker build を進めてください。


イメージのビルド

注: wildfly-dist-11.0.0.Final.tar.gz はこのリポジトリには含まれていません (GitHub の 100 MB 制限を超えるため)。 ビルド前に Maven Central からダウンロードしてください:

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 .

イメージの実行

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

同僚はイメージをマウントまたは拡張して、独自のデプロイメントを追加できます:

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/
ツールをダウンロード
リクエスト期待値結果
Host: localhost:8080 (有効)200 OK✓
Host: evil<script> (不正文字)400 Host Header Bad Characters✓
2つの Host: ヘッダ (重複、raw TCP)400 Bad Request✓
Host: localhost:99999 (不正ポート)400 Host Header Malformed Port✓