【CVE-2026-43512】Apache Tomcat のダイジェスト認証バイパス脆弱性を解説と対応方法

CVE・脆弱性情報

⚠️ 概要

CVSSスコア 9.8 / Critical — 即時対応が必要です

Apache Tomcat のダイジェスト認証(DIGEST authentication)に認証バイパスの脆弱性が発見されました(CVE-2026-43512)。
Realm に存在しない不明ユーザーでも、パスワードとして null 文字列を使用するだけで認証を突破できるという、シンプルかつ深刻な問題です。

CVSS v3.1 スコアは 9.8 (Critical) で、ネットワーク経由・認証不要・低複雑度で悪用可能です。
Apache Tomcat を DIGEST 認証で運用している環境は、直ちにパッチ適用を検討してください。


この脆弱性について

項目 内容
CVE-ID CVE-2026-43512
CVSSスコア 9.8 (Critical)
脆弱性の種類 認証バイパス(Authentication Bypass via Digest Authentication)
公開日 2026-05-12
報告受理日 2026-04-20

影響を受けるバージョン:

ブランチ 影響を受けるバージョン 修正バージョン
Apache Tomcat 11.x 11.0.0-M1 〜 11.0.21 11.0.22
Apache Tomcat 10.1.x 10.1.0-M1 〜 10.1.54 10.1.55
Apache Tomcat 9.0.x 9.0.0.M1 〜 9.0.117 9.0.118
Apache Tomcat 8.5.x 8.5.0 〜 8.5.100 8.5.101(予定)
Apache Tomcat 7.0.x 7.0.109 以前 End of Life(サポート終了)

原因

この脆弱性の核心は、ダイジェスト認証の仕様とTomcat の実装の間にある微妙な齟齬です。

HTTP ダイジェスト認証では、クライアントとサーバーの両方がユーザーのパスワードを使って MD5(HA1:nonce:HA2) のようなハッシュ値を計算し、それが一致すれば認証成功とします。

問題は、Realm に存在しないユーザーに対するサーバー側の処理にあります。

Tomcat は、Realm に登録されていないユーザーを認証しようとする際、パスワードが取得できないため、内部的に文字列 "null" をパスワードとして代替使用してダイジェストを計算していました。

// 疑似コード(問題のある動作)
String password = realm.getPassword(username); // → null(ユーザー不在)
String ha1 = md5(username + ":" + realm + ":" + password); // → md5("user:realm:null")

攻撃者側も同じロジックを把握し、パスワードとして null(文字列)を使ってクライアント側のダイジェストを計算すれば、サーバー側の計算値と一致します。
結果として、Realm に存在しない任意のユーザー名で認証を突破できてしまうのです。


影響範囲

攻撃が成立する条件

以下のすべてを満たす環境が影響を受けます。

  1. Apache Tomcat の 上記影響バージョンを使用している
  2. web.xml または Tomcat 設定で DIGEST 認証<auth-method>DIGEST</auth-method>)を使用している
  3. 対象リソースがネットワーク(インターネットまたは内部ネットワーク)から到達可能である

BASIC 認証・FORM 認証・CLIENT-CERT 認証を使用している環境はこの脆弱性の影響を受けません

悪用された場合のリスク

  • Realm に存在しない任意のユーザー名で、DIGEST 認証で保護されたリソースへの不正アクセス
  • 管理画面・内部APIなど、DIGEST 認証で保護された機密エリアへのアクセス権限取得
  • CVSS スコアの内訳は機密性・完全性・可用性すべてで「High」評価。適切な保護がない環境では、サーバー全体の乗っ取りにつながる可能性もあります


対応策・回避策

推奨対応:パッチ適用(アップグレード)

最も確実な対策は、修正済みバージョンへのアップグレードです。

現在のバージョン確認方法:

# Tomcat バージョンを確認する
catalina.sh version
# または
$CATALINA_HOME/bin/catalina.sh version

