Java・Kotlinの脆弱性対応では、JDKの本体、TomcatなどのサーバーとSpringなどのフレームワーク、間接的に入るライブラリを分けて確かめます。10月はJDKの更新が1週間に3回あり、更新したつもりの環境が対象のまま残っていることがあります。
- JDKは10月24日の追加の更新(CVE-2026-114820)が要ります。10月21日の緊急の更新を入れた環境も対象です。
- KEVに載ったTomcat・ActiveMQ・Strutsは、設定や機能を使っているかで該当が分かれます。
- Spring BootのBOMやfat jarの中に古い版が残ることがあるので、配った物と本番のJDKで確かめます。
01Javaで今確かめたい脆弱性
Javaの本体(JDK)と、Javaのアプリでよく使われるサーバー・ライブラリのうち、米CISAの悪用確認の一覧(KEV)に載ったもの、深刻度が緊急のものです。KEVの追加日は米国の日付で、他の日付は日本時間です。[1]
| 脆弱性・問題 | 主な対象・条件 | 修正・対応 | 詳細 |
|---|---|---|---|
| Java本体の証明書の問題 CVE-2026-114820・CVE-2026-91403、OracleのCVSS 3.1は9.1 | eMudhraの中間CA証明書8枚の秘密鍵が漏れた件。Oracle JDKとOpenJDK系の8〜27の全系列。10月21日の緊急更新の版(例:21.0.13.0.2)も、10月24日の告知の対象です。 | 配布元の10月24日以降の更新版(リリースノートにCVE-2026-114820)。無い間は、OpenJDKの案内にあるルート証明書4つの削除。 | OpenJDKの告知[2][3][4] |
| Apache Tomcat CVE-2026-34486(KEV 2026-08-04)・CVE-2025-24813(KEV) | 34486は11.0.20・10.1.53・9.0.116の、クラスタのEncryptInterceptorを使う構成。24813はDefault Servletの書き込みを有効にした構成(初期値は無効)。 | 11.0.27・10.1.61・9.0.123。10月20日公表の8件もこの版で直ります。 | 10月の8件の記事[5][6] |
| Apache ActiveMQ Classic CVE-2026-34197(KEV 2026-04-16) | Webコンソールの/api/jolokia/に、ログインした利用者がリモートのSpring XMLを読ませてコードを実行できる。5.19.4未満、6.0.0〜6.2.2。 | 5.19.4・6.2.3で修正。その後もJolokiaの迂回などが公表され、9月9日のCVE-2026-74761まで直すなら5.19.11・6.3.2以上。 | ASFの告知[7][8] |
| Apache Struts CVE-2016-3081(S2-032、KEV 2026-10-08) | 2.3.20〜2.3.28(2.3.20.3・2.3.24.3を除く)で、動的メソッド呼び出し(DMI)を有効にしている場合。 | 2.3系は2019年にサポートが終わっています。現行の7.4.0へ移ります。ASFは回避策としてDMIの無効化を挙げています。 | S2-032[9][10] |
| Spring Security CVE-2026-59270、VMwareのCVSS 3.1は9.4 | 埋め込みのUnboundID LDAPサーバー(UnboundIdContainer、Spring Bootのspring.ldap.embedded.*)を使い、そのポートに外から届く場合。 | 無償版は7.1.1・7.0.7。6.5系以前の修正版は有償サポート向けだけです。 | Springの告知[11] |
| snappy-java CVE-2026-93451 | 1.1.10.8以下で、型付き配列のメソッドで外部のデータを展開する場合。Kafka・Sparkの依存として入っていることがあります。 | 1.1.10.10以上を直接指定します。 | 記事 |
Java本体の件は、10月20日の定例の更新、21日の緊急の更新、24日の追加の更新と3回続きました。OpenJDKは「この数日で更新した場合も」もう一度対応するよう案内しています。2件ともKEVには載っておらず、CVEの記録のCISAの評価でも悪用は「none」です。[4][12]
02Javaの系列ごとのサポート期限と更新先
Javaは配布元(Oracle、Eclipse Temurin、Amazon Corretto、Microsoftなど)ごとに更新の期限が違います。使っている配布元の期限で判断します。
| 系列 | 主な配布元の更新期限 | 今の扱い |
|---|---|---|
| Java 8(LTS) | Temurin 少なくとも2030年12月、Corretto 2030年12月 | Tomcat 10.1以降は使えない(11以上が必要) |
| Java 11(LTS) | Temurin 少なくとも2027年10月、Microsoft 2027年9月(最短)、Corretto 2032年1月 | 配布元によっては1年以内に終了 |
| Java 17(LTS) | Temurin 少なくとも2027年10月、Microsoft 2027年9月(最短)、Corretto 2029年10月 | Tomcat 11の最低の版 |
| Java 21(LTS) | Oracle Premier 2028年9月、Microsoft 2028年9月(最短)、Temurin 少なくとも2029年12月、Corretto 2030年10月 | 使い続けられる |
| Java 25(LTS) | Oracle Premier 2030年9月、Microsoft 2030年9月(最短)、Temurin 少なくとも2031年9月、Corretto 2032年10月 | 移行の先 |
| Java 26・27 | 26はTemurinで2026年9月に終了。27はTemurin 2027年3月、Corretto 2027年4月 | 半年ごとの版。長く使うならLTSへ |
Oracle JDK 21を無償のライセンス(NFTC)で使ってきた場合、Oracleは10月以降の更新を別のライセンス(OTN)で出すとし、無償で続けるなら25以降へ上げるよう案内しています。[13][14][15][16]
実行環境として、Tomcat 9.0系は2027年3月31日でサポートが終わります。Spring Bootの無償サポートは3.5系が2026年6月30日で終わり、4.0系は2026年12月31日、4.1系は2027年7月31日までです。Kotlin/JVMのアプリも同じJDKの上で動くので、表の期限がそのまま当てはまります。[17][18]
03Javaの依存関係の脆弱性を確かめる方法
まず、何がどの経路で入っているかを表示します。Mavenにはlockファイルが無いので、ビルドの道具に解決させて確かめます。
mvn dependency:tree -Dincludes=org.apache.tomcat.embed
./gradlew dependencyInsight --dependency tomcat-embed-core --configuration runtimeClasspath既知の脆弱性との照合は、OWASP Dependency-Checkか、GoogleのOSV-Scannerを使います。Dependency-CheckはNVDのデータを取り込むため、NVDのAPIキーを使うよう案内されています。OSV-Scannerはpom.xmlから間接的な依存まで解決し、gradle.lockfileも読みます。[19][20]
mvn org.owasp:dependency-check-maven:check
./gradlew dependencyCheckAnalyze # org.owasp.dependencycheck プラグイン
osv-scanner scan source -r .JDKの証明書の件は、OpenJDKが配ったCheckCerts.javaで、その実行環境が対象かを確かめられます(JDK 8はjavacで先にコンパイルします)。[4]
java -XshowSettings:properties -version 2>&1 | grep -E 'java\.(vendor|runtime\.version)'
curl -O https://cr.openjdk.org/~mr/CheckCerts.java
java CheckCerts.java04確認の進め方とJava特有の罠
- 実際に動いている成果物を見る:Spring Bootの実行可能なjarは、依存のjarを
BOOT-INF/lib/に含みます。jar tf app.jar | grep BOOT-INF/lib/で、ビルドの設定ではなく配った物の中の版を確かめます。shadeで1つにまとめたjarは、ファイル名から版が読めないので、照合の道具に掛けます。 - BOMが決める版を疑う:Spring BootのBOMは依存の版を固定します。最後の無償版の3.5.16はSpring Security 6.5.11とTomcat 10.1.55を指定していて、どちらも上の表の対象です。上のライブラリを上げても直らない場合は、
tomcat.versionなどのプロパティで直接指定します。[21] - 本番のJDKを見る:コンテナでは、イメージの中のJDKが使われます。動いているプロセスは
jcmd <PID> VM.versionで版を表示できます。証明書の件では、DebianやUbuntuのOSのJDKは、ca-certificatesを上げてもJavaの証明書の保管ファイルが直らないため、OpenJDKは保管ファイルの作り直しを案内しています。[4] - 配布元の番号で判断する:同じ修正でも、Oracleの対象の版が21.0.13.0.2、Correttoの修正版が21.0.13.0.11のように、番号の付け方が違います。番号の大小ではなく、配布元のリリースノートに該当のCVEがあるかで判断します。[22]
- KotlinのJSの依存を分ける:Kotlin MultiplatformでJSを出力している場合、npmの依存は
kotlin-js-store/yarn.lockにあり、Mavenの道具では見えません。JavaScriptの道具で確かめます。[23]
05Java / JVMの解説記事
Apache Tomcatの脆弱性8件(10月20日公表)、応答の取り違えや認証回避のおそれ。使い方ごとの対象と修正版
Apache Tomcatで10月20日に公表された8件の脆弱性(CVE-2026-101356ほか)は、HTTP/2・JNDIRealm・AJPなどの使い方で該当が分かれます。自分の版と設定が対象かの確かめ方、系列ごとの修正版、Spring Bootでの扱い、9.0系のサポート終了(2027年3月31日)を説明します。
snappy-javaの脆弱性CVE-2026-93451、型付き配列への展開でヒープ破壊のおそれ。Kafka・Sparkの下で古い版が残る場合の確かめ方
Java向けの圧縮ライブラリsnappy-javaの脆弱性CVE-2026-93451(GHSA-gwq9-9ffj-mvrv)は、uncompressIntArrayなどで配列の末尾を越えて書き込みます。上げる先は1.1.10.10以上です。Kafka・Spark・Hadoopが古い版を指定している場合の確かめ方と、版の指定の仕方を説明します。
よくある質問
10月にJavaを更新しました。もう一度更新が要りますか?
10月21日の緊急の更新の版(Oracleの例:21.0.13.0.2)は、24日に公表されたCVE-2026-114820の対象です。配布元のリリースノートにこの番号がある版へ上げます。DebianやUbuntuのOSのJDKは、証明書の保管ファイルの作り直しも要ります。[2][4]
Spring Boot 3.5を使っています。BOMの版のままで大丈夫ですか?
3.5系の無償サポートは2026年6月30日で終わり、最後の3.5.16はSpring Security 6.5.11とTomcat 10.1.55を入れます。どちらも対象で、Spring Securityの6.5系の修正版は有償サポート向けだけです。4.1系(4.1.2はTomcat 11.0.27、Spring Security 7.1.2)への移行を検討します。[11][18][21]
Kotlinで書いたアプリも同じ確かめ方でよいですか?
Kotlin/JVMはJDKとMaven Centralのライブラリを使うので、同じコマンドで確かめられます。Kotlin MultiplatformでJSを出力しているなら、kotlin-js-store/yarn.lockのnpmの依存を別に確かめます。[23]
出典・参考資料
- 米CISA:Known Exploited Vulnerabilities Catalog2026.10.30版 / CVE-2026-34486・CVE-2025-24813・CVE-2026-34197・CVE-2016-3081の掲載と追加日、JDKの2件の掲載なし
- OpenJDK:Vulnerability Advisory 2026/10/242026-10-24(2026-10-27更新、日本時間) / CVE-2026-114820、対象(27.0.1.0.2・25.0.5.0.2・21.0.13.0.2・17.0.21.0.2・11.0.32.1・8u504以前)、CVSS 9.1
- OpenJDK:Vulnerability Advisory 2026/10/212026-10-21 / CVE-2026-91403、対象(27.0.1・25.0.5・21.0.13・17.0.21ほか)
- OpenJDK:Compromised Certificates and OpenJDK Java Runtimes2026-10-25更新(日本時間) / eMudhraの中間CA 8枚、CheckCerts.java、ルート証明書4つの削除、Debian・Ubuntuの作り直し、数日前に更新した場合も対応
- Apache Tomcat公式:Apache Tomcat 11.x vulnerabilities2026-11-01確認 / CVE-2026-34486の内容と対象(11.0.20)、修正版
- CVEの記録:CVE-2025-24813(採番機関Apache)2025-03-11(日本時間) / 成立の条件(Default Servletの書き込み、部分PUT)、修正版
- ASF:CVE-2026-34197の告知(Apache ActiveMQ)2026-04-07 / Jolokiaを通じたコード実行、対象、修正版5.19.4・6.2.3
- CVEの記録:CVE-2026-74761(Apache ActiveMQ)2026-09-09 / 対象が5.19.11未満・6.3.2未満(ActiveMQ Classicの告知の一覧で最新)
- Apache Struts:S2-0322026-11-01確認 / 対象、DMIの条件、修正版、回避策(DMIの無効化)
- Apache Struts:Struts 2.3.x のサポート終了の告知2018-11-14 / 2.3系の終了(告知から6か月)
- Spring:CVE-2026-592702026-08-20 / 条件、対象、修正版(無償版7.1.1・7.0.7、6.5系以前は有償サポート向け)
- CVEの記録:CVE-2026-114820(採番機関Oracle)2026-10-25(日本時間) / Oracle JDKの対象の版、CVSS 3.1 9.1、CISAの評価(悪用none)
- Eclipse Adoptium:Temurinのサポート期間2026-11-01確認 / Temurinの系列ごとの期限
- Amazon Corretto:FAQ2026-11-01確認 / Correttoの系列ごとの期限
- Microsoft Learn:Support roadmap for the Microsoft Build of OpenJDK2026-07-28 / Microsoftの最短の終了日
- Oracle:Oracle Java SE Support Roadmap2026-10-20更新 / Oracle JDK 21・25のPremier Support、JDK 21の更新のライセンスの変更
- Apache Tomcat公式:End of support for Apache Tomcat 9.0.x2026-02-11 / 9.0系のサポート終了日
- Spring:Spring Bootのサポート期間(api.spring.io)2026-11-01確認 / 3.5・4.0・4.1系の無償サポートの終了日
- OWASP Dependency-Check(GitHub)2026-11-01確認 / Maven・CLIの使い方、NVDのAPIキーの推奨
- OSV-Scanner:Supported languages and lockfiles2026-11-01確認 / pom.xmlの間接的な依存の解決、gradle.lockfile、scan sourceのコマンド
- Maven Central:spring-boot-dependencies 3.5.16・4.0.9・4.1.22026-11-01確認 / 各版のspring-security.version・tomcat.version
- Amazon Corretto 21:CHANGELOG2026-10-24 / 21.0.13.0.11でCVE-2026-114820に対応
- Kotlin公式:Set up a Kotlin/JS project2026-11-01確認 / kotlin-js-storeとyarn.lock
