Tomcat の脆弱性(2026年10月):自分の Tomcat・Spring Boot は当たる?上げる版と確かめ方

PR
Tomcat の脆弱性(2026年10月):自分の Tomcat・Spring Boot は当たる?上げる版と確かめ方
この記事は約40分で読めます。

2026年10月20日に、Apache Tomcat の脆弱性(悪用されると困ることが起きうる、ソフトウェアの弱点)が公表されました。Tomcat は、Java で Web サービスを作るための共通の決まり(Jakarta EE)の一部の仕様を実装した、オープンソースのソフトで、大きな Web アプリで多く使われている、と Tomcat は書いています。直った版は10月12日に出ていて、中身が公表されたのは、その8日後です。

Spring Boot は、単独で動く、本番向けの Spring のアプリを簡単に作るための仕組みで、Tomcat を中に直接埋め込めます(war ファイルを置かずに動かせます)。Spring Boot の Web アプリは、既定で Tomcat を中に入れて動くので、Spring Boot の版が、中の Tomcat の版を決めます。 この記事は、Tomcat を自分で動かしている人と、Spring Boot でアプリを作っている人に向けて書きました。10月のほかの件は、10月22日までの脆弱性まとめにあります。

先に答えを書きます。ここがいちばん大事なところです。

  • 直った版は、Tomcat 11.0.27・10.1.61・9.0.123 です。 10月12日に出て、10月20日に中身が公表されました。Tomcat の告知のメールが書く手当ては、この版に上げることだけです
  • Spring Boot は、4.1 の人は 4.1.2、4.0 の人は 4.0.9 に上げます(日本時間の10月23日に出ました)。中の Tomcat が 11.0.27 になり、Important の3件の当たる版(11.0.26 まで)の外です。Spring のリリースノートは「Tomcat を上げた」とだけ書き、CVE(脆弱性に付ける世界共通の番号)の番号はありません(→「4.1.2・4.0.9 で、中の Tomcat が 11.0.27 になった」)
  • Spring Boot 3.5 は、無償の直った版が出ていません。 3.5.16(2026年6月25日)が最後で、無償の支えは2026年6月に終わりました。手は2つです。4.0 か 4.1 へ移るか、移るまでのつなぎに、tomcat.version を 10.1.61 に上書きするかです。上書きで直るのは Tomcat だけで、Spring Boot 本体やほかの部品の直しは入りません(Spring は、版の上書きを慎重にと書いています)(→「Spring Boot 3.5 の人は? 無償の直った版は出ていない」)
  • 自分の版は、Spring Boot なら、起動のログの1行で見られます。 Starting Servlet engine: [Apache Tomcat/…] の行の、Apache Tomcat/ の後ろの番号が、11.0.27・10.1.61 より前なら、当たる件があります(11.0 で始まれば Spring Boot 4.x、10.1.41〜10.1.55 なら 3.5 の中の Tomcat です)。Maven の dependency:tree、Gradle の dependencyInsight でも見られます。Tomcat を単体で入れているなら bin/version.sh です(→「自分の版は、どう確かめる?」)
  • 急ぐ度合いは、使い方で変わります。 LDAP でログインさせる JNDIRealm、HTTP/2 での非同期の処理、AJP(前段の Web サーバーと Tomcat をつなぐ通り道。11.0 だけ)が、告知の条件に当たる使い方です。使っていなくても、当たるかは版で決まるので、上げます(→「急ぐ度合いは、使い方で見る」)

Spring Boot を使っている初心者が、まずやることは、4つ目の、起動のログの1行を見ることです。コマンドを覚えなくても見られます。Tomcat を単体で入れているなら bin/version.sh です。

書いてあることは、Tomcat・Spring・CVE の記録・公的機関・Debian・Ubuntu などの公式の文書を、2026年10月23日の16時56分から18時24分ごろ(日本時間)に開いて確かめたものです。Maven・Gradle・Spring Boot の起動・Tomcat の公式イメージは、手元で17時ごろから18時22分ごろに流しました。悪用の状況や OS の直しは日々変わるので、時刻を添えました。脆弱性を突く操作は、していません。

この記事でわかること
  • 10月の直し(Important 3件・Low 5件)は何か。点数は誰が付けたものか
  • 当たる版と直った版。使い方で変わる、急ぐ度合い
  • Spring Boot の版と、中の Tomcat。4.1.2・4.0.9 で何が変わったか
  • 自分の版の確かめ方(起動のログ・Maven・Gradle・単体の Tomcat・OS のパッケージ・Docker の公式イメージ)
  • Spring Boot 3.5 の人がとれる手と、無償の支えの終わり
  1. 10月の Tomcat で、何があった?
    1. 直った版は10月12日に出て、10月20日に公表された
    2. Important の3件
      1. 101296:確かめがうまくいかないとき、通してしまう
      2. 101356・103119:前の人あての書類が、次の人に渡ることがある
    3. Low の5件
    4. 点数は、誰が付けたもの?
  2. 自分の Tomcat は当たる? 版で決める
    1. 当たる版と、直った版
    2. 急ぐ度合いは、使い方で見る
    3. 9.0・8.5 を使っているとき
  3. Spring Boot は当たる? 中の Tomcat の版で決まる
    1. 4.1.2・4.0.9 で、中の Tomcat が 11.0.27 になった
    2. Spring Boot の版と、中の Tomcat
    3. war を外の Tomcat に置いているとき
  4. 自分の版は、どう確かめる?
    1. 起動のログで見る
    2. Maven:dependency:tree で見る
    3. Gradle:dependencyInsight で見る
    4. Tomcat を単体で入れているとき:version.sh で見る
    5. OS のパッケージの Tomcat:OS の告知を見る
    6. Docker の公式イメージ:中の Java は別に見る
  5. Spring Boot 3.5 の人は? 無償の直った版は出ていない
    1. 3.5 の無償の支えは、2026年6月に終わった
    2. 手1:4.0 か 4.1 へ移る
    3. 手2:移るまでのつなぎに、tomcat.version を 10.1.61 に上書きする
  6. 悪用はされている?(2026年10月23日時点)
  7. よくある質問
    1. Spring Boot のリリースノートに、CVE の番号がありません。直っていますか?
    2. AJP も HTTP/2 も使っていません。上げなくてもいいですか?
    3. Spring Boot 3.5 のまま tomcat.version を上げれば、それで足りますか?
    4. CISA の点は CRITICAL です。Tomcat の Important と、どちらを見ればいいですか?
    5. Ubuntu や Debian の Tomcat は、いつ直りますか?
  8. まとめ
  9. 参考資料

