背景
私は CVE(脆弱性ごとに振られる通し番号)の対処をまとめるサイトを運用しています。
昨日 JetBrains の CI/CD サーバ TeamCity の1件を載せたとき、深刻度の点数が2つあってどちらを書くか迷いました。
同じように迷う人がいそうなので、どう読んだかを残しておきます。
用語を先に
CVSS は脆弱性の深刻度を 0〜10 で表す指標だ。
7.0 以上が High、9.0 以上が Critical になる。
点数だけでなく「ベクタ」という文字列が付いていて、どういう前提でその点数になったかが書いてある。
NVD は NIST(アメリカ国立標準技術研究所)が運営する CVE のデータベースです。
CNA は CVE 番号を振る権限を持つ組織のことで、今回は JetBrains 自身が CNA です。
KEV は CISA(アメリカの政府機関)が「実際に悪用された」脆弱性だけを集めたカタログです。
どんな脆弱性か
NVD の説明は1文だけです。
TeamCity の 2026.2 / 2026.1.4 / 2025.11.8 より前では、パスワードリセットを使って管理者アカウントを乗っ取れた、という内容。
どの入力をどう細工するか、といった技術的な詳細は公開されていません。
NVD の対象範囲(CPE)は 2025.11.8 未満の全版と、2026.1 以上 2026.1.4 未満です。
修正版は 2025.11.8 と 2026.1.4(どちらも 2026年9月2日リリース)、それと 2026.2 です。
JetBrains の修正一覧はここにあります。
https://www.jetbrains.com/privacy-security/issues-fixed/
2026年10月6日時点で KEV には載っておらず、悪用の一次情報も見つけられていません。
点数を source 別に並べる
NVD の画面でも見られますが、私は API で取っています。
下記は NVD API 2.0 から1件取り、CVSS 3.1 の評価を「誰が付けたか(source)」ごとに1行ずつ出す Node.js スクリプトです。
引数に CVE 番号を渡します。
API キー無しでも動きますが、短時間に連打すると制限がかかるので、何十件も回すときは間を空けてください。
// nvd-cvss.mjs
const id = process.argv[2];
const url = `https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=${id}`;
const j = await (await fetch(url)).json();
const cve = j.vulnerabilities[0].cve;
console.log(cve.id, cve.vulnStatus);
for (const m of cve.metrics.cvssMetricV31 ?? []) {
console.log(m.type.padEnd(9), m.source.padEnd(18), m.cvssData.baseScore, m.cvssData.vectorString);
}
今朝そのまま実行した出力です。
$ node nvd-cvss.mjs CVE-2026-100255
CVE-2026-100255 Analyzed
Secondary cve@jetbrains.com 8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Primary nvd@nist.gov 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Primary が NVD の評価、Secondary が CNA(JetBrains)の評価です。
2本のベクタを並べると、違うのは AC:H と AC:L の1か所だけだと分かると思います。
AC の1文字が何を意味するか
AC は Attack Complexity(攻撃の複雑さ)で、攻撃者の手の届かない条件がそろわないと成功しない場合に H(High)になる。
JetBrains は「条件がそろわないと難しい」と見て H、NVD は詳細が公開されていない以上「難しいと言える根拠が無い」として L にした、という読み方になると思います(どちらも理由は書いていないので、ここは私の推測です)。
他の項目(ネットワーク越し・認証不要・利用者の操作不要・機密性/完全性/可用性すべて High)は一致しています。
つまり「未認証で管理者を取れる」という骨格には、両者とも異論が無い。
どちらを採るか
私のサイトでは NVD の Primary(9.8)を採って、JetBrains の 8.1 も併記しています。
理由は2つあります。
1つは、サイト全体で「NVD の Primary を採る」と決めておかないと、CVE ごとに基準がぶれて並べたときに比べられなくなるから。
もう1つは、攻撃の難しさの根拠(どんな条件が要るのか)が公開されていないので、低いほうを採る理由が私の側に無いからです。
逆に、ベンダーが条件を公開していて、自分の環境がその条件を満たさないと確かめられるなら、低いほうで優先度を付けるのも合理的だと思います。
私のサイトの該当ページはここです。
https://cve.autoarticles.net/cve/CVE-2026-100255.html
結び
点数が割れていたら、点数を比べるのではなく、ベクタを1項目ずつ比べてください。
今回の差は AC の1文字だけで、「未認証で管理者を取れる」という評価はどちらも同じでした。
TeamCity を使っている人は、2025.11 系なら 2025.11.8 以上、2026.1 系なら 2026.1.4 以上(または 2026.2 以上)へ上げ、それまでは管理画面をインターネットから直接触れない場所に置いてください。
本記事はAI補助で執筆した、個人開発の紹介記事です。