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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cve-2026-34486-tomcat_encrypt_bypass_reproduction — CVE再現: cve-2026-34486-tomcat_encrypt_bypass_reproduction | Kitploit
ツール/GitHubGitHub/razureink/cve-2026-34486-tomcat_encrypt_bypass_reproduction
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテスト学習と教育
GitHubrazureink/cve-2026-34486-tomcat_encrypt_bypass_reproduction

cve-2026-34486-tomcat_encrypt_bypass_reproduction

CVE再現: cve-2026-34486-tomcat_encrypt_bypass_reproduction

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る
28日前未レビュー

CVE-2026-34486: Apache Tomcat EncryptInterceptor バイパス

フィールド値
CVECVE-2026-34486
CVSS7.5 HIGH
種別機密データの暗号化の欠如
コンポーネントApache Tomcat クラスタ EncryptInterceptor
公開日2026

概要

CVE-2026-34486 は、CVE-2026-29146 の不完全な修正によって導入されたリグレッションです。Apache Tomcat のクラスタレプリケーションでは、EncryptInterceptor がクラスタメッセージの暗号化と認証を担当します。CVE-2026-29146 の修正におけるリファクタリングにより、super.messageReceived(msg) の呼び出しが、復号失敗を処理する try-catch ブロックの外に誤って移動しました。その結果、メッセージの復号に失敗した場合(つまり、平文で受信されたがインターセプタが暗号化データを期待している場合)、生の暗号化されていないメッセージは破棄されずにハンドラチェーンに渡されます。

技術的詳細

コードフローのリグレッション

EncryptInterceptor.messageReceived() メソッドは、クラスタメッセージが到着したときに呼び出されます。期待されるフローは次のとおりです:

  1. 生のメッセージバイトを受信する
  2. メッセージを復号して検証する(try-catch 内)
  3. 復号が成功したら、super.messageReceived(msg) を呼び出して復号済みメッセージを転送する
  4. 復号に失敗したら、メッセージを破棄する(またはエラーをログに記録する)

脆弱性のあるバージョンでは、復号・検証ロジックは try-catch にラップされたままですが、呼び出しチェーンが再構築され、super.messageReceived(msg) が復号を保護する try-catch ブロックの外で実行されるようになりました。変数 msg は try-catch の前に宣言され、その中で代入されます。復号が例外をスローすると、msg は初期値(暗号化されていない/生の値)を保持し、catch ブロックはエラーをログに記録するだけで、早期に return しません。未処理の生データを伴って super.messageReceived(msg) への実行が継続されます。

つまり、Tomcat のクラスタポートに到達できる攻撃者は、インターセプタが受け入れて処理する任意の暗号化されていないメッセージを注入できます。

バグの簡略化された擬似コード

root@kitploit:~
public void messageReceived(Message msg) {
    // msg arrives raw
    try {
        // decrypt and populate msg fields
        decrypt(msg);
    } catch (Exception e) {
        log.error("Decryption failed", e);
        // BUG: no return statement here
    }
    // msg is still the original unencrypted object when catch is hit
    super.messageReceived(msg); // outside try-catch → passes raw data
}

修正では、以下のいずれかを保証する必要があります:

  • super.messageReceived(msg) が復号成功後の try ブロック内でのみ呼び出されるようにする、または
  • catch ブロックが即座に return して、暗号化されていないメッセージが決して転送されないようにする。

影響を受けるバージョン

製品バージョン
Apache Tomcat 1111.0.20
Apache Tomcat 1010.1.53
Apache Tomcat 99.0.116

再現

前提条件

  • EncryptInterceptor を使用してクラスタレプリケーションを有効にした脆弱性のある Tomcat インスタンス
  • Tomcat クラスタポート(通常は 4000 または 5000、<Receiver> で設定)へのネットワークアクセス
  • Python 3.6+

手順

  1. server.xml で EncryptInterceptor が設定されている Tomcat クラスタメンバーを特定します。
  2. クラスタレシーバーのアドレスとポートを確認します。
  3. エクスプロイトスクリプトを実行して、細工された生のクラスタメッセージを送信します。
  4. 暗号化検証をバイパスして、メッセージがレシーバーに受け入れられログに記録されることを確認します。

PoC

このディレクトリにある exploit.py スクリプトは、このバイパスを実証します。これは、最小限の Tomcat クラスタメッセージ(ClusterMessage シリアライズ形式に基づく)を構築し、暗号化なしでレシーバーポートに直接送信します。脆弱性のあるインターセプタは、暗号化が欠如しているにもかかわらず、メッセージを受け入れて転送します。

緩和策

パッチ適用済みの Apache Tomcat バージョンにアップグレードしてください:

製品パッチ適用済みバージョン
Apache Tomcat 1111.0.21+
Apache Tomcat 1010.1.54+
Apache Tomcat 99.0.117+

直ちにアップグレードできない場合は、Tomcat クラスタポートへのネットワークアクセスを信頼できるホストのみに制限してください(例: ファイアウォールルール、またはレシーバーをループバックやプライベートインターフェースにバインドする)。

参考情報

  • CVE-2026-34486
  • CVE-2026-29146(元の脆弱性)
  • Apache Tomcat セキュリティアドバイザリ
  • EncryptInterceptor ドキュメント
ツールをダウンロード