10月の Tomcat で、何があった?

直った版は10月12日に出て、10月20日に公表された

Tomcat の公式サイトは、2026年10月12日に、Tomcat 11.0.27・10.1.61・9.0.123 を出したと載せています。セキュリティのページでも、3つの系統(11.0・10.1・9.0)とも、10月12日の版で直った、と書いています。そして、件ごとの公表は、どれも10月20日です。つまり、直った版が出たのは、公表の8日前です。

系統直った版(出た日)件数(Tomcat の評価)
11.011.0.27(10月12日)7件(Important 3・Low 4)
10.110.1.61(10月12日)6件(Important 2・Low 4)
9.09.0.123(10月12日)7件(Important 2・Low 5)

件数は系統ごとの数です。CVE の番号としては8件で、AJP の1件は11.0 だけ、APR の1件は9.0 だけに当たります(JVN〔JPCERT/CC と IPA の脆弱性情報〕の「8件」と同じです)。Apache(CVE の番号を付ける側)は、8件の CVE の記録を、日本時間の10月20日 22時36分から22時54分に公開しました(記録の UTC の時刻に9時間を足しました)。

Tomcat は、バイナリーの差分(パッチ)を出さない、と書いています。直すには版を上げます。ソースの差分を当てたいなら、Tomcat を自分でビルドし直すことになります。

3件の Important について、Tomcat のセキュリティチームの告知のメール(CVE-2026-101296・CVE-2026-101356・CVE-2026-103119)は、どれも「11.0.27・10.1.61・9.0.123(103119 は 11.0.27 だけ)に上げることを勧める」と書いていて、ほかの緩和策の欄はありません。

出典: Tomcat のトップページ・Tomcat のセキュリティのページ(11.0・10.1・9.0)・JVN: JVNVU#93110597

Important の3件

Tomcat が付けた評価は、3件とも Important です。評価の意味は、あとの「点数は、誰が付けたもの?」に書きました。

CVE何が起きる当たる版当たる条件(原文の訳)
CVE-2026-101296正しいパスワードなしで、認証できてしまう11.0.0-M1〜11.0.26・10.1.0-M1〜10.1.60・9.0.0.M1〜9.0.122JNDI realm を、GSSAPI 以外の SASL の認証の仕組みで設定しているとき
CVE-2026-101356利用者の間で、要求や応答が入れ替わることがある11.0.22〜11.0.26・10.1.55〜10.1.60・9.0.118〜9.0.122HTTP/2 で、非同期(async)のサーブレット(Web の要求を受け持つ部品)の処理のとき(題は「エラーのあと」)
CVE-2026-103119AJP で、応答が次の要求に分かれて渡り、前の応答の中身が漏れうる11.0.0-M25〜11.0.26(11.0 だけ)題が「AJP」。AJP は、Apache httpd などの前段の Web サーバーと Tomcat をつなぐ通り道

101296:確かめがうまくいかないとき、通してしまう

まず、たとえ話で壊れている場所を見ます。

ある会社の受付が、名簿に照らして、来た人を通すかどうかを決めています。ところが、ある確かめ方のときだけ、受付は、正しい合言葉が無くても通してしまいます。壊れているのは、確かめがうまくいかなかったときに、「通さない」ではなく「通す」側に倒れるところです。

Tomcat の言い方では、こうなります。たとえ話の受付は JNDIRealm(Tomcat が利用者を確かめるための仕組みの1つ)、名簿は LDAP のディレクトリ(利用者の名前・パスワード・役割を置く所)、ある確かめ方は、GSSAPI 以外の SASL の認証の仕組みに当たります。Tomcat の見出しは「bind credential validation fails open」(認証情報の確かめが、うまくいかないときに開いてしまう)で、本文は、JNDI realm を GSSAPI 以外の SASL の認証の仕組みで設定していると、攻撃者が正しいパスワードなしで認証できた、と書いています。SASL や GSSAPI の言葉が分からなくても、JNDIRealm を使っているかを見れば足ります。認証と認可の言葉は、認証と認可の記事にあります。

Tomcat の報告日は2026年9月14日です。CVE の記録は、支えの終わった 8.5.0〜8.5.100 と 7.0.0〜7.0.109 も当たると書いています。

101356・103119:前の人あての書類が、次の人に渡ることがある

こちらも、たとえ話で壊れている場所を見ます。

窓口に、お客さんが次々に来ます。ところが、ときどき、前のお客さんあての書類が、次のお客さんに渡ってしまいます。壊れているのは、書類を、持ち主ごとにきちんと分けられないところです。他人の書類を見られることがあります。

Tomcat の言い方では、こうなります。窓口は Tomcat、書類は要求と応答に当たります。101356 は、HTTP/2 の非同期のサーブレットの処理で、使い終わった部品を使い回すところに誤りがあり、利用者の間で、要求や応答が入れ替わることがある、と書いています。サーブレットは、Jakarta Servlet の仕様で、コンテナ(ここでは Tomcat)が管理する、動的な内容を作る Web の部品とされています。103119 は、応答の本文が、いまの要求と、その接続で次に受けた要求に分かれて渡り、たいていは2つ目の要求が失敗し、ことによると前の応答の中身が、次の要求に漏れる、と書いています(原文は「most likely」「possibly」)。

どちらも、報告日は2026年9月16日です。101356 の当たる版は新しい版だけ(11.0.22 から、10.1.55 から、9.0.118 から)で、101296 とは範囲が違います。

出典: Jakarta Servlet 6.1 の仕様

Low の5件

