Apache Tomcatは2026年10月12日に11.0.27・10.1.61・9.0.123を公開しました。2026年10月20日には、この3つの版で直った脆弱性8件(Important 3件・Low 5件)が公式セキュリティページで公表されました。一方で、7月から9月にかけては毎月まとまった数の脆弱性が公表され、9月23日には本体12件とTomcat Native 3件が一度に公開されています。
この記事では、7月14日公表のCVE-2026-59083・CVE-2026-59084、8月25日公表の10件、9月23日公表の15件、10月20日公表の8件、CISAの悪用確認済みカタログ(KEV)に載った件を、ブランチ別の修正版と合わせて整理します。Spring Bootに組み込まれたTomcatの版は、Mavenで実際にビルドして確かめました。
まとめ:2026年10月時点の更新先は11.0.27・10.1.61・9.0.123
7〜9月に公表されたTomcat本体の脆弱性は、9月15日公開の11.0.26・10.1.60・9.0.122で全件が直っています(Tomcat Nativeの3件は2.0.16・1.3.9で修正)。10月20日公表の8件は10月12日公開の版でしか直っていないため、本体の更新先は11.0.27・10.1.61・9.0.123です。
| 項目 | 2026年10月22日時点 |
|---|---|
| 最新版 | 11.0.27/10.1.61/9.0.123 |
| 10月20日公表 | 8件(Important 3件) |
| 9月23日公表 | 本体12件+Native 3件 |
| 8月25日公表 | 10件(Important 4件) |
| 7月14日公表 | CVE-2026-59083・59084 |
| Nativeの最新版 | 2.0.16/1.3.9 |
| KEV掲載(2026年) | CVE-2026-34486 |
| Spring Boot 4.1.1 | 11.0.24のまま |
| 8.5系 | EOL・修正なし |
実際に攻撃が成立するかは、HTTP/2・AJP・WebSocket・RewriteValve・クラスタ暗号化のどれを有効にしているかで変わります。ただ、機能ごとに判断を分けるより、同じブランチの最新版へ更新する方針に統一すると、修正版の管理は単純になります。ただし、CVE-2026-59084は設定要件の文書化に関する問題なので、更新に加えてEncryptInterceptorの設定確認が必要です。Spring Bootのアプリは、Spring Boot本体の最新版でもまだ8月・9月分が残る点に注意してください。
10月20日公表の8件と11.0.27・10.1.61・9.0.123で直った内容
Apache Tomcatのトップページには、2026年10月12日付で3系統のリリース告知が並んでいます。主な変更点として挙がっているのは、HTTP/2と非同期IOを使ったアップロードでデータが壊れうる問題の修正などです。Which Version Do I Want?の最新版の欄も、11.0.27・10.1.61・9.0.123に更新されています。
リリースから脆弱性の公表までの間隔
Tomcatは修正版を先に出し、脆弱性の内容を後から公表します。直近3回の間隔はいずれも1週間前後でした。
| 回 | 修正版のリリース | 脆弱性の公表 |
|---|---|---|
| 7月 | 7月7〜8日 | 7月14日 |
| 8月 | 8月18〜20日 | 8月25日 |
| 9月 | 9月15日 | 9月23日 |
| 10月 | 10月12日 | 10月20日 |
10月版の変更履歴(11.0のchangelog)には、HTTP/2ヘッダー処理の競合状態の修正や、AJPの非ブロッキング書き込みの修正が含まれています。このうちAJPの書き込みとHTTP/2の処理は、10月20日の公表で脆弱性として採番されました。
10月20日公表の8件の内容と、11.0・10.1・9.0ごとの対象範囲の違い
8件は2026年10月20日に11.x・10.1.x・9.0.xの各セキュリティページで公表され、日本語ではJVNVU#93110597(2026年10月21日公開)がまとめています。全件が同じブランチの10月版で直りますが、ブランチによって対象にならない件があります。
| CVE | 深刻度 | 内容 | 対象ブランチ |
|---|---|---|---|
| CVE-2026-103119 | Important | AJPの応答の取り違え | 11.0のみ |
| CVE-2026-101356 | Important | HTTP/2の非同期処理での取り違え | 11.0・10.1・9.0 |
| CVE-2026-101296 | Important | JNDIRealmの認証回避 | 11.0・10.1・9.0 |
| CVE-2026-93446 | Low | TLS 1.3の接続失敗 | 11.0・10.1・9.0 |
| CVE-2026-88041 | Low | HTTP/2トレーラーの混入 | 11.0・10.1・9.0 |
| CVE-2026-74049 | Low | JSTLのリダイレクト後の処理継続 | 11.0・10.1・9.0 |
| CVE-2026-74048 | Low | FIPS有効化の失敗を無視 | 11.0・10.1・9.0 |
| CVE-2026-80353 | Low | APRコネクタのUDS権限 | 9.0のみ |
Importantの3件は、どれも他人のデータや認証に関わります。CVE-2026-103119は、AJPで大きな応答を非ブロッキングで書き込むと、応答の本文が同じ接続の次のリクエストへ分かれて渡り、前の利用者の応答が次の利用者へ漏れうる問題です(11.0.0-M25〜11.0.26)。CVE-2026-101356は、HTTP/2で非同期サーブレットを処理する際のオブジェクト再利用の誤りで、利用者間でリクエストや応答が入れ替わりうる問題です。影響範囲は11.0.22〜11.0.26・10.1.55〜10.1.60・9.0.118〜9.0.122と、比較的新しい版に限られます。CVE-2026-101296は、JNDIRealmにGSSAPI以外のSASL認証方式を設定している場合に、正しいパスワードなしで認証が通ってしまう問題で、各ブランチの初期版から対象です。
Lowの5件のうち、CVE-2026-74049はJSPの<c:redirect>の後もページの残りが処理される問題で、リダイレクトを認可チェックの代わりに使っている画面では、後続の処理が実行されます。CVE-2026-80353は、9月に直ったCVE-2026-65183の修正がAPRコネクタに及んでいなかった件です。AJPもHTTP/2も使わず、JNDIRealmも設定していない構成なら、Importantの3件はいずれも当てはまりません。ただし対象外かどうかを1件ずつ確かめるより、10月版へ上げる方が確実です。
2026年9月23日公表のTomcat本体12件とNative 3件
9月分の内訳は、Tomcat本体がImportant 4件・Moderate 3件・Low 5件、Tomcat NativeがImportant 2件・Moderate 1件です。本体の一覧はApache Tomcat 11.x の公式セキュリティページに、影響範囲と修正コミットつきで載っています。日本語ではJVNVU#94625787(2026年9月24日公開)が15件をまとめていますが、中身は「Apache Tomcatのアドバイザリを参照してください」という案内にとどまります。
Importantの4件と、影響を受ける構成
| CVE | 内容 | 影響を受ける構成 |
|---|---|---|
| CVE-2026-76183 | WebSocketの制約バイパス | WebSocket利用 |
| CVE-2026-86350 | HTTP/2のヘッダー混在 | HTTP/2有効 |
| CVE-2026-78383 | AJPのスレッド占有 | AJP有効 |
| CVE-2026-77791 | WebSocket終了時のDoS | WebSocket利用 |
CVE-2026-76183は、リクエストパスがエンドポイントのテンプレートとして誤って解釈され、WebSocketエンドポイントに掛けたセキュリティ制約を回避できる問題です。認証が必要なはずのWebSocketへ、未認証で接続される余地があります。CVE-2026-86350は、CVE-2026-41293の修正で入った回帰が原因で、HTTP/2リクエストのヘッダーが別のリクエストと入れ替わる可能性があります。影響は11.0.22〜11.0.25、10.1.55〜10.1.59、9.0.118〜9.0.121に限られます。
CVE-2026-78383は、利用者がリクエストボディを送らないとAJPの処理スレッドが占有され、サービス拒否に至る問題です。CVE-2026-77791は、WebSocketのcloseメッセージ送信中のビジーウェイトを突くDoSで、影響は11.0.0-M5〜11.0.25、10.1.8〜10.1.59、9.0.74〜9.0.121です。
Tomcatの開発チームはCVSSを付けず、文字の評価だけを載せています。NVDのCVE-2026-76183では、CISAが補足データとしてCVSS 3.1の9.8を付けています(CVE-2026-86350は9.1)。NVD自身の分析は2026年10月16日時点で「Awaiting Analysis」のままです。
Moderate・Lowの8件の影響条件
- CVE-2026-86248(Moderate):OCSPのsoft-failを無効にしても、OpenSSL-FFMで検証が素通りする場合がある(CVE-2026-34500の修正漏れ)
- CVE-2026-73581(Moderate):OpenSSL系のTLS実装が、証明書をキーストアで持つ構成でCRLを無視する
- CVE-2026-79677(Moderate):非同期WebSocket書き込みのタイムアウトが失われ、DoSにつながる
- CVE-2026-87022(Low):per-message-deflate使用時のWebSocketメッセージ密輸
- CVE-2026-78437・CVE-2026-77762(Low):HTTP/2で他の利用者のリクエストが失敗する、またはトレーラーを注入される
- CVE-2026-77756(Low):HTTP/1.0のTransfer-Encodingを処理し、リバースプロキシの背後で他者のリクエストを失敗させうる
- CVE-2026-75973(Low):Jakarta Authenticationの既定プロバイダを複数アプリで共有すると、最初に認証したアプリのRealmが全アプリで使われる
CVE-2026-77756はリクエストスマグリングと同じ系統なので、前段にWAFやロードバランサを置く構成では、WAFとはの記事で整理した前段の制御と、Tomcat側の更新の両方で塞ぎます。
Tomcat Native 2.0.16・1.3.9で直った3件と、更新時の注意
Tomcat NativeはOpenSSLをJNI経由で呼ぶためのライブラリで、使っている環境だけが対象です。Tomcat Native の公式セキュリティページによると、影響は1.3.0〜1.3.8と2.0.0〜2.0.15です。
- CVE-2026-86247(Important):競合状態により、クライアント証明書の検証要件が一部の構成で格下げされる
- CVE-2026-86243(Important):TLSハンドシェイク中のバッファ過剰読み出しでJVMがクラッシュする
- CVE-2026-86246(Moderate):ALLOW_CLIENT_RENEGOTIATIONなど安全でないOpenSSLオプションが既定で有効になっていた
2.0.16・1.3.9のリリース告知には、エラー処理の確認を増やした結果、このNativeより前に出たTomcatではOpenSSLを使うJSSEのTLSが使えなくなる、と書かれています。Nativeだけを先に上げるとTLSが動かない組み合わせになるため、Tomcat本体と同時に更新してください。
8月25日公表の10件とImportant 4件の中身
8月分は10件で、11.0.25・10.1.59・9.0.121で直っています。JVNではJVNVU#96149019(2026年8月26日公開)が対応します。影響範囲の下限はブランチとCVEごとに違うため、個別の範囲は各ブランチの公式セキュリティページで確かめてください。
| CVE | 深刻度 | 内容 |
|---|---|---|
| CVE-2026-65182 | Important | 制約の書き順でバイパス |
| CVE-2026-65927 | Important | RewriteValveの[N]の不具合 |
| CVE-2026-68569 | Important | 存在しない利用者を認証 |
| CVE-2026-68763 | Important | HTTP/2のリセットでDoS |
| CVE-2026-65637 | Moderate | HTTP/2でSNI検証を回避 |
| CVE-2026-65183 | Low | UNIXソケットの権限設定 |
| CVE-2026-65905 | Low | DIGEST認証のリプレイ |
| CVE-2026-66422 | Low | ロール参照で制約を回避 |
| CVE-2026-68525 | Low | FORM認証後のメソッド制約 |
| CVE-2026-73180 | Low | WebSocketの認証が残る |
アクセス制御に直接関わるのは上の3件です。CVE-2026-65182は、長いパスの制約を先に書き、より厳しい短いサブパスの制約を後に書くと回避される問題です。CVE-2026-65927は、RewriteValveの[N]フラグが1番目でなく2番目の規則から処理を再開してしまう不具合です。CVE-2026-68569は、CLIENT-CERTやSPNEGOなど一部の認証方式で、DataSourceRealmに存在しない利用者が認証されてしまいます。Tomcat 9ではJDBCRealmも対象です。CVE-2026-68763は、HTTP/2のストリームをリセットしたときの割り当て漏れを突くDoSです。
同じ修正版には、7月28日公表のCVE-2026-66299(Low:examplesアプリのWebSocketチャットでメモリを使い切らせるDoS)の修正も入っています。本番環境でexamplesアプリを削除していれば、この1件の影響はありません。
CVE-2026-59083とCVE-2026-59084(7月14日公表)の中身と深刻度
7月14日公表の2件は、Tomcatの評価ではどちらもLowです。JVNではJVNVU#95286373(2026年7月16日公開)が対応します。
CVE-2026-59083:RewriteValveでの「+」のデコード不備
RewriteValveは、Apache HTTP Serverのmod_rewriteに相当するURL書き換えを担う部品です。公式の説明は「書き換え後のURIに含まれる+を1つのスペースへ誤ってデコードし、一部の構成でセキュリティ制御を回避できる」というものです。書き換え後のパスの解釈が、web.xmlのsecurity-constraint側とずれることで、パスに基づくアクセス制御をすり抜ける余地が生まれます。成立には特定の書き換え規則と制約の組み合わせが要ります。
影響は11.0.0-M1〜11.0.23、10.1.0-M1〜10.1.56、9.0.0.M1〜9.0.119で、修正版は11.0.24・10.1.57・9.0.120です。Tomcatのセキュリティチーム自身が2026年6月26日に見つけた問題です。
Lowなのに脆弱性スキャナでCVSS 9.1と表示される理由
CVE-2026-59083のCVEレコードを見ると、採番したApache(CNA)が付けた深刻度は文字の「low」だけです。一方、CISAが補足データ(ADP)としてCVSS 3.1の9.1(CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N)を付けており、NVDのCVEページではこの数値が表示されるため、NVDのデータを取り込むスキャナでも9.1と出ることがあります。その場合は評価主体(CISA-ADPかApacheか)とベクトルを確かめ、ApacheのLow評価と分けて扱います。CVE-2026-59084にも同じく9.1が付いています。
9.1はCVSSの基本値で、個々の環境での危険度とは別物です。RewriteValveを使っていなければ、この件で攻撃される経路はありません。監査で説明を求められたら、更新後の版が分かる記録か、RewriteValveを設定していないことが分かる設定ファイルの確認結果と確認日を残します。
CVE-2026-59084:EncryptInterceptorの設定要件と正しい設定例
EncryptInterceptorは、Tomcatのクラスタ(<Cluster>)でノード間のセッション複製の通信を暗号化する部品です。CVE-2026-59084は「安全に設定するための要件が明確に文書化されていなかった」という文書の不備で、修正はドキュメントの追記です。クラスタのインターセプタ設定のドキュメントに追記された要件は次のとおりです。
- EncryptInterceptorは、チャネルのインターセプタの中で最後に置く(TcpFailureDetectorだけは例外で、その手前に置く)
- リプレイ攻撃の防止はメッセージの時刻で判定するため、ノード間の時刻のずれを小さくする(既定の許容幅
replayWindowTimeは10,000ミリ秒) - リプレイ防止が効くのは改ざん耐性のある暗号方式だけ。既定の
AES/GCM/NoPaddingは有効で、AES/CBC/PKCS5Paddingでは効かない - 鍵は16進数で指定する(AES-256なら64文字)
<!-- server.xml の Cluster 内(Membership・Receiver・Sender は省略) -->
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.EncryptInterceptor"
encryptionAlgorithm="AES/GCM/NoPadding"
encryptionKey="(openssl rand -hex 32 で作った64文字)"/>
<!-- TcpFailureDetector を使うなら EncryptInterceptor より後に書く -->
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
</Channel>
11.0.27のソースでは、server.xmlに書いた順にインターセプタが連結され、TcpFailureDetectorがEncryptInterceptorより前にあると「EncryptInterceptor must be upstream of TcpFailureDetector」という例外で起動が止まります。順序の誤りは起動時に分かりますが、CBCを指定した設定はそのまま動くため自分で確かめます。この部品は2026年だけで、CBC既定によるパディングオラクル(CVE-2026-29146)、その修正の誤りでKEVに載ったCVE-2026-34486、リプレイ攻撃を防げていなかったCVE-2026-55955と問題が続いており、ノード間の経路はネットワーク側でも閉じておくべきです。
7月の2件のブランチ別の対象範囲と8.5系の扱い
| ブランチ | 59083の対象 | 59084の対象 | 修正版 |
|---|---|---|---|
| 11.0.x | 11.0.0-M1〜11.0.23 | 11.0.0-M1〜11.0.23 | 11.0.24 |
| 10.1.x | 10.1.0-M1〜10.1.56 | 10.1.0-M1〜10.1.56 | 10.1.57 |
| 9.0.x | 9.0.0.M1〜9.0.119 | 9.0.13〜9.0.119 | 9.0.120 |
| 8.5.x | 8.5.0〜8.5.100 | 8.5.38〜8.5.100 | なし |
8.5系の行はCVEレコードの影響範囲です。公式のセキュリティページはサポート終了後の8.5系を載せませんが、CVEレコードは「影響あり」としています(9月のCVE-2026-76183も8.5.0〜8.5.100と7.0.43〜7.0.109が影響あり)。8.5系は「載っていないから安全」ではなく、影響はあるのに修正が出ない状態です。
CISAのKEVに載ったTomcatの脆弱性と過去の重大案件
CISAのKEV(2026年10月21日版、catalogVersion 2026.10.21)に載っているTomcatの脆弱性は6件です。7〜10月に公表された件はまだ1件も載っていません。
| CVE | 内容 | KEV追加日 |
|---|---|---|
| CVE-2026-34486 | EncryptInterceptorの回避 | 2026-08-04 |
| CVE-2025-24813 | partial PUTでのRCE | 2025-04-01 |
| CVE-2016-8735 | JMXリスナー経由のRCE | 2023-05-12 |
| CVE-2017-12617 | PUTでJSPを置いてRCE | 2022-03-25 |
| CVE-2017-12615 | Windowsでの同種のRCE | 2022-03-25 |
| CVE-2020-1938 | AJPのGhostcat | 2022-03-03 |
CVE-2017-12615はKEVで、ランサムウェア攻撃での利用が「Known(確認済み)」とされています。6件のうち4件は、デフォルトサーブレットの書き込み許可かAJPの露出が前提です。デフォルトサーブレットの書き込みは既定で無効です。一方AJPは、9.0.31より前の版では既定で有効になっており、すべてのIPアドレスで待ち受けていました。古い版から設定を引き継いでいる環境は、設定を変えた覚えがなくてもAJPのポートが開いていないかを確かめてください。
CVE-2026-34486:EncryptInterceptorの修正の誤りと対象の3版
CVE-2026-34486は、EncryptInterceptorのパディングオラクル問題(CVE-2026-29146)を直した際の誤りで、クラスタ通信の暗号化を回避される問題です。2026年4月9日に公表され、影響は11.0.20・10.1.53・9.0.116の3つの版だけです。修正は11.0.21・10.1.54・9.0.117(2026年4月2〜4日リリース)に入っています。CISAは2026年8月4日にKEVへ追加し、連邦機関の対応期限を8月7日としました。クラスタを組む環境で、ノードごとに版がそろっていない場合は、この3つの版のノードが残っていないかを先に確かめてください。
CVE-2025-24813とJVNVU#98102314:書き込み可能なデフォルトサーブレットが前提の件
CVE-2025-24813は、書き込みを許可したデフォルトサーブレットへのpartial PUTを突く問題で、影響は9.0.98・10.1.34・11.0.2以前です。リモートコード実行には、ファイルベースのセッション永続化を使っていることなども条件になります。これらの版を公開していた場合は、Webシェルとは?Tomcatへの設置手口と検知・除去の手順の手順で不審なJSPやWARが置かれていないか確かめてください。
2024年12月18日公開のJVNVU#98102314で扱うCVE-2024-50379・CVE-2024-56337は、書き込み可能なデフォルトサーブレットに関係するRCEです。一方、CVE-2024-54677はexamplesアプリへのアップロードによるメモリ枯渇のDoSで、成立条件が異なります。リモートコード実行の2件は、readonlyがfalse、大文字小文字を区別しないファイルシステム(WindowsのNTFSや既定のmacOS)、同じファイルへの読み込みとアップロードの同時発生、の3条件がそろったときだけ成立します。修正版は9.0.98・10.1.34・11.0.2で、Java 8・11で動かす場合は-Dsun.io.useCanonCaches=falseも必要です(Java 17は既定で無効なので、trueに変えていなければ不要。Java 21以降はこのキャッシュ自体がありません)。9.0.123と10.1.61のcatalina.shはこの引数を自動で付けますが、Java 17以降が前提の11.0.27のcatalina.shには付与の行がありません。Windowsサービスなどcatalina.shを通さない起動では、引数が付いているかを別に確かめます。
ブランチ別の修正版の推移とサポート期限
修正版は毎月切り替わっています。各ブランチの修正版は9.x・10.x・11.xの公式セキュリティページで確認できます。
7月から10月までの修正版と更新先
| ブランチ | 7月分 | 8月分 | 9月分 | 最新版 | 必要なJava |
|---|---|---|---|---|---|
| 11.0.x | 11.0.24 | 11.0.25 | 11.0.26 | 11.0.27 | 17以降 |
| 10.1.x | 10.1.57 | 10.1.59 | 10.1.60 | 10.1.61 | 11以降 |
| 9.0.x | 9.0.120 | 9.0.121 | 9.0.122 | 9.0.123 | 8以降 |
| 8.5.x | なし | なし | なし | 8.5.100 | 7以降 |
7月14日公表分の修正版で止まっている環境には、8月の10件と9月の12件に加え、7月28日公表のCVE-2026-66299も未修正で残ります。各件の実際の影響は使用機能や設定によって異なります。
9.0系とNative 1.3系は2027年3月31日にサポート終了
Tomcat 8.5系は2024年3月31日にサポートを終えており、7〜9月のどの件にも修正版は出ていません。系列ごとのJava要件と、Tomcatの内部構造・前段サーバーとの分担はTomcatとは?サーブレットコンテナの仕組みと対応Java版・Apacheとの分担で整理しています。10.1系以降へ移る場合は、パッケージ名がjavaxからjakartaへ変わるためアプリの改修も要ります。
9.0系も、2026年2月11日の告知で2027年3月31日のサポート終了が決まっています。終了の直前に9.1系の提供が始まり、2030年12月31日までリリースが続く予定です。9.1系では、HTTP・HTTPS・AJPのAPR/Nativeコネクタが使えなくなり、Tomcat Native 1.3系もサポートされません(Native 1.3系自体も2027年3月31日に終了)。いま9.0系でAPRコネクタを使っているなら、NIOコネクタへの切り替えを先に済ませておくと移行が楽になります。系列ごとの終了日と9.1系で変わる点はTomcatのバージョン一覧とサポート期限で整理しています。CVEの採番や公開の仕組みはCVE(共通脆弱性識別子)とはで整理しています。
自社環境がTomcatの脆弱性の影響を受けるかを確認する手順
影響の有無は「稼働している版」と「該当機能を使っているか」の2点で決まります。
稼働中のTomcatとTomcat Nativeの版を確かめるコマンド
同梱のスクリプトは、配置されているTomcatのファイルとコマンドを実行したJVMの版を表示します。ファイルを差し替えたあと再起動していない場合は稼働中の版と一致しないため、稼働中の版は起動ログで確かめます。起動ログの文言はロケールで変わります。2026年10月16日にmacOS上のJDK 25(Temurin 25.0.4.1)とTomcat 11.0.27を日本語ロケールで起動すると、ログに「Server version」の文字列は0件で、「Serverのバージョン名: Apache Tomcat/11.0.27」と出ました。文言ではなく、出力元のクラス名で拾います。
# Linux/macOS(Windowsは version.bat。JAVA_HOME か JRE_HOME の設定が必要)
"$CATALINA_HOME/bin/version.sh"
# スクリプトが使えない場合は catalina.jar から直接読む(ロケールに関係なく英語で出る)
java -cp "$CATALINA_HOME/lib/catalina.jar" org.apache.catalina.util.ServerInfo
# 起動ログから Tomcat・JVM・Tomcat Native の行を拾う(ロケールに依存しない)
grep -hE "VersionLoggerListener|AprLifecycleListener|OpenSSLLifecycleListener" \
"$CATALINA_BASE"/logs/catalina.*.log | tail -n 30
ServerInfoを直接呼ぶと、11.0.27では「Server number: 11.0.27.0」、9.0.123では「Server number: 9.0.123.0」と返りました。表示された版が11.0.25・10.1.59・9.0.121以下なら9月公表分の対象です。Nativeを読み込む環境では、AprLifecycleListenerの行の版が2.0.15・1.3.8以下かも同時に見ます。
HTTP/2・AJP・RewriteValveの設定とWebSocketのソースの確認
次に、各脆弱性が効く機能を使っているかをserver.xmlとcontext.xmlから確かめます。配布物のserver.xmlは、HTTP/2やAJPの設定をコメントアウトした状態で同梱しているため、そのまま文字列を検索すると、何も有効にしていなくても9.0.123で6行、11.0.27で4行がヒットしました。コメントを取り除いてから検索します。
# Linux/macOS(perl でコメントを除去してから検索)
for f in server.xml context.xml; do
perl -0pe 's/<!--.*?-->//gs' "$CATALINA_BASE/conf/$f" |
grep -E "Http2Protocol|AJP/1\.3|Ajp[A-Za-z0-9]*Protocol|RewriteValve|EncryptInterceptor|SSLHostConfig|certificateRevocation" |
sed "s/^/$f: /"
done
# Windows(PowerShell)
foreach ($f in "server.xml","context.xml") {
((Get-Content -Raw "$env:CATALINA_BASE\conf\$f") -replace '(?s)<!--.*?-->','') -split "`n" |
Select-String -Pattern 'Http2Protocol|AJP/1\.3|Ajp[A-Za-z0-9]*Protocol|RewriteValve|EncryptInterceptor|SSLHostConfig|certificateRevocation'
}
この形にすると、配布時のままの9.0.123と11.0.27ではどちらも0件、コネクタにHttp2Protocolの行を足すと1件だけヒットしました。ヒットした行は次のように読みます。
Http2Protocolを持つUpgradeProtocolがあればHTTP/2が有効(CVE-2026-86350・CVE-2026-68763など)protocol="AJP/1.3"のコネクタが有効ならAJPの対象(CVE-2026-78383)- WebSocketは設定ファイルに出ないため、
@ServerEndpointやSTOMPの設定をソースで確かめる(CVE-2026-76183・CVE-2026-77791) RewriteValveとrewrite.configがあれば、CVE-2026-59083・CVE-2026-65927の実リスクが上がる<Cluster>配下のEncryptInterceptorと、クライアント証明書・OCSP・CRLの設定も控える
Host単位のconf/Catalina/localhost/*.xmlや、アプリ内のMETA-INF/context.xmlにValveを書いている構成もあるため、必要に応じて検索対象に加えます。
Spring Boot 4.1.1・4.0.8・3.5.16の組み込みTomcatの版と上げ方
組み込みTomcatで動くSpring Bootのアプリ(4系のspring-boot-starter-webmvc、3系のspring-boot-starter-webを使う既定の構成)は、tomcat-embed-coreを内包したjarで動くため、サーバーにTomcatを入れていなくても対象です。JettyやReactor Nettyへ切り替えてTomcatを使用していない構成は、ここで扱うTomcatの脆弱性の対象外です。WARを外部のTomcatへ配備する構成は、配備先のTomcatの版で判断します。2026年10月16日時点でMaven Centralにある最新版(2026年8月20日公開の4.1.1・4.0.8)の依存関係を実際に解決すると、組み込みTomcatはどちらも11.0.24でした。8月・9月公表分の修正(11.0.25・11.0.26)は入っていません。3.5系(OSSサポートは2026年6月30日に終了)でMaven Centralにある最新の3.5.16は、10.1.55です。
| Spring Boot | 組み込みTomcat | 残る公表分 |
|---|---|---|
| 4.1.1 | 11.0.24 | 8月・9月 |
| 4.0.8 | 11.0.24 | 8月・9月 |
| 3.5.16 | 10.1.55 | 7月・8月・9月 |
Spring BootのGitHubのマイルストーンでは、4.1.2と4.0.9の期日が2026年10月22日に設定され、「Upgrade to Tomcat 11.0.27」のissueが両方で完了済みです。それまで待てない場合や3.5系を使い続ける場合は、親POMにspring-boot-starter-parentを使う構成なら、依存バージョンのプロパティ一覧にあるtomcat.versionを上書きします。
<!-- pom.xml:Spring Boot 4.1.1 の組み込み Tomcat を 11.0.27 に上げる例 -->
<properties>
<tomcat.version>11.0.27</tomcat.version>
</properties>
# 依存関係で確かめる
./mvnw dependency:tree -Dincludes=org.apache.tomcat.embed
# ビルド済みの jar で確かめる(ソースが手元に無い本番の jar にも使える)
unzip -l app.jar | grep tomcat-embed-core
この上書きでビルドしたjarを起動すると、ログに「Starting Servlet engine: [Apache Tomcat/11.0.27]」と出て、jarの中身もtomcat-embed-core-11.0.27.jarに変わりました。3.5.16でtomcat.versionを10.1.61にした場合も、依存関係は10.1.61に置き換わります。親POMを使わずBOMをimportしている構成ではプロパティの上書きが効かないため(Spring Boot Maven Pluginのドキュメントに明記)、tomcat-embed-coreなどを依存管理へ個別に書きます。Gradleの依存管理プラグインならext['tomcat.version'] = '11.0.27'です。Spring Boot本体の版とサポート期限はSpring Bootバージョン一覧とサポート期限で、4系への上げ方はSpring Boot 4とは?最新バージョン4.1の変更点で整理しています。
修正版への更新期限と、更新までの暫定緩和
即時更新が必要な構成と、定例の更新で足りる構成
次のどれかに当てはまるなら、定例を待たずに最新版へ上げます。外部に公開したTomcatで認証付きのWebSocketを提供している構成(CVE-2026-76183)、HTTP/2を有効にしてCVE-2026-86350の範囲の版を使っている構成(他人のリクエストのヘッダーが混ざる)、AJPをネットワークに露出させている構成、security-constraintとRewriteValveを併用している構成です。KEVに載ったCVE-2026-34486の対象版(11.0.20・10.1.53・9.0.116)が1台でも残るクラスタも即時更新の対象です。
逆に、HTTP/2・AJP・WebSocket・RewriteValve・クラスタ暗号化のどれも使わない社内専用の単一ノードなら、緊急度は下がります。ただしCVE-2026-65182のような制約の書き順の問題や、クライアント証明書・OCSP・CRLの検証の問題はこれらの機能と無関係に残るため、認証・認可とTLSの設定を確かめたうえで更新期限を決めてください。ただし8.5系は例外で、定例の更新の中身を「9.0系以降への移行」にする必要があります。複数の案件でTomcatを抱えている場合は、版と設定を案件横断で洗い出す脆弱性診断・セキュリティ診断で棚卸しし、対象一覧・担当者・更新期限を記録すると、対応漏れを確認しやすくなります。
すぐに更新できない場合の暫定緩和と、避けるべき設計
緩和策は機能ごとに違います。AJPを使っていないならコネクタの定義を削除します。使うならaddressにTomcat側の待受IP(同じホストならループバック)を指定し、別ホストのプロキシから接続する場合はファイアウォールでも接続元を限定したうえで、secretを設定します。ただしCVE-2026-78383はエンドユーザーがリクエストボディを送らないことで起きるため、前段経由の通常の通信でも成立しうるので、到達制限だけでは塞がりません。HTTP/2が不要なら、スタンドアロンTomcatではUpgradeProtocolの設定を外します。Spring Bootの組み込みTomcatではserver.http2.enabled=falseを設定し、独自のコネクタ設定も確認します。設定変更後は再起動して反映を確かめます。WebSocketは、前段のリバースプロキシで通すパスを絞り、前段でも認証を掛けます。RewriteValveを使う構成は、セキュリティ制約と書き換え規則が同じパスの解釈になっているかを点検します。
避けるべきなのは、RewriteValveの書き換えやWebSocketのパス定義だけでアクセス制御を実現し、security-constraintや前段のプロキシでの制約を持たない設計です。7月のCVE-2026-59083、8月のCVE-2026-65182・65927、9月のCVE-2026-76183と、パスの解釈のずれを突く制約バイパスが3か月続けて見つかっています。書き換えは経路の整形にとどめ、アクセス制御は制約の定義と前段の制御で二重に掛けてください。前段にApache HTTP Serverを置いているなら、Apache HTTP Server 2.4の脆弱性まとめでプロキシ側の更新も確かめてください。
Apache Tomcatの脆弱性でよくある質問
2026年10月時点で、どのバージョンへ上げればよいですか?
11.0系は11.0.27、10.1系は10.1.61、9.0系は9.0.123です(2026年10月12日公開)。7〜9月に公表されたTomcat本体の脆弱性は、1つ前の11.0.26・10.1.60・9.0.122で全件が直っていますが、10月20日に10月版でしか直らない8件が公表されたため、10月版を更新先にします。Tomcat Nativeを使っているなら2.0.16か1.3.9へ、本体と同時に上げます。
CVE-2026-59083のCVSSは9.1ですか?
9.1は、CISAが補足データとして付けた値です。採番したApacheの評価はLowで、CVSSは付けていません。RewriteValveを使い、書き換え規則とセキュリティ制約が特定の組み合わせになっている構成でだけ成立します。修正版は11.0.24・10.1.57・9.0.120です。
EncryptInterceptorとは何ですか?使っていなければ影響はありませんか?
Tomcatのクラスタでノード間のセッション複製の通信を暗号化する部品です。server.xmlの<Cluster>に設定していなければ、CVE-2026-59084・CVE-2026-34486・CVE-2026-55955の影響はありません。使っている場合は、暗号方式がAES/GCM/NoPaddingになっているか、インターセプタの並び順が要件どおりか、全ノードの版がそろっているかを確かめます。
Tomcat 8.5系は修正されますか?
修正されません。8.5系は2024年3月31日にサポートを終えています。CVEレコードではCVE-2026-59083やCVE-2026-76183の影響範囲に8.5.0〜8.5.100が含まれており、影響はあるのに修正が出ない状態です。9.0系以降へ移行してください。
Spring Bootの組み込みTomcatも対象になりますか?
対象になります。2026年10月16日時点の最新版4.1.1・4.0.8は組み込みTomcatが11.0.24で、8月・9月公表分が残っています。10月22日予定の4.1.2・4.0.9を待つか、tomcat.versionプロパティで組み込みTomcatだけを上げ、dependency:treeやjarの中身で反映を確かめます。