Spring / Tomcat 公式セキュリティアドバイザリ 15 件をカバー(2026-08-20 に 7 件 · 2026-06-08 に 5 件 · 2025-09-15 に 1 件 · Tomcat 2026-08-25 に 2 件)。
うち 8 件は、NVD を参照するスキャナが CRITICAL 9.1〜9.8 と報告する一方、ベンダー公式の評価は LOW / MEDIUM。
残り 7 件は両者の評価が完全に一致 —— 違いはただ一つ:ベンダーが自ら CVE レコードに CVSS スコアを提出したかどうか。
このツールは 4 つの問いに答えます:
| CVE | コンポーネント | ベンダー公式 | NVD | NVD のスコアは誰が付けたか |
|---|
| CVE-2026-59313 | Spring Framework | LOW | 9.8 CRITICAL | CISA-ADP |
| CVE-2026-47890 | Spring Framework | LOW | 9.8 CRITICAL | CISA-ADP |
| CVE-2026-59283 | Spring Framework | MEDIUM | 9.1 CRITICAL | CISA-ADP |
| CVE-2026-47891 | Spring Framework | MEDIUM | 9.8 CRITICAL | CISA-ADP |
| CVE-2026-47884 | Spring Framework | MEDIUM | 9.8 CRITICAL | CISA-ADP |
| CVE-2026-47892 | Spring Framework | MEDIUM | 9.8 CRITICAL | CISA-ADP |
| CVE-2026-65637 | Apache Tomcat | Moderate | 9.8 CRITICAL | CISA-ADP |
| CVE-2026-65905 | Apache Tomcat | Low | 9.8 CRITICAL | CISA-ADP |
| CVE-2026-59270 | Spring Security | CRITICAL | 9.4 CRITICAL | ベンダー自己評価 ✅ 一致 |
両者が一致する唯一のケースこそ、ベンダーが自ら NVD に CVSS を提出したケースです。
原因は誰かが隠しているわけではありません:ベンダーがスコアを提出しない場合、CISA-ADP が最悪ケースで自動採点し、多くの SCA ツールは NVD の数値を採用します。
これはバグではなく、2 つの評価体系それぞれの基準の違いです —— しかし、あなたのインシデント対応フローは 9.8 を前提に動いています。
実測(陽性対照付き、ルール表生成のたびに再実行):
spring-web 6.2.19 = 200 ← 前のバージョンは Central にある
spring-web 6.2.20 = 404 ← 公式が指定するアップグレード先、存在しない
spring-security-core 6.5.11 = 200
spring-security-core 6.5.12 = 404
公式の Fix version 表では、これらのバージョンは Enterprise Support Only とマークされています —— 商用サポートを購入した顧客のみ対象です。
つまり、実際に該当する場合の選択肢は:メジャーバージョンアップグレード、または商用サポートの購入です。
java -jar spring-cvss-check.jar <jar|war|ディレクトリ>... [--src <ソースディレクトリ>]
# 最も一般的:ビルド成果物でバージョン特定、ソースでトリガー条件を判定
java -jar spring-cvss-check.jar target/ --src src/main
# fat jar / war 単体でも可
java -jar spring-cvss-check.jar app.war
JDK 17+ が必要です。実行時依存ゼロ、オフライン動作。
終了コード:0 バージョン非該当 · 2 バージョン該当だがトリガー条件が見つからない · 3 トリガー条件も成立。
== 検出されたバージョン ==
Spring Framework 6.2.19 .../spring-core-6.2.19.jar
Spring Security 6.5.11 .../spring-security-core-6.5.11.jar
Apache Tomcat 9.0.37 .../tomcat-embed-core-9.0.37.jar
== バージョン該当 8 件 ==
-- CVE-2026-47884 Spring Framework XsltView の不適切なパス制限
製品 Spring Framework 影響範囲 6.2.0 - 6.2.19
[差異] 公式 **MEDIUM** <-> NVD **CRITICAL 9.8**
NVD 上のスコアはベンダーが付けたものではなく、CISA-ADP によるもの。
トリガー条件 XsltView を使用し、ビュー描画を通る "/**" マッピングが存在し、ビュー名が明示的に指定されていない場合のみ
[該当] あなたのコード/設定で以下を検出:
src/main/java/demo/ReportView.java <- XsltView(2 行目)
[アップグレード不可] 公式は 6.2.20 へのアップグレードを指定 —— **Maven Central にこのバージョンは存在しない(404)**、公式は Enterprise Support Only とマーク
== サマリー ==
あなたのスキャナはこの 8 件のうち 7 件を CRITICAL と報告する可能性があります;
一方**ベンダー公式**の評価は:3 件 LOW / 4 件 MEDIUM / 1 件 CRITICAL。
この 8 件のうち、6 件はソースコードにトリガー条件が見つからず、2 件は見つかりました。
[!] うち 7 件は、公式が指定する修正版が**Maven Central に存在しません**
上の表を見ると「NVD は常にいい加減なスコアを付ける」と思われがちです。違います。 同じデータセットには他に 7 件あり、 公式評価と NVD 評価が完全に一致しています:
| CVE | コンポーネント | ベンダー公式 | NVD | NVD のスコアは誰が付けたか |
|---|---|---|---|---|
| CVE-2026-59270 | Spring Security | CRITICAL | 9.4 CRITICAL | ベンダー自己評価 |
| CVE-2026-41843 | Spring Framework | MEDIUM | 5.9 MEDIUM | ベンダー自己評価 |
| CVE-2026-41844 | Spring Framework | MEDIUM | 4.2 MEDIUM | ベンダー自己評価 |
| CVE-2026-41846 | Spring Framework | MEDIUM | 5.9 MEDIUM | ベンダー自己評価 |
| CVE-2026-41853 | Spring Framework | MEDIUM | 5.3 MEDIUM | ベンダー自己評価 |
| CVE-2026-41848 | Spring Framework | LOW | 3.7 LOW | ベンダー自己評価 |
| CVE-2025-41249 | Spring Framework | HIGH | 7.5 HIGH | ベンダー自己評価 |
どちらの方向にも反例はありません、これがこのツールが唯一断言できる因果関係です:
[email protected](ベンダー自身が提出)CISA-ADP(ベンダー未提出、第三者による最悪ケースの自動採点)生成スクリプトは 2 つのアサーションでそれぞれの方向を監視します(ASSERT4 / ASSERT7)、いずれかに反例が出れば表の生成を拒否します。
🔑 なぜ両方向を検証するのか:「一致するものはすべてベンダー自己評価」という命題は、「不一致の一部もベンダー自己評価である」可能性を排除しません。 実際にそのようなエントリが現れた場合、因果関係に反例が生じますが、片方向のみの検証では表は生成され、すべて緑のままになります。 片方向のアサーションでは因果関係を証明できません。
spring-core-5.3.39.jar で実行すると 11 件に該当しますが、この 11 件について公式が指定する修正版は
公開 Maven Central には 1 つも存在しません(5.3.45 / 5.3.49 / 5.3.50、すべて Enterprise Support Only とマーク)。判定表は tools/gen_rules.py が4 つの一次ソースから生成します。手作業の転記はありません:
| ソース | 取得内容 | |
|---|---|---|
| A | spring.io/security/<cve> | 公式評価 / 影響範囲 / 修正版(OSS ⟷ Enterprise マーク含む) |
| B | tomcat.apache.org/security-{9,10,11}.html | 同上 |
| C | NVD REST API | NVD 評価 とスコアソース |
| D | repo1.maven.org(HEAD) | 公式が指定するアップグレード先が Central に存在するか |
再実行すれば再検証になります:
python tools/gen_rules.py
スクリプトには6 つのアサーションがあり、失敗すれば表の生成を拒否します。うち 3 つはこのツールの主張を直接監視しています:
ASSERT2 公式⟷NVD 不一致の件数 —— ゼロになれば主張が無効になった証拠なので、即座に停止ASSERT3 Central プローブは陽性対照付き —— 対照が通らなければ、そのバッチの 404 はすべて無効ASSERT4 一致するケースのスコアソースはベンダー自己評価でなければならない —— これが「因果関係」の唯一の証拠Apache-2.0