連載
» 2020年05月19日 05時00分 公開

OpenSCAPで脆弱性対策はどう変わる?(7):CVSS(共通脆弱性評価システム)3.0から3.1への変更点

本連載では、グローバルスタンダードになっている「SCAP」(セキュリティ設定共通化手順)およびそれを基にシステム構成や脆弱性の検査を行うためのOSSツール「OpenSCAP」や、その周辺の技術、用語などを紹介する。今回は、CVSS 3.0から3.1への変更点について。

[面和毅,OSSセキュリティ技術の会]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 OSSセキュリティ技術の会の面和毅です。本連載「OpenSCAPで脆弱性対策はどう変わる?」では、実質的にグローバルスタンダードの「SCAP(Security Content Automation Protocol:セキュリティ設定共通化手順)」、およびそれを基にシステム構成や脆弱(ぜいじゃく)性の検査を行うためのOSS(オープンソースソフトウェア)ツール「OpenSCAP」や、その周辺の技術、用語などを紹介しています。

 今回はSCAPの構成要素の一つであるCVSS(Common Vulnerability Scoring System:共通脆弱性評価システム)が、2019年6月に3.1にバージョンアップされたため、3.0からの差分を見てみます。

あらためてCVSSとは

 本連載の第1回でも説明しましたが、CVSSは脆弱性の性質と重大性を共有するためのフレームワークです。CVSSは、Base(基本評価基準)、Temporal(現状評価基準)、Environment(環境評価基準)の3つのメトリックグループで構成されています。

  • Base(基本評価基準):一般的によく知られているもの。ベンダーが公開する
  • Temporal(現状評価基準):脆弱性が公開された後の状況(Exploitコードが出回っているのかどうか、修正済みのバージョンはあるのかどうかなど)によって、時系列で変化していくもの。ベンダーが出す
  • Environment(環境評価基準):エンドユーザー側固有の環境による緩和策を加味したもの。エンドユーザー側の方で決める

 なお、CVSS 3.1の仕様およびユーザーガイドについては、それぞれ「Common Vulnerability Scoring System version 3.1: Specification Document」「Common Vulnerability Scoring System v3.1: User Guide」を参考にしてください。日本語での拙訳を「【翻訳】CVSS v3.1(目次)」として公開しているので、こちらも参照していただければと思います。

 また、今回CVSSのスコア値を計算する際には、Webで公開されているNVDのJavaScript計算機を使用していきます。

CVSS 3.0から3.1での変更点

 CVSS 3.0から3.1での変更点としては、新しい指標を導入したり、既存の計算式に大きな変更を加えたりすることはなく、既存の標準を明確にして改善することに焦点が当たっています。変更点は細かいものが多いため、代表的なものを下記にまとめました。

  1. 「CVSSは重大性を測るものであり、それ単一でリスクを測るものではない」ことの強調
  2. 攻撃元区分(Attackベクター)の変更と修正
  3. 式の変更
  4. スコアリングガイダンスの変更
  5. CVSS拡張フレームワーク

 それぞれを詳しく見ていきましょう。

「CVSSは重大性を測るものであり、それ単一でリスクを測るものではない」

 こちらは、非常に重要な「CVSS」の定義に関わるものです。CVSSは場合によっては「ユーザーにとってのリスクを計るため」のものと混同され、ユーザー側からは「CVSSのBaseスコアがXXだから、われわれにとってはXXくらいのリスクがある」とそのまま捉えられてしまうきらいがあります。

 CVSS 3.0では仕様書のIntroductionで「最終的に、CVSSは優先付けられたリスクを有効にします。環境評価基準スコアが計算される際、脆弱性はそれぞれの組織にとって意味を持ち、この脆弱性によって組織にもたらされるリスクをよりよく理解するのに役立ちます」と書いてあります。つまり本来は「CVSSによってもたらされた脆弱性の重大性を用いて、ユーザー固有の環境評価基準を適用する際に、環境にどれくらいのリスクがあるかが分かる」というものですが、あまり分かりやすいとはいえない説明です。

 そこでCVSS 3.1では仕様書のIntroductionで明確に「基本(Base)スコアは、時間とともに一定であり、異なる環境全体で合理的な最悪のケースを想定した、脆弱性の重大性を反映します」としています。「脆弱性の重大性」だと明確にうたっているのです。また、仕様書からは「risk(リスク)」という単語がなくなっており、混同しにくいように気を使った形に修正されています。

攻撃元区分(Attackベクター)の変更と修正

 CVSS 3.0では攻撃元区分(Attackベクター)の用語を下記のように説明しています。

