脆弱性の評価指標(CVSS)

当ページでは、システムの脆弱性の指標「CVSS」について分かりやすく説明しています。 この記事を読むことによって、発見された脆弱性のCVSSスコアを計算できるようになり、脆弱性の深刻度を評価することが可能となります。
 
 

CVSSの概要

CVSS (Common Vulnerability Scoring System)とは、情報システムの脆弱性の深刻度を定量的に評価するためのスコア付けシステムのこと。
情報システムの脆弱性に対するオープンで汎用的な評価手法であり、ベンダーに依存しない共通の評価方法となっている。
 
脆弱性の深刻度を0.1~10.0の範囲でスコア付けし、「この脆弱性は対策すべきか?」であったり「優先的に対策すべき脆弱性はどれか?」などの見極めに利用する。
深刻度スコア
緊急9.0 - 10.0
重要7.0 - 8.9
警告4.0 - 6.9
情報0.1 - 3.9

CVSSのバージョン

CVSSはこれまでに複数回のバージョンアップが行われて改良されてきた。 バージョン一覧とその概要は以下の通り。
バージョン公開年概要(前バージョンとの変更点)
CVSS v12005年最初のバージョンで、脆弱性の深刻度を数値化する仕組みを導入。
CVSS v22007年時間や環境の観点をスコアに反映させた。
CVSS v3.02015年脆弱性の影響範囲・攻撃前提条件の複雑さ・ユーザの関与の有無をスコアに反映させた。
CVSS v3.12019年一部の用語や定義を明確化し、評価者による解釈の違いを減少させた。
CVSS v4.02023年脆弱性の影響だけでなく、実際に攻撃されるリスクをより現実的に評価可能にした。

CVSSのスコアの計算方法

CVSS v3.1のスコア計算

現在最も使われているCVSS v3.1のスコア算出方法について説明する。仕様はこちらを参照。
 
以下の3種類のスコアが存在する。
  • (基本評価値) :脆弱性そのものの深刻度のみを評価した基本スコア。 Base Metrics(基本評価基準)と呼ばれる8つの項目からスコアを算出する。
  • (現状評価値) :Base Scoreに加え、脆弱性の現時点での深刻度を加味したい場合に算出するスコア。 攻撃方法公開の有無や、セキュリティパッチの有無などを考慮し、時間経過によってスコアも変化する。 Temporal Metrics(現状評価基準)と呼ばれる項目を加えてスコアを算出する。
  • (環境評価値) :Temporal Scoreに加え、製品利用者の利用環境を加味したい場合に算出するスコア。 各利用者によってスコアも変化する。 Encironmental Metrics(環境評価基準)と呼ばれる項目を加えてスコアを算出する。
以上3種類のスコアがあるが、主に使われるのはBase Scoreであり、Temporal ScoreとEnvironmental Scoreはオプション。
スコアを手動で計算するのは大変なので、以降で説明する選択肢を見ながらCVSS計算ツール(CVSS v3.1)でスコア計算するのが良い。

Base Metrics(基本評価値)の詳細

Base Scoreは以下の8つの項目(基本評価基準)から計算される。
 Base Scoreの計算例
Base Scoreの計算例
 
  • (攻撃元区分) :攻撃者が脆弱性を悪用するためのアクセス条件の範囲。
    • 選択肢概要
      Network (N)インターネット経由で遠隔で攻撃が可能
      Adjacent (A)同じ物理または論理ネットワーク内でのみ攻撃可能(例: サブネットやVPN経由)。
      Local (L)ローカルシステムでのみ攻撃可能(例: SSHでのターミナル操作)。
      Physical (P)攻撃者が直接システム本体に触れる必要がある(例: USBデバイスを挿入)。
 
  • (攻撃の複雑さ) :攻撃を成功させるために必要な条件の難易度。
    • 選択肢概要
      Low (L)攻撃を成功させるための条件が単純で、追加の条件を満たす必要がない。
      High (H)特別な準備や情報収集が追加で必要。
 
  • (必要な権限) :攻撃を成功させるために必要な権限。
    • 選択肢概要
      None (N)攻撃に特別な権限が不要。
      Low (L)制限された権限が必要(例: 一般ユーザ権限)。
      High (H)高い権限が必要(例: 管理者権限)。
 
  • (ユーザの関与) :攻撃を成功するために、ユーザの関与が必要か
    • 選択肢概要
      None (N)ユーザの関与は不要。
      Required (R)攻撃を成功させるためにユーザの関与が必要(例: リンクをクリック)。
 
  • (影響範囲) :脆弱性の影響が攻撃対象以外のシステムやコンポーネントに及ぶかどうか。
    • 選択肢概要
      Unchanged (U)影響は攻撃対象の範囲内にとどまる。
      Changed (C)影響が他の範囲(システムや特権)に及ぶ。
 
  • (機密性) :機密情報への影響。
    • 選択肢概要
      High (H)完全な機密性の喪失(例: 全データの漏洩)。
      Low (L)一部の機密性が損なわれる(例: 部分的なデータ漏洩)。
      None (N)機密情報には影響がない。
 
  • (完全性) :データやシステムの改ざんに関する影響を評価します。
    • 選択肢概要
      High (H)完全性が大幅に損なわれる(例: 全データの改ざん)。
      Low (L)一部の完全性が損なわれる。
      None (N)完全性に影響はない。
 
  • (可用性) :システムやサービスの利用可能性への影響を評価します。
    • 選択肢概要
      High (H)サービスが完全に停止する。
      Low (L)サービスが部分的に停止、または一時的な影響がある。
      None (N)可用性に影響はない。

その他の脆弱性指標の関連用語

CVE

CVE (Common Vulnerabilities and Exposures)とは、世の中の脆弱性の一元的なIDのこと。
「CVE-【西暦】-【一意の番号】」といった命名規則で付けられる。
例えば2014年にOpenSSLの情報漏洩を引き起こしてしまう脆弱性(Heartbleed 問題)が発見されたが、この脆弱性には「CVE-2014-0160」というIDが割り振られている。
 
CVE IDの発行はCVE Numbering Authorities (CNA) という認定機関が行なっている。
実際のCVEの検索はMITREのCVE検索ページから行える。
 

CWE

CWE (Common Weakness Enumeration)とは、脆弱性をカテゴリ分けしたもの。
脆弱性の種類を脆弱性タイプとして分類して階層構造で体系化している。
 
例えば「クロスサイトスクリプティング」と呼ばれる脆弱性は「CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')」として登録されている。
 
CWEの一覧はこちらから確認可能。