Tomcat が付けた評価は、5件とも Low です。CISA-ADP の点(あとで説明します)は付いていません。

CVE一言当たる系統(当たる版)
CVE-2026-93446TLS 1.3 の接続が、ときどき失敗する11.0・10.1・9.0(11.0.0-M21〜11.0.26・10.1.25〜10.1.60・9.0.90〜9.0.122)
CVE-2026-88041HTTP/2 で、前の要求の trailer(本文のあとに付く見出し)が、次の要求に漏れる11.0・10.1・9.0(11.0.0-M23〜11.0.26・10.1.27〜10.1.60・9.0.92〜9.0.122)
CVE-2026-74049JSP の <c:redirect> で、転送のあとも、ページの残りが処理される11.0・10.1・9.0(11.0.0-M1〜11.0.26・10.1.0-M1〜10.1.60・9.0.0.M1〜9.0.122)。CVE の記録は 8.5・7.0 も当たると書く
CVE-2026-74048OpenSSLLifecycleListener で FIPS モードを指定して、その有効化に失敗しても、Tomcat が止まらず、FIPS でないまま動く11.0・10.1・9.0(11.0.0-M14〜11.0.26・10.1.22〜10.1.60・9.0.92〜9.0.122)
CVE-2026-80353APR/Native のコネクタで Unix ドメインソケットを作るときの競合で、権限の無い、同じ機械の利用者が、ソケットにつなげる9.0 だけ(9.0.47〜9.0.122)

どれも、10月12日の版(11.0.27・10.1.61・9.0.123)で直っています。

点数は、誰が付けたもの?

点数は、見る場所で違います。どれかに揃えず、「誰が、どの版で付けた点か」を並べます。

Tomcat の評価。 Tomcat のセキュリティチームが付ける、言葉の評価です。段階は Critical・Important・Moderate・Low の4つで、10月の件に Critical はありません。Important は、データの安全が損なわれる、サーバーが使えなくなる、などにつながりうるもの、という意味です。評価は「いちばん悪い場合」で決めるので、自分の環境での影響は、告知を読んで確かめる必要があります。Tomcat は、評価が環境で変わることがある、とも書いています。Apache の CVE の記録には CVSS の点が無く、付いているのは言葉の評価(important・low)だけです。

CISA-ADP の点。 CISA(アメリカの政府機関)は、CVE の記録に情報を足す枠(CISA-ADP)で、番号を付けた側が点を付けていないときに、CVSS(脆弱性の深刻さを点数で表す共通の方式)の点などを足すことがあります。Important の3件には、この点が付いています。CVSS の版が、件で違います。

CVECISA-ADP の点
CVE-2026-101296CVSS 4.0 で 9.1(CRITICAL)
CVE-2026-101356CVSS 3.1 で 9.1(CRITICAL)
CVE-2026-103119CVSS 3.1 で 9.1(CRITICAL)

4.0 と 3.1 は採点の方式の版で、同じ数字でも物差しが違うので、並べて比べません。Tomcat の Important は言葉の段階で、CVSS の数字とは別の物差しです。

NVD。 NVD(アメリカの脆弱性のデータベース)は、3件とも「分析待ち」(Awaiting Analysis)で、NVD 自身の点はまだありません。NVD の画面に出る点は、CISA-ADP の点を写したものと見られます。

Ubuntu。 Ubuntu は、101296 のページで、優先度を Medium としています(ほかの件のページは開いていません)。

点が高いことと、自分が受ける被害の大きさは別です。自分に効くかは、点ではなく、版と使い方で見ます。点数や KEV の読み方は、脆弱性の知らせの読み方にまとめています。

出典: Tomcat: 評価の意味・CVE の記録(101296・101356・103119。CISA-ADP の点は、畳まれた「CISA-ADP」の枠を開くと見られます)・Ubuntu: CVE-2026-101296

自分の Tomcat は当たる? 版で決める

当たる版と、直った版

いま支えのある系統は、11.0・10.1・9.0 の3つです。当たるかどうかは、版で決まります。 直った版より前なら、上げます。

系統直った版求める Java当たる Important の件
11.011.0.2717 以上3件(101296・101356・103119)
10.110.1.6111 以上2件(101296・101356)
9.09.0.1238 以上2件(101296・101356)

「求める Java」は、その Tomcat を動かすのに要る Java の最低の版です(Tomcat の「サポートされている版」の表)。当たる版の範囲は、件ごとに違います(上の「Important の3件」の表)。101296 は直った版より前のすべてに当たり、101356 は新しい版だけ、103119 は 11.0 だけです。ただ、10月12日の版に上げれば、Important の3件も Low の5件も直るので、自分がどの範囲に入るかを細かく見るより、直った版に上げるのが早いです。

出典: Tomcat: サポートされている版

急ぐ度合いは、使い方で見る

先に、はっきりさせます。当たるかどうかは、版で決まります。手当ては、上げることだけです。 そのうえで、使い方によって、どれくらい急ぐかが変わります。3件の条件は、次のとおりです。

件条件自分の設定の見方
101296JNDI realm を、GSSAPI 以外の SASL の認証の仕組みで設定している設定に org.apache.catalina.realm.JNDIRealm があるか。JNDIRealm は、Tomcat を LDAP のディレクトリにつなぐ Realm
101356HTTP/2 を使い、非同期のサーブレットの処理で、エラーが起きたあとTomcat は、HTTP/1.1 のコネクタの中に <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> があるか。Spring Boot は server.http2.enabled(既定は false)
103119(11.0 だけ)題が「AJP」AJP のコネクタ(protocol="AJP/1.3")を設定しているか

Spring Boot の人へ。 HTTP/2 は server.http2.enabled で見ます(既定は false=切ってあります)。JNDIRealm や AJP を Spring Boot でどう設定するか、Spring の非同期の処理が 101356 の条件に当たるかは、確かめていません。設定が見つからなくても、版が前なら上げます。

101296 の条件は、告知に書かれた範囲までです。SASL の仕組みを、どの設定の項目で選ぶかは、告知に書かれていないので、この記事では見分け方を書きません。SASL・GSSAPI の言葉が分からなくても、JNDIRealm を使っているかを見れば足ります。使っているなら、直った版に早く上げます。