Network:脆弱性がNetworkアクセスで悪用可能という意味は、脆弱性のあるコンポーネントがネットワークスタックにバインディングされており、攻撃者のパスはOSIモデルのレイヤ3(Networkレイヤ)となることを意味しています。(略)

Adjacent(隣接):脆弱性が隣接ネットワークアクセスから悪用可能という意味は、脆弱性のあるコンポーネントがネットワークスタックにバインディングされており、攻撃は同じ共有された物理の(すなわちBluetooth, IEEE 802.11)、或いは論理的な(すなわちローカルIPサブネット)ネットワークでは可能だが、OSIレイヤ3境界(すなわちルータ)を超えることは出来ないという事を表しています。(略)

 ネットワークを勉強した人間やセキュリティ専門家には分かりやすいのですが、CVSSを利用する「ユーザー」には少し分かりにくい表現です。そこでCVSS 3.1ではユーザーなどに分かりやすい形に表現が変わっています。

 また最近では、VPN(Virtual Private Network)やMPLS(Multi-Protocol Label Switching)などの信頼されたネットワークも「隣接したネットワーク」に含まれるので、CVSS 3.1ではそれらも「Adjacent(隣接)」の定義に含むようになっています。

Network:脆弱性のあるコンポーネントがネットワークスタックにバインディングされており、攻撃者はInternetを含む下記にリストしたオプション(Adjacent, Local, Physical)を超えた形でやってきます。(略)

Adjacent(隣接):脆弱性のあるコンポーネントがネットワークスタックにバインディングされているが、攻撃はプロトコルレベルで論理的に近接なトポロジーに限定されています。これは攻撃が同じ共有された物理の(すなわちBluetoothやIEEE 802.11)、また論理の(すなわちローカルIPサブネット)ネットワークで実行されるか、管理ドメイン(すなわちMPLSや管理ネットワークゾーンへのセキュアVPN)から行われるということを意味しています。

 このように「Adjacent(隣接)」とネットワークの関係が分かりやすくなったため、ユーザー環境でのEnvironmentメトリックを評価するのが分かりやすくなります。

 例えば、MySQLの脆弱性(CVE-2013-0375。MySQLサーバのサーバレプリケーション処理に関する脆弱性)のBaseメトリックは、ネットワークから悪用可能なため下記のように表します。

Base Score: 6.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N

 ユーザーの環境でファイアウォールの内側にMySQLサーバがあり、信頼された管理ネットワークのみしか接続されていない場合は、CVSS 3.1を見ると「Adjacent(隣接)」に「信頼された管理ネットワーク」と書かれているため、Environmentメトリックの「Modified Attack Vector」を「Adjacent(隣接)」に変更し、下記のように評価すればいいということがすぐに分かるようになっています。

Environmental Score: 5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N/MAV:A

式の変更(Roundup(切り上げ)の計算)

 Base、Temporal、Environmentのスコアの計算式が変更されました。スコアリング自体には変更はありません。

 CVSS 3.0の仕様書で定義されたRoundup関数には、実装方法で値が違ってしまう可能性がありました。例えば、0.1+0.2は0.3になりますが、JavaScriptの実装によってはこれが「0.30000000000000004」として返ってきてしまい、これがRoundup関数を通すことで切り上げられて「0.4」となってしまうことがありました。

 このような事が起きないように、CVSS 3.1ではRoundup関数を再定義しました。3.0と3.1でスコア値が(差は0.1以内ですが)異なるという事態が発生します。

 例えば下記のスコアを見てみましょう。

CVSS:3.1/AV:P/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:H/E:H/RL:U/RC:U

 図1は上式をNVDの「CVS System Calculator」で計算したときのものです。

図1

 CVSS 3.1のときは図1のように下記が出てきます。

CVSS Base Score: 5.0
Impact Subscore: 4.7
Exploitability Subscore: 0.3
CVSS Temporal Score: 4.6
CVSS Environmental Score: NA
Modified Impact Subscore: NA
Overall CVSS Score: 4.6

 一方、「Calculator」内で「CVSS v3.0」を選ぶと、図2のように下記が出てきます。

CVSS Base Score: 5.0
Impact Subscore: 4.7
Exploitability Subscore: 0.3
CVSS Temporal Score: 4.7
CVSS Environmental Score: NA
Modified Impact Subscore: NA
Overall CVSS Score: 4.7
図2

 CVSS Temporal Scoreが「4.7」(CVSS 3.0)から「4.6」(CVSS 3.1)へと0.1ずれています。

スコアリングガイダンスの変更

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

8月8日10時30分〜16時30分の間、システムメンテナンスのため記事の一部表示や資料のダウンロードができなくなります。ご理解のほどよろしくお願いいたします。

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。