はじめに:なぜ今Tomcatのバージョン管理が重要なのか
Apache Tomcat は世界で最も広く使われている Java サーブレットコンテナです。エンタープライズのデータセンターでスタンドアロン稼働するだけでなく、Spring Boot のデフォルトサーブレットコンテナとして組み込まれ、膨大な数の内部ツールやパブリックAPIを支えています。
2025年10月、脅威インテリジェンス企業 Criminal IP が調査した結果、インターネット上に公開された Tomcat インスタンスが 54万件以上 存在し、その多くで HTTP PUT が有効になっていることが判明しました。Tomcat のデプロイは「安定しているから触らない」という運用になりがちなため、EOL(End-of-Life/サポート終了)バージョンが本番環境に静かに残り続けるリスクがあります。
特に重要なのは、Tomcat 9 が Java EE(javax.*)名前空間を実装した最後のバージョンという点です。Tomcat 10 以降は Jakarta EE(jakarta.*)に移行しており、Tomcat 9 からのアップグレードは「サーバーの更新」ではなく 「アプリケーションの移行作業」 になります。
- Tomcat 8.5 はすでに2024年3月31日にEOL(3年以上経過)
- Tomcat 9.0.x のサポートは 2027年3月31日 に終了予定
Apache Tomcat のサポートポリシーの仕組み
Apache Tomcat プロジェクトは、Angular や Node.js のように固定されたサポート期間を公表していません。代わりに、以下の一貫したパターンに従っています。
約10年のサポートブランチ: メジャーバージョンは初回リリースから概ね10年間サポートされます。
3つの並行ブランチ: 通常、同時に3つのメジャーバージョンがサポートされます。新しいメジャーバージョンが安定版になると、最も古いブランチが終了します。
約1年前のEOL予告: サポート終了の約1年前に公式アナウンスが行われます。
仕様レベルとの対応: 各メジャーバージョンは特定の Servlet / JSP / EL / WebSocket 仕様を実装します。Tomcat 9 以前は Java EE 仕様、Tomcat 10 以降は Jakarta EE 仕様に対応します。
注目:Tomcat 9 の LTS 計画(2026年2月発表)
2026年2月、Tomcatチームは Tomcat 9(Java EE 最後のバージョン)に対する正式な長期サポート計画を発表しました。
- Tomcat 9.0.x のサポートは 2027年3月31日 まで継続
- その直前に新ブランチ Tomcat 9.1.x の提供が開始され、2030年12月31日 までサポート(Java 8 系ディストリビューションの多くのサポート終了日に合わせた設定)
- 9.0.x と 9.1.x の差分は最小限:APR/ネイティブコネクタ(HTTP・HTTPS・AJP)の削除と Tomcat Native 1.3.x のサポート終了のみ(Tomcat Native 2.0.x は継続)
これは Apache Tomcat プロジェクト史上初めて、ブランチを制約付き LTS ラインに分割した事例であり、Tomcat 9 上に残る Java EE ワークロードがいかに多いかを示しています。
Apache Tomcat バージョン一覧・リリースタイムライン
| バージョン | 初回リリース | EOL(サポート終了) | 最終リリース | ステータス |
|---|---|---|---|---|
| Tomcat 11.0 | 2024年10月 | 未定 | 11.0.22(2026年5月) | ✅ 現行・推奨 |
| Tomcat 10.1 | 2022年9月 | 未定 | 10.1.55(2026年5月) | ✅ サポート中 |
| Tomcat 10.0 | 2020年12月 | 2022年10月31日 | 10.0.27 | ❌ EOL |
| Tomcat 9.0.x | 2018年頃 | 2027年3月31日 | 9.0.118(2026年5月) | ⚠️ 終了予定 |
| Tomcat 9.1.x | 2027年3月頃(予定) | 2030年12月31日 | - | 🔜 予定 |
| Tomcat 8.5 | 2016年3月 | 2024年3月31日 | 8.5.100 | ❌ EOL |
| Tomcat 8.0 | - | 2018年6月30日 | 8.0.53 | ❌ EOL |
| Tomcat 7.0 | 2010年頃 | 2021年3月31日 | 7.0.109 | ❌ EOL |
| Tomcat 6.0 | - | 2016年12月31日 | - | ❌ EOL |
| Tomcat 5.5 | - | 2012年9月30日 | - | ❌ EOL |
2026年5月時点のサポート中ブランチの最新リリースは 11.0.22、10.1.55、9.0.118 です。Tomcat 12 は Jakarta EE 12 / Java 21 以上を対象に開発中ですが、マイルストーンリリースや日程は未発表です。
Apache Tomcat 9 のEOL:2027年3月31日
Tomcat 9.0.x のサポートは 2027年3月31日 に終了します。これは Tomcat ユーザーの中で最も多くの環境に影響する、最重要日程です。Tomcat 9 は javax.servlet API に対応した最後のバージョンであるため、Java EE ベースのすべてのアプリケーションは Tomcat 9 が上限になります。
Tomcat 9.1.x LTS の注意点
- 9.0.x の最終リリースは 2027年3月31日 直前を予定
- 9.1.x は 2030年12月31日までサポート予定だが、APR/ネイティブ AJP コネクタを使っている場合は NIO AJP コネクタへの移行が必要
- 重要:9.1.x に移行しても
javax.*→jakarta.*の名前空間移行は依然として必要です。9.1 はあくまで「移行の時間を買うもの」であり、移行を不要にするものではありません。Tomcat 10.1 または 11 への移行を 2030年までの計画として位置づけるべきです。
Tomcat 9 に届き続けるCVE(脆弱性)
2026年5月のセキュリティリリースだけで Tomcat 9.0.118 に7件の脆弱性が修正されており(詳細は2026年5月 Tomcat セキュリティリリースの解説を参照)、2026年4月には Tomcat 9・10・11 合わせて10件のCVEがパッチされました(2026年4月のCVEまとめ)。パッチの頻度は月1回ペースであり、EOL 後はこれらのアドバイザリがあなたのデプロイ環境をカバーしなくなります。
Apache Tomcat 8.5 のEOL:2024年3月31日(すでに終了)
Tomcat 8.5 は 2024年3月31日 にEOLを迎え、最終リリースは 8.5.100 です。もともと Tomcat 9 の機能を Java 7 環境にも提供するため 2016年3月に Tomcat 9.0.0.M4 からフォークされたブランチで、Tomcat 史上最も長寿かつ広く使われたブランチの一つです。それゆえに、認定ミドルウェアスタック、ベンダー製アプライアンス、Servlet 3.1 ベースのアプリケーションを中心に、今なお本番環境で稼働しているケースが多数あります。
Tomcat 8.5 に影響する主要なCVE(パッチなし)
CVE-2025-24813(CVSS 9.8 / Critical)
partial PUT 処理のパス等価性の欠陥により、デフォルトサーブレットへの書き込みが有効な場合にリモートコード実行(RCE)、情報漏洩、コンテンツ注入が可能。2025年3月の開示からわずか約30時間でエクスプロイトコードが公開され、CISAの既知悪用済み脆弱性(KEV)カタログにも登録済み。Tomcat 9.0.99、10.1.35、11.0.3 で修正済みだが、8.5 には修正なし。
CVE-2024-50379 / CVE-2024-56337(CVSS 9.8 / Critical)
大文字小文字を区別しないファイルシステム上での JSP コンパイル時の TOCTOU 競合状態により、デフォルトサーブレットへの書き込みが有効な場合にRCEが可能。2024年12月開示(8.5の最終リリースから9ヵ月後)。
CVE-2025-55752(Important)
リライト処理のパストラバーサルで /WEB-INF/ や /META-INF/ の保護をバイパス可能。PUT が有効な環境ではRCEにエスカレートするリスクあり。CVE-2025-55754(コンソールログへのANSIエスケープシーケンス注入、8.5.60〜8.5.100 が対象)および CVE-2025-61795(マルチパートアップロード一時ファイルによるDoS)と同時開示。
2026年5月のCVEバッチ(7件)
CVE-2026-43512(ダイジェスト認証バイパス:不明ユーザーがパスワード null でログイン可能)、CVE-2026-43515(セキュリティ制約の不正適用)、CVE-2026-43514、CVE-2026-43513、CVE-2026-42498、CVE-2026-41293、CVE-2026-41284 の合計7件。NVD の製品ステータスでは大半について Tomcat 8.5 への影響が確認されています。
Tomcat 8.5 を運用中の組織は、サポート対象ブランチがパッチを受けるペースと同じ速度で 未修正のCVEを蓄積し続けています。
Apache Tomcat 10.0 のEOL:2022年10月31日
Tomcat 10.0 は 2020年12月リリース・2022年10月31日EOLという、現行ブランチ中最も短命なバージョンです。Jakarta EE 9(jakarta.*名前空間)を初めて実装した「移行用のリリース」として位置づけられており、Tomcat 10.1 にすぐ置き換えられました。最終リリースは 10.0.27 です。
10.0 から 10.1 への移行は Jakarta 名前空間内に留まるため、比較的容易なアップグレードです。10.0 に留まり続ける理由はありません。
Apache Tomcat 10.1:サポート中
2022年9月初回リリース。Jakarta EE 10 仕様(Servlet 6.0、JSP 3.1)を実装し、Java 11 以上が必要です。2026年5月に 10.1.55 がリリースされ、現在も活発にメンテナンス中です。EOL は未定ですが、パターン上 Tomcat 12 の安定版リリースが近づいた段階でアナウンスが来ると予測されます。
Apache Tomcat 11.0:最新版・推奨バージョン
2024年10月初回リリース。Jakarta EE 11 仕様(Servlet 6.1、JSP 4.0、WebSocket 2.2)を実装し、Java 17 以上が必要です。新規プロジェクトおよび Tomcat 9 からの移行先として 最も推奨されるバージョンです。javax.* → jakarta.* の名前空間変更は 10.1 でも 11 でも同様に発生するため、どうせ移行するなら最も長いサポート期間を持つ 11 を選ぶのが合理的です。
古いバージョン:Tomcat 8.0、7.0、6.0、5.5
Tomcat 8.5 より古いバージョンはすべて5年以上EOLが経過しています。Tomcat 8.0 は 2018年6月30日(最終リリース 8.0.53)、Tomcat 7.0 は 2021年3月31日(最終リリース 7.0.109)、Tomcat 6.0 は 2016年12月31日、Tomcat 5.5 は 2012年9月30日にそれぞれEOLを迎えています。これらのバージョンを本番環境で運用することは、最終リリース以降に共有コンポーネントに蓄積されたすべての CVE を未修正のまま抱えることを意味します。
Tomcat EOL 後に何が起きるか
EOL を迎えると、以下の3つが起きます。
① セキュリティパッチと記録が止まる: Apache は EOL バージョンのセキュリティページを更新しません。tomcat.apache.org/security-8.html は 8.5.99 以降更新が止まっており、一見「問題なし」に見えます。しかし NVD(National Vulnerability Database)には 8.5 が影響範囲として記載された CVE が継続的に登録されています。「Apacheのセキュリティページに記載なし」≠「影響なし」です。また、脆弱性スキャナーは EOL バージョン自体もフラグを立てます。
② プラットフォームが乖離する: 新しい Java バージョン、TLS 要件の更新、HTTP/2 の動作変更は、サポート対象ブランチに対してのみ検証されます。EOL の Tomcat は JDK、ロードバランサー、クライアントとの互換性が徐々に失われていきます。
③ コンプライアンス監査で指摘される: PCI DSS、SOC 2、HIPAA、FedRAMP はいずれもサポートされたソフトウェアの使用を要求しています。さらに規制の水準は上昇しており、EU サイバーレジリエンス法(CRA)第14条 の脆弱性報告義務は2026年9月に施行開始、DORA 第6条 の ICT リスク管理義務は2025年1月からすでに発効しています。パッチのない既知 EOL のサーブレットコンテナを稼働させることは、社内のリスク議論にとどまらず、報告対象のコンプライアンス違反になりつつあります。
見落とされがちな「組み込みTomcat」の影響範囲
Spring Boot は Tomcat をデフォルトサーブレットコンテナとして組み込むため、スタンドアロンの Tomcat をデプロイしていなくても Tomcat の CVE の影響を受けます。EOL の Spring Boot 2.7 を使っているプロジェクトは tomcat-embed-core を通じて EOL Tomcat 9 系の脆弱性を引き継いでいます。この問題は、CVE-2025-66614 と CVE-2026-24733 が Spring Boot 2.7 にも影響を与えた事例でも確認されています。
EOL Tomcat への対応策
選択肢1:Tomcat 10.1 または 11 へのアップグレード
ほとんどのチームにとって正しい長期的な解決策ですが、スコープを正確に把握する必要があります。Tomcat 9 以前からの移行は javax.* → jakarta.* の名前空間移行を伴い、アプリケーションコード・サードパーティ依存ライブラリ・ビルド設定のすべてが変更対象になります。Apache が提供する Tomcat Migration Tool for Jakarta EE を使えばデプロイ済み WAR を自動変換できます($CATALINA_BASE/webapps-javaee に配置するだけで変換される)が、依存ライブラリのバイトコード変換はあくまで暫定措置です。大規模エンタープライズアプリケーションでは複数四半期にわたるプロジェクトになります。
なお「8.5 → 9 へ先に上げる」というアプローチは直近のEOLギャップを解消しますが、Tomcat 9.0.x の 2027年3月の期限と名前空間移行が依然として残り、結果的に2段階の移行が必要になります。
選択肢2:Tomcat からの完全移行
Jetty や Undertow、フルマネージドプラットフォームへの移行を EOL を機に検討する組織もあります。最もコストがかかる選択肢であり、EOL 単体を理由とするには割が合わないことが多いですが、プラットフォーム統合が別途進んでいる場合は合理的な判断になりえます。
選択肢3:商用の延長サポートの導入
HeroDevs NES(Never-Ending Support)for Apache Tomcat は、オープンソースのサポートが終了した時点からギャップなくパッチを提供する、Tomcat 8.5 のセキュアなドロップイン代替品です。上記のEOL後CVEバッチ(CVE-2025-24813、2024年12月のTOCTOUペア、2025年10月のトリオ、2026年5月の7件)に対する修正を提供済みです。また Tomcat 9.0 についても、2027年3月のEOL後もサポートを延長し、計画的なJakarta移行ができる時間的余裕を提供します。
よくある質問(FAQ)
Q. Tomcat 9 はいつEOLになりますか?
A. Tomcat 9.0.x のサポートは 2027年3月31日に終了します。後継の 9.1.x ブランチが 2030年12月31日まで提供される予定ですが、APR/ネイティブコネクタが削除されます。Tomcat 9 は Java EE(javax.*)をサポートする最後のバージョンです。
Q. Tomcat 8.5 はまだサポートされていますか?
A. いいえ。2024年3月31日にEOLを迎え、最終リリースは 8.5.100 です。CVE-2025-24813 などの重大な脆弱性の影響を受けますが、Apache による公式パッチは提供されません。
Q. Tomcat 9 と Tomcat 10 の違いは何ですか?
A. Tomcat 9 は Java EE 8 仕様の javax.* パッケージ名前空間を実装しています。Tomcat 10 以降は Jakarta EE 仕様の jakarta.* 名前空間を使用します。Tomcat 9 向けに書かれたアプリケーションは、コード変更なしには Tomcat 10 以降で動作しません(Apache の移行ツールによる自動変換は可能)。
Q. 新規プロジェクトにはどのバージョンを選べばいいですか?
A. Tomcat 11 を推奨します。Jakarta EE 11 仕様を実装し、Java 17 以上を必要とし、現行ブランチの中で最も長いサポート期間を持ちます。Java 11 との互換性が必要な場合は Tomcat 10.1 も良い選択肢です。
Q. EOLのTomcatは動作が止まりますか?
A. いいえ、動き続けます。それが問題の本質です。サービスは提供し続けながら、未修正の脆弱性を蓄積し、コンプライアンス監査で指摘され、新しい JDK やインフラとの互換性が徐々に失われていきます。リスクはスキャナーの検出や監査、あるいは実際のエクスプロイトが発生するまで静かに拡大します。
まとめ
Tomcat の約10年サポートブランチは「安定しているから大丈夫」という錯覚を生みがちですが、重要な日程は具体的です。Tomcat 8.5 は2024年3月以降パッチが提供されておらず、サポート対象ブランチへの CVE バッチすべての影響を受け続けています。Tomcat 9.0.x は2027年3月31日にEOLを迎え、Java EE 最後のバージョンであるがゆえに、すべての Tomcat 9 アプリケーションは名前空間移行を控えています。
Apache のセキュリティアドバイザリに記載がないことを「リスクなし」と解釈するのが最も危険な判断です。アップグレード、移行、延長サポートのどれを選ぶにせよ、早期に計画を立て、計画的に行動することが重要です。
Tomcat 8.5、Tomcat 9、またはそれ以前のバージョンを運用している場合は、NES for Apache Tomcat の詳細を確認するか、HeroDevs にお問い合わせください。