AJP は、Tomcat が「HTTP のコネクタより、Tomcat の内部のデータの扱いに、より直接手を出せる通り道なので、使うときは追加の注意が要る」と書いている通り道です。103119 の条件として告知が書いているのは、題の「AJP」までで、AJP を切っていれば当たらない、とは書かれていません。

Tomcat の既定の server.xml(設定ファイル)では、AJP のコネクタと HTTP/2 の設定はコメントの中(切ってある)で、JNDIRealm も入っていません(入っているのは LockOutRealm と UserDatabaseRealm です)。Tomcat 11.0.27 のソースと、公式イメージ 11.0.27・10.1.61・9.0.123 の conf/server.xml で、コメントを外した残りには、3つとも見つかりませんでした。ただし、自分で書き換えた server.xml や、OS のパッケージの server.xml は、人ごとに違います。自分のファイルで確かめてください。

出典: Tomcat: Realm の説明・Tomcat: HTTP/2 の説明・Tomcat: AJP の説明・Tomcat 11.0.27 の既定の server.xml・Spring Boot: HTTP/2 の設定・Spring Boot: 設定の項目の一覧

9.0・8.5 を使っているとき

9.0 を使っているなら、9.0.123 に上げます。 10.1 や 11.0 へ移るのは、「版を上げる」とは別の大きな仕事です。10.1 から上は、Java EE から Jakarta EE への移行で、コードの中の javax.* が jakarta.* に変わります。Tomcat は、9 以前のアプリを 10 以降へ移すには、ほぼ確実に、コードの書き換えが要る、と書いています。9.0 の支えの終わりは、早くても2027年3月31日の予定です(その後は 9.1.x の枝で続く、と書かれています)。

8.5 は、支えが終わっています。 Tomcat は、8.5 の人に 9 以上へ上げるよう書いています。101296 と 74049 は、8.5 にも当たると CVE の記録が書いているので、8.5 のままだと、直す版がありません。

Spring Boot は当たる? 中の Tomcat の版で決まる

4.1.2・4.0.9 で、中の Tomcat が 11.0.27 になった

Spring Boot の 4.1.2 と 4.0.9 は、GitHub で日本時間の2026年10月23日 2時4分に公開されました(UTC では10月22日 17時4分)。どちらも、依存の更新に「Upgrade to Tomcat 11.0.27」があります。spring.io のブログの日付は、October 23, 2026 です。

見ておくことが3つあります。

  • Spring のリリースノートに、CVE の番号は無く、「脆弱性を直した」という文もありません。 Tomcat の件で書かれているのは、依存の更新の1行(Tomcat を 11.0.27 に上げた)です
  • spring.io の告知のブログも、Tomcat や CVE には触れていません。Spring のセキュリティの告知の一覧は、最初の画面の25件がすべて8月20日の日付で、9月・10月のものは見つかりませんでした(画面の続きは見ていません)。Tomcat の件で、Spring が自分の告知を出した形跡は、確かめた範囲ではありません
  • 依存の版を決める BOM(Spring Boot が決めた、依存の版の一覧)の tomcat.version は、4.1.2・4.0.9 が 11.0.27、ひとつ前の 4.1.1・4.0.8 が 11.0.24 です

つまり、結果として、4.1.2・4.0.9 の中の Tomcat 11.0.27 は、3件の Important の当たる版の範囲(11.0.26 まで)の外です。これは、Tomcat の告知と BOM の版を突き合わせた結果で、Spring が書いたことではありません。4.x の Tomcat は 11.0 で、4.1.2・4.0.9 は Java 17 以上を求めます。

出典: GitHub のリリース(4.1.2・4.0.9)・spring.io のブログ(4.1.2・4.0.9)・Spring: セキュリティの告知・Spring Boot 4.1 の動作環境・Spring Boot 4.0 の動作環境

Spring Boot の版と、中の Tomcat

Spring Boot の版ごとの中の Tomcat は、BOM に書かれています。系統ごとにまとめると、次のとおりです。

Spring Boot の系統中の Tomcat直った版
3.5.0〜3.5.1610.1.41〜10.1.55(3.5.15・3.5.16 は 10.1.55)無償の版は出ていない(3.5.16 が最後)
4.0.0〜4.0.811.0.14〜11.0.24(4.0.7 は 11.0.22、4.0.8 は 11.0.24)4.0.9(11.0.27)
4.1.0・4.1.111.0.22・11.0.244.1.2(11.0.27)

下の「当たり方」は、この表と、Important の3件の当たる版の範囲を突き合わせた結果です。Spring が書いた文ではありません。

  • 101296 は、4.1.2・4.0.9 より前の、3.5 と 4.x のすべてに当たります
  • 101356 は、3.5.15・3.5.16(Tomcat 10.1.55)と、4.0.7・4.0.8・4.1.0・4.1.1(Tomcat 11.0.22 と 11.0.24)だけに当たります
  • 103119 は、4.0.9・4.1.2 より前の 4.x のすべてに当たります。3.5 は Tomcat 10.1 なので、103119 は当たりません

どれも、版だけで見た結果です。埋め込みの Tomcat で、JNDIRealm や AJP を使うかは、アプリの設定しだいで、この記事では確かめていません。

3.5.13(Tomcat 10.1.53)と 4.0.5(Tomcat 11.0.20)は、KEV(アメリカの政府機関が出す、悪用が確認された脆弱性の一覧)に載った4月の件(CVE-2026-34486、Tomcat の評価は Important)の、当たる版でもあります。4.0.9・4.1.2 や、Tomcat 10.1.61 に上げれば、その件の直しも入っています。

もう1つ。3.5.16・4.0.8・4.1.1 の中の Tomcat(10.1.55・11.0.24)には、9月15日に出た版(11.0.26・10.1.60・9.0.122)で直り、9月23日に公表された件(Important 4件を含む)の直しも、入っていません。10月の版に上げれば、9月の分も入ります。