# 出力例
Server version: Apache Tomcat/10.1.54
Server built:   May 1 2026 00:00:00 UTC
Server number:  10.1.54.0
OS Name:        Linux

アップグレード手順(バイナリ配布版の場合):

# 1. 現在の Tomcat を停止
$CATALINA_HOME/bin/shutdown.sh

# 2. 修正版をダウンロード(例: Tomcat 10.1.55)
wget https://downloads.apache.org/tomcat/tomcat-10/v10.1.55/bin/apache-tomcat-10.1.55.tar.gz

# 3. 展開
tar xzf apache-tomcat-10.1.55.tar.gz

# 4. conf/ ディレクトリを新バージョンへコピー(設定を引き継ぐ)
cp -r /opt/apache-tomcat-10.1.54/conf/ /opt/apache-tomcat-10.1.55/conf/

# 5. webapps/ を引き継ぐ
cp -r /opt/apache-tomcat-10.1.54/webapps/ /opt/apache-tomcat-10.1.55/webapps/

# 6. 新バージョンを起動
/opt/apache-tomcat-10.1.55/bin/startup.sh

Docker/コンテナ環境の場合:

# Dockerfile を修正してイメージを更新
FROM tomcat:10.1.55-jdk17

# または docker-compose.yml のイメージタグを更新
# tomcat:10.1.54 → tomcat:10.1.55
# イメージを再ビルド・再デプロイ
docker pull tomcat:10.1.55-jdk17
docker compose up -d --no-deps tomcat

パッケージマネージャー経由のインストール(例: RHEL/CentOS/Ubuntu):

# RHEL/CentOS (tomcat パッケージが提供される場合)
sudo dnf update tomcat

# Ubuntu/Debian
sudo apt update && sudo apt upgrade tomcat10

暫定回避策:DIGEST 認証から BASIC + TLS への移行

即時アップグレードが難しい場合、DIGEST 認証を BASIC 認証 + TLS(HTTPS 強制)に切り替えることで攻撃リスクを大幅に軽減できます。

<!-- web.xml の認証方式を変更 -->
<login-config>
    <!-- DIGEST から BASIC に変更 -->
    <auth-method>BASIC</auth-method>
    <realm-name>Protected Area</realm-name>
</login-config>

注意: BASIC 認証は平文でパスワードを送信するため、HTTPS(TLS)が必須です。HTTPS が設定されていない環境では、この回避策を採用しないでください。

確認方法

自分の環境がダイジェスト認証を使っているか確認するには、デプロイ済み Web アプリの web.xml を確認します。

# デプロイ済みアプリの web.xml を検索して DIGEST が使われているか確認
find $CATALINA_HOME/webapps -name "web.xml" -exec grep -l "DIGEST" {} \;

# 特定アプリの認証方式を直接確認
grep -A2 "<auth-method>" /opt/apache-tomcat/webapps/myapp/WEB-INF/web.xml

出力例(影響あり):

<auth-method>DIGEST</auth-method>

この出力が確認できた場合、対象の環境は今回の脆弱性の影響を受けています。


まとめ

CVE-2026-43512 は、Apache Tomcat のダイジェスト認証において、Realm 未登録ユーザーへの処理でパスワードとして null 文字列が使われるバグが原因です。
CVSS 9.8 という最高レベルの評価で、認証不要・ネットワーク経由での悪用が可能です。
影響を受けるのは DIGEST 認証を使用している環境に限られますが、確認と対処を先延ばしにするリスクは高いです。
修正バージョン(11.0.22 / 10.1.55 / 9.0.118)への早急なアップグレードを強くお勧めします。


参考リンク

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-43512
  • ベンダーアドバイザリ(Apache Tomcat Security): https://tomcat.apache.org/security-11.html
  • oss-sec ディスクロージャ: https://seclists.org/oss-sec/2026/q2/495
  • Apache Tomcat ダウンロード: https://tomcat.apache.org/download-10.cgi

コメント