CVSS
ソフトウェアなどの脆弱性の深刻度を、製品の開発元に依存しない共通の基準で0.0から10.0までの数値に評価する手法である。FIRSTが仕様を管理し、脆弱性そのものの特性を表す基本評価基準を中心に、時間の経過や利用環境に応じた評価を加えて使う。
イマシルちゃんの解説
新しい脆弱性は毎日のように公表されていて、全部に同時に対応するのは難しいんだ。
製品の開発元ごとに「危険度:高」の意味がばらばらだと、どれから直せばよいか比べられないよね。
CVSSは、脆弱性の深刻度を共通のものさしで点数にする評価の仕組みだよ。
ネットワーク経由で攻撃できるか、攻撃に特別な条件や権限が要るか、情報がどれだけ漏れたり壊れたりするかを項目ごとに選ぶの。
その組合せから点数が決まって、「緊急」や「重要」といった段階にも分けられるんだ。
同じ基準で並べられるから、対応する順番を決めやすくなるよ。
この解説はわかりやすかったですか?
より深い解説
定義と位置付け
CVSS(Common Vulnerability Scoring System:共通脆弱性評価システム)は、情報システムの脆弱性の特性と深刻度を数値で表すための評価手法である。インシデント対応チームの国際的な団体であるFIRST(Forum of Incident Response and Security Teams)が仕様を管理している。
CVSSのバージョンは、v2(2007年)、v3.0(2015年)、v3.1(2019年)、v4.0(2023年)と改訂されてきた。現在の脆弱性情報では、v3.1とv4.0の値が併記されることが多い。どのバージョンで評価した値かによって項目も点数も異なるため、値を比べるときはバージョンをそろえる必要がある。仕様はCVSS v3.1仕様書とCVSS v4.0仕様書で公開されている。
CVSSと名前が似た仕組みに、脆弱性の識別番号や種類の分類がある。役割を区別して覚える。
| 名称 | 役割 | 例 |
|---|---|---|
| CVE | 個々の脆弱性を一意に識別する番号 | 公表年と通し番号を組み合わせた識別子 |
| CWE | 脆弱性の種類を分類する体系 | SQLインジェクション、バッファオーバーフローなど |
| CVSS | 脆弱性の深刻度を評価する基準 | 基本値8.1、深刻度「重要」など |
一つの脆弱性に識別番号が付き、その原因の種類が分類され、深刻度がCVSSで評価される、という関係である。米国のNVD(NVDのCVSS解説)や日本のJVN iPediaなどの脆弱性データベースは、これらを組み合わせて公開している。
CVSSの値が示すのは脆弱性の「深刻度」であり、組織にとっての「リスク」そのものではない。v3.1の仕様書もこの点を明記している。同じ脆弱性でも、その製品を使っているか、インターネットから到達できるかによって組織への影響は変わる。
v3.1の三つの評価基準
CVSS v3.1は、性質の異なる三つの評価基準で構成される。
| 評価基準 | 評価する内容 | 時間・環境による変化 | 主な評価者 |
|---|---|---|---|
| 基本評価基準 | 脆弱性そのものの特性 | 変化しない | 製品の開発元、脆弱性データベース |
| 現状評価基準 | 攻撃コードや対策の現在の状況 | 時間とともに変化する | 製品の開発元、セキュリティ機関 |
| 環境評価基準 | 利用者の環境での重要度 | 組織ごとに異なる | 製品を利用する組織 |
基本評価基準で求めた値を基本値という。脆弱性データベースで一般に公開される点数の多くは基本値である。現状値と環境値は、基本値を出発点にして、それぞれの状況を反映させた値である。
基本評価基準の項目
基本評価基準は、攻撃のしやすさを表す項目と、攻撃された場合の影響を表す項目に分かれる。日本語の名称はIPAの解説(共通脆弱性評価システムCVSS v3概説)による。
| 項目 | 選択肢 | 何を表すか |
|---|---|---|
| 攻撃元区分(AV) | ネットワーク、隣接、ローカル、物理 | どこから攻撃できるか |
| 攻撃条件の複雑さ(AC) | 低、高 | 攻撃者が制御できない条件がどの程度必要か |
| 必要な特権レベル(PR) | 不要、低、高 | 攻撃の前にどの程度の権限が必要か |
| ユーザ関与レベル(UI) | 不要、要 | 攻撃に利用者の操作が必要か |
| スコープ(S) | 変更なし、変更あり | 影響が脆弱なコンポーネントのセキュリティ管理範囲を越えるか |
| 機密性・完全性・可用性への影響(C・I・A) | 高、低、なし | 攻撃が成功したときの影響の大きさ |
攻撃元区分の「隣接」は、同じセグメントや同じ無線LANなど、論理的に隣接したネットワークからだけ攻撃できる場合を指す。「ローカル」は対象の機器にログインしているなどローカルの操作が必要な場合、「物理」は機器に物理的に触れる必要がある場合である。インターネットを含むルーティングされたネットワークの先から攻撃できる場合は「ネットワーク」になり、最も点数が高くなる。
スコープは、脆弱なコンポーネントのセキュリティ管理範囲を越えて影響が及ぶかを表す。コンポーネントが別でも、同じ管理範囲内なら「変更なし」である。例えば、仮想マシンの中で動くソフトウェアの脆弱性を悪用して、ホスト側のシステムまで操作できる場合は「変更あり」となる。スコープが変わると、影響の範囲が広がるため基本値は高くなる。
基本値の計算
v3.1の基本値は、各項目の選択肢に割り当てられた係数から計算する。主な係数を次に示す。
| 項目 | 係数 |
|---|---|
| 攻撃元区分 | ネットワーク0.85、隣接0.62、ローカル0.55、物理0.2 |
| 攻撃条件の複雑さ | 低0.77、高0.44 |
| 必要な特権レベル(スコープ変更なし) | 不要0.85、低0.62、高0.27 |
| ユーザ関与レベル | 不要0.85、要0.62 |
| 機密性・完全性・可用性への影響 | 高0.56、低0.22、なし0 |
スコープが変更なしの場合、基本値は次の式で求める。
影響の基礎値 = 1 − (1 − C)×(1 − I)×(1 − A)
影響度 = 6.42 × 影響の基礎値
攻撃容易性 = 8.22 × AV × AC × PR × UI
基本値 = 影響度と攻撃容易性の和(上限10)を、小数第1位に切り上げた値
影響度が0以下なら基本値は0とする。スコープが変更ありの場合は、影響度と最後の合計に別の式を使う。
次は独自の計算例である。ネットワーク経由で攻撃でき、条件は複雑でなく、一般利用者の権限でログインした攻撃者が利用者の操作なしに情報を盗み出せる脆弱性を考える。機密性への影響は高、完全性と可用性への影響はなし、スコープは変更なしとする。
影響の基礎値 = 1 − (1 − 0.56)×(1 − 0)×(1 − 0)= 0.56
影響度 = 6.42 × 0.56 = 3.5952
攻撃容易性 = 8.22 × 0.85 × 0.77 × 0.62 × 0.85 ≒ 2.8353
合計 ≒ 3.5952 + 2.8353 = 6.4305
基本値 = 6.4305を切り上げて 6.5
この例の基本値は6.5で、深刻度は「警告」(Medium)になる。同じ脆弱性が、ログインしなくても悪用できるものだったとする。必要な特権レベルを「不要」の0.85に替えると、次のようになる。
攻撃容易性 = 8.22 × 0.85 × 0.77 × 0.85 × 0.85 ≒ 3.8870
合計 ≒ 3.5952 + 3.8870 = 7.4822
基本値 = 7.4822を切り上げて 7.5
基本値は7.5となり、深刻度は一段上の「重要」(High)になる。認証の前に悪用できるかどうかが、深刻度を大きく左右することが分かる。
評価結果の書き表し方
CVSSの評価結果は、点数だけでなく、各項目の選択結果を並べたベクトル文字列で表す。上の一つ目の例は次のようになる。
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
先頭はCVSSのバージョンを、続く各要素は「項目の略称:選択肢の略称」を表す。点数だけでは「なぜその点数なのか」が分からない。ベクトルを読めば、例えば「ネットワークから攻撃できるが、ログインが必要」といった条件を確かめられる。自組織の環境で評価し直すときも、ベクトルを出発点にする。
深刻度の段階
CVSS v3.xとv4.0では、点数を次の5段階の深刻度に対応させる。日本語の呼び方はJVNやIPAで使われているものである。
| 深刻度 | 点数の範囲 | 日本語での呼び方 |
|---|---|---|
| Critical | 9.0〜10.0 | 緊急 |
| High | 7.0〜8.9 | 重要 |
| Medium | 4.0〜6.9 | 警告 |
| Low | 0.1〜3.9 | 注意 |
| None | 0.0 | なし |
v2には「Critical」の段階がなく、NVDではLow(0.0〜3.9)、Medium(4.0〜6.9)、High(7.0〜10.0)の3段階で表していた。古い資料の「High」と新しい資料の「High」が同じ範囲とは限らない点に注意する。
時間と環境を反映する評価
v3.1の現状評価基準は、時間とともに変わる状況を評価する。攻撃コードがどの程度出回っているか(攻撃される可能性)、修正プログラムなどの対策が出ているか(利用可能な対策のレベル)、脆弱性情報がどの程度確かか(脆弱性情報の信頼性)の3項目がある。各項目の係数は1以下なので、現状値は基本値と同じか、それより低くなる。
環境評価基準は、製品を利用する組織が自らの環境に合わせて評価する。機密性・完全性・可用性のそれぞれについて、組織にとっての重要度(セキュリティ要求度)を設定する。さらに、ファイアウォールで到達経路を限っているなどの緩和策を、基本評価基準の各項目を修正する形で反映できる。環境値は基本値より高くも低くもなり得る。
例えば、基本値が高い脆弱性でも、該当する管理画面が管理用のネットワークからしか到達できないなら、攻撃元区分を見直して環境値を下げられる。逆に、個人情報を大量に扱うシステムなら、機密性の要求度を高くして環境値を上げる。
v4.0での主な変更
2023年11月に公開されたCVSS v4.0では、評価基準の構成と項目が見直された。
| 観点 | v3.1 | v4.0 |
|---|---|---|
| 評価基準 | 基本・現状・環境 | 基本・脅威・環境・補足 |
| 影響の範囲の表し方 | スコープで変更あり・なしを選ぶ | 脆弱なシステムと後続システムへの影響を別々に評価する |
| 攻撃の前提条件 | 攻撃条件の複雑さに含める | 攻撃条件の複雑さと攻撃要件(AT)に分ける |
| ユーザ関与 | 不要・要の2段階 | 不要・受動的・能動的の3段階 |
| 時間で変わる評価 | 3項目で評価する | 攻撃の成熟度の1項目にまとめる |
v4.0では、分かりにくいと指摘されていたスコープを廃止した。代わりに、脆弱なシステム自体への影響(VC・VI・VA)と、それ以外の後続システムへの影響(SC・SI・SA)を、それぞれ機密性・完全性・可用性について評価する。
v3.1の現状評価基準は、v4.0では脅威評価基準に置き換えられた。項目は攻撃の成熟度(Exploit Maturity)だけになり、実際に攻撃が確認されているか、実証コードがあるか、どちらも報告されていないかを選ぶ。補足評価基準は、自動化して攻撃できるか、人の安全に影響するかなどの追加情報を示すもので、点数には影響しない。
点数の求め方も変わった。v4.0は、v3.1のような係数を掛け合わせる計算式ではなく、項目の組合せをいくつかのグループに分類し、専門家の評価に基づく値の表を使って点数を決める。
v4.0では、どの評価基準を使ったかを点数に添えて示す。基本評価基準だけならCVSS-B、脅威評価基準も使えばCVSS-BT、環境評価基準も使えばCVSS-BE、すべて使えばCVSS-BTEと表記する。ベクトル文字列は「CVSS:4.0/」で始まる。深刻度の5段階と点数の範囲はv3.xと同じである。
対応の優先順位を決める
脆弱性管理では、CVSSの基本値を優先順位付けの出発点として使う。ただし基本値だけで判断すると、実際の危険度と順位がずれることがある。
| 観点 | 確認する内容 |
|---|---|
| 自組織の影響 | 該当する製品・バージョンを使っているか、その機器がどの経路から到達できるか |
| 攻撃の状況 | 実際の攻撃が確認されているか、攻撃コードが公開されているか |
| 資産の重要度 | その機器が停止したり情報が漏れたりしたときの業務への影響 |
| 緩和策 | ファイアウォールやIPSでの遮断、機能の無効化などで当面の危険を下げられるか |
攻撃の状況を判断する材料として、米国CISAが公開している、実際に悪用された脆弱性の一覧(Known Exploited Vulnerabilities Catalog)がある。また、FIRSTは今後30日以内に悪用される確率を推定するEPSS(Exploit Prediction Scoring System)を公開している(EPSS)。CVSSが「悪用されたらどれだけ深刻か」を表すのに対し、EPSSは「悪用される可能性」を表す。
ネットワーク機器の脆弱性を考える場合、攻撃元区分が「ネットワーク」の脆弱性でも、管理インタフェースへのアクセスを管理用セグメントだけに限っていれば、外部から直接悪用される危険は小さくなる。反対に、VPN装置やファイアウォールのようにインターネットに直接面した機器の脆弱性は、基本値が同じでも優先して対応すべきである。
同じ脆弱性でも、製品の開発元とNVDとで異なる基本値を公表していることがある。評価に使った前提が異なるためであり、ベクトル文字列を比べればどの項目の判断が違うかを確かめられる。
午後での問われ方
- 脆弱性情報の基本値やベクトルを示し、どの項目が点数を高くしているかを読み取らせる。
- 基本値と環境値の違いを説明させ、自組織の構成を踏まえて対応の優先順位を判断させる。
- 管理インタフェースへのアクセス制限などの緩和策が、どの評価項目に影響するかを答えさせる。
- 複数の脆弱性について、公開範囲や攻撃の状況を考慮して先に対応すべきものを選ばせる。
- 修正プログラムをすぐに適用できない場合の暫定対策を、脆弱性の攻撃条件と結び付けて記述させる。