出典: Maven Central: spring-boot-dependencies(BOM)の各版・Spring Boot: 依存の版の property の一覧・Spring Boot 3.5.16 のリリース・Tomcat のセキュリティのページ(11.0・10.1・9.0)

war を外の Tomcat に置いているとき

Spring Boot の war を、外の Tomcat に置いて動かしている人は、埋め込みの Tomcat を「provided」(Maven の文書では、動かすときに JDK やコンテナが用意することを期待する、という印)にする決まりです。動くのは、外の Tomcat です。Spring Boot を上げても、外の Tomcat の版は変わりません。 依存の木に出る埋め込みの Tomcat の版は、動いている Tomcat の版ではありません。この場合は、外の Tomcat の版を bin/version.sh で見て(→「Tomcat を単体で入れているとき:version.sh で見る」)、直った版に上げます(→「自分の Tomcat は当たる? 版で決める」)。

出典: Spring Boot: war を従来のサーバーに置く・Maven: 依存の仕組みの説明(scope)

自分の版は、どう確かめる?

入れ方で、見方が変わります。

  • Spring Boot のアプリ: 起動のログがいちばん手軽です
  • Maven・Gradle でビルドしている: 依存の木でも見られます(外の Tomcat に war を置くときは、木の版は動いている Tomcat の版ではありません)
  • Tomcat を単体で入れている(war を置く外の Tomcat を含む): version.sh で見ます
  • OS のパッケージ・Docker の公式イメージ: 下の2つの節を見ます

下の出力は、どれも手元で流したものです。macOS 14.4.1 の Docker 28.3.2 の中で、最小のアプリ(GET / が ok を返すだけ)を使いました。

起動のログで見る

Spring Boot のアプリを起動すると、ログに、埋め込みの Tomcat の版が出ます。Starting Servlet engine の文字がある行を探します。

# Spring Boot 3.5.16(既定)
Starting Servlet engine: [Apache Tomcat/10.1.55]

# Spring Boot 3.5.16 に、tomcat.version を 10.1.61 にして
Starting Servlet engine: [Apache Tomcat/10.1.61]

# Spring Boot 4.1.2 と 4.0.9
Starting Servlet engine: [Apache Tomcat/11.0.27]

行の頭の日時やログの出どころは省きました。Apache Tomcat/ の後ろの番号が、中の Tomcat の版です。3.5.16 の 10.1.55 は、直った版(10.1.61)より前です。4.1.2・4.0.9 の 11.0.27 は、直った版です。

ログが流れてしまって見られないときは、次のビルドの道具で見ます。

確かめていないこと: この行は Tomcat の部品が出している行で、書き方を説明した Spring の文書は、探していません。

Maven:dependency:tree で見る

dependency:tree は、依存の木を出します。-Dincludes で、Tomcat の部品に絞れます。

mvn -B dependency:tree -Dincludes=org.apache.tomcat.embed

プロジェクトに ./mvnw(Maven を取ってきて動かす仕組み)があるなら、mvn を ./mvnw に替えても同じです。

⚠ -q(静かに動かす指定)を付けると、画面に何も出ません(終了コードは 0 のままです)。上のように -q を外します。画面では、各行の頭に [INFO] が付き、前後に Maven のほかの行も出ます。下は、木の部分だけを書きました。

# Spring Boot 3.5.16(既定)
\- org.springframework.boot:spring-boot-starter-web:jar:3.5.16:compile
   \- org.springframework.boot:spring-boot-starter-tomcat:jar:3.5.16:compile
      +- org.apache.tomcat.embed:tomcat-embed-core:jar:10.1.55:compile
      +- org.apache.tomcat.embed:tomcat-embed-el:jar:10.1.55:compile
      \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:10.1.55:compile

# Spring Boot 4.0.8(4.x は、木の段が1つ増える)
   \- org.springframework.boot:spring-boot-starter-tomcat:jar:4.0.8:compile
      \- org.springframework.boot:spring-boot-starter-tomcat-runtime:jar:4.0.8:compile
         +- org.apache.tomcat.embed:tomcat-embed-core:jar:11.0.24:compile

# Spring Boot 4.0.9
         +- org.apache.tomcat.embed:tomcat-embed-core:jar:11.0.27:compile

# Spring Boot 4.1.2
         +- org.apache.tomcat.embed:tomcat-embed-core:jar:11.0.27:compile

tomcat-embed-core の行の版が、中の Tomcat の版です。3.5.16 は 10.1.55 なので、10月の直った版(10.1.61)より前です。4.0.8 の 11.0.24 も、直った版(11.0.27)より前です。

./mvnw は、start.spring.io のひな形(4.1.2 と 4.0.9、依存は Web だけ)でも流しました。./mvnw -B dependency:tree -Dincludes=org.apache.tomcat.embed で、4.1.2 も 4.0.9 も tomcat-embed-core:jar:11.0.27 と出ました。

出典: Maven: dependency:tree の説明

Gradle:dependencyInsight で見る

dependencyInsight は、1つの依存が、どの版に決まったかと、その理由を出します。

gradle -q dependencyInsight --dependency tomcat-embed-core --configuration runtimeClasspath

プロジェクトに ./gradlew があるなら、gradle を ./gradlew に替えても同じです。Gradle では、-q を付けたままで、下の1行が出ました。

# Spring Boot 3.5.16(既定)
org.apache.tomcat.embed:tomcat-embed-core:10.1.55 (selected by rule)

出力の1行目の版が、中の Tomcat の版です。行の終わりには (selected by rule) と付きます。

手元で流した Gradle について、書いておきます。

  • 手元のひな形は、org.springframework.boot と io.spring.dependency-management のプラグインを使う形です
  • start.spring.io のひな形(4.1.2)の ./gradlew -q dependencyInsight … でも、tomcat-embed-core:11.0.27 (selected by rule) と出ました
  • ./gradlew -q dependencies --configuration runtimeClasspath で、木の全体も見られます
  • ひな形を Java 17 で作ったところ、JDK が21だけのコンテナでは、Gradle が「compileJava の javaCompiler を計算できない」と言って止まりました。手元の JDK と、ひな形の Java の版を合わせる必要があります
  • Kotlin DSL(build.gradle.kts)では、試していません

出典: Gradle: 依存の確かめ方

Tomcat を単体で入れているとき:version.sh で見る

Tomcat を単体で入れているなら、Tomcat のフォルダーの bin/version.sh(Linux・Mac)か、bin\version.bat(Windows)が、版を出します。中身は catalina.sh version を呼ぶだけです。

$ bin/version.sh
Server version: Apache Tomcat/11.0.27
Server number:  11.0.27.0
(間の行と、このあとの行は省きました)

Tomcat の公式イメージ 11.0.27 で流した出力から、版の2行を抜き出しました(間の Server built の行などは省きました)。10.1.61 と 9.0.123 のイメージも、版の行の形は同じでした。Server version の行の、Apache Tomcat/ の後ろの番号を、直った版と比べます。catalina.sh の使い方の表示にも、version(What version of tomcat are you running?)があります。

確かめていないこと: Windows の version.bat は流していないので、出力は載せません。Tomcat の文書(RUNNING.txt)には、version.sh の説明は見つかりませんでした。

出典: Tomcat 11.0.27 の version.sh・version.bat・catalina.sh

OS のパッケージの Tomcat:OS の告知を見る

OS のパッケージは、OS が直しを出すまで直りません。直ったかは、本家の番号ではなく、OS の告知のパッケージの版で見ます。2026年10月23日17時12分ごろ(日本時間)に、Debian の追跡のページ(101296 と 101356)を開くと、次のとおりでした。

パッケージ版状況
tomcat10bookworm・trixie は 10.1.55、sid は 10.1.60直しは未(vulnerable)
tomcat11trixie は 11.0.22、sid は 11.0.24直しは未(vulnerable)
tomcat9──9.0.70-2 からサーバーを含まないので、Debian はそれを直った版として扱っている(10月の直しが入った、という意味ではない)

Ubuntu は、17時13分ごろに、CVE-2026-101296 のページを開きました(10月23日の公開、優先度 Medium)。tomcat9・tomcat10・tomcat11 は、入っている版のすべてで「Needs evaluation」(評価待ち)でした。101356 など、ほかの件の Ubuntu のページは、開いていません。直しがいつ出るかは、どちらにも書かれていません。RHEL など、ほかの OS は、確かめていません。

出典: Debian: CVE-2026-101296・Debian: CVE-2026-101356・Ubuntu: CVE-2026-101296

Docker の公式イメージ:中の Java は別に見る

Tomcat の公式イメージを使っているなら、イメージのタグの Tomcat の版を見ます。10月17日に作られた tomcat:11.0.27-jdk21・tomcat:10.1.61-jdk21・tomcat:9.0.123-jdk21 は、version.sh で、それぞれ 11.0.27・10.1.61・9.0.123 と出ました(17時8分ごろに流しました)。

Tomcat の版が新しいイメージでも、中の Java が新しいとは限りません。 Java の版は、Tomcat とは別に見ます。version.sh の出力の JVM Version の行で、中の Java の版を見られます。手元で見たこの3つのイメージでは、Tomcat は10月の版でしたが、中の Java は、10月の Java の版ではありませんでした(番号は書きません。見た環境は arm64 です)。Java の件で当たるかは、Java の脆弱性(2026年10月)で見てください。

Spring Boot 3.5 の人は? 無償の直った版は出ていない

3.5 の無償の支えは、2026年6月に終わった

Spring Boot 3.5 の人に、Tomcat の10月の直しが入った版は、無償では出ていません。 2026年10月23日の時点で、確かめたことは次のとおりです。

  • GitHub のリリースの、3.5 の最後は 3.5.16(2026年6月25日)です。Maven Central にも、3.5.16 より後の版はありません
  • 3.5.17 のマイルストーン(次の版の予定の印)は無く、3.5.x の枝の最後のコミットも2026年6月25日です
  • spring.io の Spring Boot のページの「Support」の表では、3.5.x の「End of OSS Support」(無償の支えの終わり)は、2026年6月です

ただし、「3.5.17 は、この先も出ない」とは書けません。出さないと書いた文は、見ていないからです。出たときは、この記事を更新します。

Spring は、契約した人だけが取れる形で、無償の支えが終わった版を出す、商用の支えも用意しています(Spring の商用の支えのページ)。この記事は、その中身や、Tomcat の版が入ったかどうかは、確かめていません。

3.5 より前の 3.x も、無償の支えは終わっています。Spring のデータでは、3.4 が2025年12月、3.3 が2025年6月です。3.4 以前の中の Tomcat や、上書きの手は、確かめていません。

手は2つあります。手2は、移るまでのつなぎで、直るのは Tomcat だけです。

出典: Spring Boot のページの Support の表・GitHub: Spring Boot のリリース・GitHub: 3.5.16・Spring の支えの決まり

手1:4.0 か 4.1 へ移る

移り先の無償の支えの終わりを、並べます。4.0 は2026年12月、4.1 は2027年7月です。どちらを選ぶかは、この記事では決めません(4.0.9 と 4.1.2 は、どちらも Tomcat 11.0.27 です)。

移るときの公式の案内は、Spring Boot の文書の「アップグレード」のページと、そこからリンクされた wiki の移行の手引き(Spring Boot 4.0 Migration Guide)です。3.x から移るときは、この手引きを見ます。移る先より2つ以上前の版から上げるとき(たとえば 3.5 から 4.1)は、間の版(4.0)のリリースノートも読む、と文書は書いています。手引きの最初の一歩は、「まず、3.5 の最新に上げる」です(3.5 の最新は 3.5.16 で、中の Tomcat は 10.1.55 のままです。移るための一歩で、Tomcat の直しにはなりません)。手引きが書いている、移行で気をつけることが、2つあります。

  • 4 は Servlet 6.1 を土台にしていて、Undertow は、まだ使えません
  • war を外の Tomcat に置いている人は、依存の spring-boot-starter-tomcat を spring-boot-starter-tomcat-runtime に切り替えます

出典: Spring Boot: アップグレード・Spring Boot 4.0 Migration Guide・Spring の支えの決まり

手2:移るまでのつなぎに、tomcat.version を 10.1.61 に上書きする

先に、限りを書きます。この上書きで直るのは、Tomcat の件だけです。 3.5 の無償の版は、6月25日から出ていないので、Spring Boot 本体や、ほかの部品の直しは、入りません。

そのうえで、3.5 の人がすぐ移れないときの、つなぎの手です。

  • 公式に、依存の版を上書きする方法があります。Tomcat の版の property の名前は tomcat.version です(3.5 と 4.1 の一覧に載っています)。Spring Boot は、「各リリースは、決まった組み合わせの部品で試している。版を上書きすると、互換の問題が起きうるので、慎重に行う」と書いています(原文は「Overriding versions may cause compatibility issues and should be done with care.」)
  • 3.5 の文書は、Tomcat 10.1(10.1.25 以上)に対応する、と書いています。10.1.61 は、この範囲の中です。ただし、Spring が、3.5 と 10.1.61 の組み合わせを試したと書いた文は、見つかりませんでした
  • 手元で、最小のアプリ(3.5.16、GET / が ok を返すだけ)を、tomcat.version を 10.1.61 にして起動しました。起動して、1つの要求に答えた、までです。テストは流していません。HTTP/2・TLS・JSP・WebSocket・Spring Security などとの組み合わせは見ていません。互換の保証ではありません

Maven(親 POM の spring-boot-starter-parent を使っているとき)は、自分の pom.xml の property を上書きします。

<properties>
  <tomcat.version>10.1.61</tomcat.version>
</properties>

手元で dependency:tree を流すと、tomcat-embed-core・tomcat-embed-el・tomcat-embed-websocket の3つが、そろって 10.1.61 になりました。

+- org.apache.tomcat.embed:tomcat-embed-core:jar:10.1.61:compile
+- org.apache.tomcat.embed:tomcat-embed-el:jar:10.1.61:compile
\- org.apache.tomcat.embed:tomcat-embed-websocket:jar:10.1.61:compile

起動のログも、Starting Servlet engine: [Apache Tomcat/10.1.61] になりました。

親 POM を使わず、spring-boot-dependencies を import している形では、property で上書きできません。文書は、自分の dependencyManagement に、spring-boot-dependencies の項目より前に書く、と説明しています。この形は、手元で試していません。

Gradle(io.spring.dependency-management プラグインを使っているとき)は、property を設定して版を変えます。build.gradle の最後に、次の1行を足します。

ext['tomcat.version'] = '10.1.61'

手元で dependencyInsight を流すと、10.1.55 -> 10.1.61 と出て、10.1.61 に決まりました。Gradle の標準の BOM の取り込み(platform)では、この property は使えない、と文書は書いています。代わりに Gradle の仕組み(resolution strategy など)を使う、とあります。この形は手元で試していません。Kotlin DSL でも、試していません。

出典: Spring Boot: Maven プラグインの説明・Spring Boot: Gradle プラグインの依存の管理・Spring Boot 3.5: 依存の版の property の一覧・Spring Boot 3.5 の動作環境

悪用はされている?(2026年10月23日時点)

2026年10月23日17時9分ごろ(日本時間)に見た範囲では、悪用が確かめられた、という文は、見つかりませんでした。

出どころ確かめたこと
Tomcat の告知・JVN10月の件の説明に、悪用(exploit)の話はありません。JVN の文書にも、悪用の言い方はありません
CISA の KEV版 2026.10.21(日本時間の10月21日 23時4分に出た版、1754件)に、10月の8件も、9月の件(11.0.26・10.1.60・9.0.122 の節の全件)も載っていません。17時51分ごろに見直しても、10月の3件は載っていませんでした
CISA が CVE の記録に付けた「悪用の状況」(SSVC の Exploitation の欄)Important の3件とも none(なし)。101296 は10月20日付け、101356 は日本時間の10月21日 3時17分、103119 は10月21日 0時41分の評価です
JVN(JPCERT/CC と IPA の脆弱性情報)JVNVU#93110597 を10月21日に公開。中身は「Apache Tomcat のアドバイザリを参照」で、悪用の言い方はありません
JPCERT/CC注意喚起の一覧(最終更新は10月23日)に、Tomcat はありません。Weekly Report の最新(2026年10月21日号)にもありません。10月20日の公表を含む週の号は、まだ出ていません
IPA「重要なセキュリティ情報」の2026年の一覧に、Tomcat はありません(最新は10月22日の PHP)

PoC(弱点が本当にあることを示すための試しのコード)の話は、開いたどの文書にもありませんでした。PoC そのものを探したわけではありません。

悪用が確かめられていないことは、悪用されていない、という意味ではありません。脆弱性の知らせの読み方にあるとおり、KEV に無いことは、悪用されていない証明ではありません。PoC は悪用に数えませんが、PoC が出ていないことも、安全の証明にはなりません。上に書いたのは、この時刻までに見つかった範囲です。

悪用が確かめられていても、いなくても、やることは同じです。直った版に上げます(→「自分の Tomcat は当たる? 版で決める」)。

出典: CISA: KEV の JSON・CISA: KEV の一覧のページ・CVE の記録(101296・101356・103119)・JVN: JVNVU#93110597・JPCERT/CC: 注意喚起の一覧(2026年)・JPCERT/CC: Weekly Report 2026-10-21・IPA: 重要なセキュリティ情報(2026年)

よくある質問

Spring Boot のリリースノートに、CVE の番号がありません。直っていますか?

Spring のリリースノートは、4.1.2・4.0.9 に「Upgrade to Tomcat 11.0.27」と書くだけで、脆弱性の直しとは書いていません。spring.io のブログにも、Spring 自身の告知にも、Tomcat の件はありません。ただ、Tomcat の告知が書く Important の3件の当たる版は、どれも 11.0.26 までです。4.1.2・4.0.9 の中の Tomcat は 11.0.27 なので、結果として、その範囲の外です(→「4.1.2・4.0.9 で、中の Tomcat が 11.0.27 になった」)。

AJP も HTTP/2 も使っていません。上げなくてもいいですか?

当たるかどうかは、版で決まります。Tomcat の告知が書く手当ては、上げることだけです。AJP や HTTP/2 の使い方は、どれくらい急ぐかの目安にはなりますが、「使っていなければ上げなくてよい」という文は、告知にありません。101296 は、AJP でも HTTP/2 でもなく、JNDIRealm の件です。Low の5件も、同じ版で直ります(→「急ぐ度合いは、使い方で見る」)。

Spring Boot 3.5 のまま tomcat.version を上げれば、それで足りますか?

足りるとは言えません。上書きで変わるのは、Tomcat だけです。3.5 の無償の版は6月25日から出ていないので、Spring Boot 本体やほかの部品の直しは入りません。Spring は、版の上書きを慎重にと書いていて、3.5 と 10.1.61 の組み合わせを試したと書いた文も、見つかりませんでした。手元では、最小のアプリが起動しました(互換の保証ではありません)。つなぎの手として使い、4.0 か 4.1 へ移ることを考えます(→「手2:移るまでのつなぎに、tomcat.version を 10.1.61 に上書きする」)。

CISA の点は CRITICAL です。Tomcat の Important と、どちらを見ればいいですか?

どちらか一方を選ぶものではありません。出どころと物差しが違う、別の評価です。Important は、Tomcat のセキュリティチームが付けた言葉の評価です。CRITICAL は、CISA が CVE の記録に足した CVSS の点で、101296 は CVSS 4.0 で 9.1、101356 と 103119 は CVSS 3.1 で 9.1 です。版が違うので、並べて比べません。どちらの数字を見る場合も、自分に効くかは、自分の版が当たるかで決めます(→「点数は、誰が付けたもの?」)。

Ubuntu や Debian の Tomcat は、いつ直りますか?

2026年10月23日17時ごろの時点で、Debian の tomcat10・tomcat11 は直しが未で、Ubuntu の tomcat9・tomcat10・tomcat11 は評価待ちです。いつ直るかは、どちらにも書かれていません。各 OS の告知のページを、見直してください(→「OS のパッケージの Tomcat:OS の告知を見る」)。

自分の Tomcat・Spring Boot で確かめること(チェックリスト)
  • Spring Boot なら、起動のログの Starting Servlet engine の行で、中の Tomcat の版を見る(→「起動のログで見る」)
  • Maven か Gradle を使っているなら、依存の木で見る(→「Maven:dependency:tree で見る」「Gradle:dependencyInsight で見る」)
  • Tomcat を単体で入れているなら、bin/version.sh で見る(→「Tomcat を単体で入れているとき:version.sh で見る」)
  • 直った版(11.0.27・10.1.61・9.0.123)より前なら上げる。Spring Boot は、4.1 の人は 4.1.2 以上、4.0 の人は 4.0.9 以上にする。4.1.0・4.1.1 も当たる(→「当たる版と、直った版」「4.1.2・4.0.9 で、中の Tomcat が 11.0.27 になった」)
  • JNDIRealm・HTTP/2・AJP の設定の有無で、急ぐ度合いを見る。ただし、使っていなくても上げる(→「急ぐ度合いは、使い方で見る」)
  • Spring Boot 3.5 は、無償の直った版が無い。4.0 か 4.1 へ移る、または、つなぎに tomcat.version を上書きする(直るのは Tomcat だけ)(→「Spring Boot 3.5 の人は? 無償の直った版は出ていない」)
  • OS のパッケージや Docker の公式イメージで入れたなら、OS の告知と、イメージの中の Java の版を見る(→「OS のパッケージの Tomcat:OS の告知を見る」「Docker の公式イメージ:中の Java は別に見る」)

まとめ

  • 2026年10月20日に公表された Tomcat の直しは、Important 3件・Low 5件(CVE の番号で8件)。直った版は 11.0.27・10.1.61・9.0.123(10月12日に出た)。手当ては、上げることだけ
  • 当たるかは、版で決まる。JNDIRealm・HTTP/2・AJP の使い方は、どれくらい急ぐかの目安。使っていなくても上げる
  • 点数は、出どころごとに別。Tomcat の評価は Important。CISA-ADP の点は、101296 が CVSS 4.0 の9.1、101356 と 103119 が CVSS 3.1 の9.1。NVD は分析待ち
  • Spring Boot は、4.1.2・4.0.9(日本時間の10月23日)で、中の Tomcat が 11.0.27 になった。Spring は、脆弱性の直しとは書いていない
  • Spring Boot 3.5 は、無償の直った版が無い(3.5.16 が最後)。4.0 か 4.1 へ移るか、つなぎに tomcat.version を 10.1.61 に上書きする(直るのは Tomcat だけ)。上書きは、互換の保証が無い
  • 悪用は、確かめた範囲では確認の文が見つからなかった。ただし、KEV に無いことは、悪用されていない証明ではない
  • この記事で確かめていないこと:101296 の SASL の仕組みを、どの設定の項目で選ぶか、AJP を有効にしたときだけ 103119 に当たるか、Spring の非同期の処理が 101356 の条件に当たるか、Spring Boot で JNDIRealm や AJP を使う設定、Spring Boot 3.5 と Tomcat 10.1.61 の互換、3.4 以前の 3.x、Spring Boot 2.x、親 POM を使わない形(import)での上書き、Kotlin DSL と Gradle の platform、商用の支えの 3.5 の版、RHEL など Debian・Ubuntu 以外の OS、PoC の有無、Windows の version.bat の出力

Java 本体の10月の修正は、Java の脆弱性(2026年10月)に書きました。

参考資料

この記事の内容は、冒頭に書いた日時に開いた文書をもとにしています。Tomcat・Spring Boot の新しい版、OS の直し、悪用の状況は、日ごとに変わります。

※この記事は、2026年10月23日時点の公式の資料と照らして確かめています。誤りに気づいたらお問い合わせからお知らせください。

PR
PR
タイトルとURLをコピーしました