脆弱性の評価指標であるCVSSとSSVCをどう使うか?

masui_cvss-ssvc_sum.png

個人で利用しているソフトウェアであれば、脆弱性が見つかってもWindows Updateなどの自動更新機能を使って更新しても問題ないでしょう。しかし、組織で脆弱性に対応するためには、その影響を調査し、検証したのちに更新する必要があります。

このとき、どの脆弱性から対応するのか、優先順位を決める必要があります。ここで使われる評価指標としてCVSSやSSVCがあります。どういった指標なのか、どういう違いがあるのかを知っておきましょう。

脆弱性の評価指標とは

コンピュータを使うことが当たり前の世の中になり、各社から多くのハードウェアやソフトウェアが提供されています。そして、常に新しい機能が追加されたり、不具合が見つかった場合には修正されたりしています。

こういった機能追加や一般的な不具合の修正であれば、その機能を使っていなければその製品を更新しなくても問題ないことも多いでしょう。
しかし、更新プログラムとして提供される修正の中には、一般的な不具合のほかに、セキュリティ上の問題である脆弱性への対応が含まれることがあります。

このような脆弱性が含まれている場合、可能な限り早く更新内容を適用することが求められますが、組織として対応するのはそれほど簡単ではありません。
業務で使っているサーバーであれば、繁忙期には短時間であっても止めることが許されない場合がありますし、更新プログラムを適用したことによって問題が起きないか検証しなければなりません。

このとき、対象となる脆弱性がどれくらい危険なのかがわかると、対応する優先順位を決めることができます。報告された脆弱性に対しては、米国政府の支援を受けた非営利団体のMITRE社がそれを管理するためのIDを割り当てており、その脆弱性を評価するためにCVSS (Common Vulnerability Scoring System) という指標がよく使われます。

CVSSは、ベンダーによらず共通の評価方法が定められており、脆弱性の深刻度を数値化できます。このとき、現状でよく使われているCVSS v3では、次の3つの基準が使われます。

基本評価基準(Base Metrics)

脆弱性そのものの重大性を評価する基準。機密性、完全性、可用性への影響を、「脆弱性がどの程度攻撃者に利用可能か」「攻撃の複雑さ」「認証が必要か」といった基準で評価し、値を算出する。

現状評価基準(Temporal Metrics)

現時点での深刻度を評価する基準。攻撃コードが出現しているか、その時点で実施可能な対策があるかといった事項に応じて、時間経過によって結果の値が変わることもある。

環境評価基準(Environmental Metrics)

製品の利用環境によって深刻度を評価する基準。該当の製品について、外部と接続していない・月に1度しか起動しないなど特殊な環境で利用している場合は脆弱性の深刻度が変わるため、利用環境ごとに評価結果が変動する。

これら3つの評価基準を組み合わせて、計算されるスコアをそれぞれ、基本スコア、現状スコア、環境スコアなどといいます。
ただし、現状評価基準と環境評価基準は専門的な知識がないと評価が難しいため、現実的には基本評価基準を使った基本スコアだけが多く使われています。この数値は0から10までの範囲で、10が最も重大な脆弱性であることを意味します。

発見された脆弱性についてのCVSSの値など、日本で使用されているソフトウェアなどの脆弱性関連情報を公開しているサイトとして、JVN(Japan Vulnerability Notes)があり、JPCERT/CCとIPA(独立行政法人情報処理推進機構)によって共同で運営されています。
【参考】Japan Vulnerability Notes

この値をもとに、次のように分類して対応している企業を多く見かけます。

CVSS基本スコア分類
9.0〜10.0Critical
7.0〜8.9High
4.0〜6.9Medium
0.1〜3.9Low

CVSS v4.0の登場

CVSSの評価方法は2005年のCVSS v1発表後も少しずつバージョンアップされており、JVNではCVSS v2とCVSS v3というバージョンの両方のスコアが併記されていました。しかし、CVSS v4.0が2023年11月に登場したこともあり、JVNでは2024年4月以降はCVSS v2の評価を掲載しないことになりました。
【参考】共通脆弱性評価システムCSVV v2評価の掲載終了のお知らせ

執筆時点(2024年4月時点)では、CVSS v3が使われていますが、今後はCVSS v4.0に変わっていくことが想定されます。

CVSS 4.0では、基本評価基準や環境評価基準が改良され、評価項目などが変更されただけでなく、上記で解説した「現状評価基準」は「脅威評価基準」と変更されました。また、CVSSのスコア算出には関係ありませんが、補助評価基準という評価も登場しました。

さらに、CVSSスコアの算出方法や表現方法が変更され、基本評価基準だけを使用している場合は「CVSS-B」、基本評価基準と環境評価基準を使っている場合は「CVSS-BE」のように、どの評価基準を使っているのかが、わかりやすくなりました。

SSVCとは

上記のように、CVSSは少しずつ変わっていますが、現状では基本スコアしか使っていない組織が多いものです。
また、CVSSの基本スコアをもとに、「Low」「Medium」「High」「Critical」のように定めたとしても、「Criticalであればいつまでにどのような対応をすべきか」というのは組織に任せられています。

つまり、組織ごとに優先順位や対応方法は異なりますし、ベンダーと利用者ではその意識も異なります。そこで、2019年に提案されたのがSSVC (Stakeholder-Specific Vulnerability Categorization)です。
【参考】SSVC: Stakeholder-Specific Vulnerability Categorization

SSVCも脆弱性を修正する優先度を示すものですが、名前の通りステークホルダー(システムの所有者や利用者、脆弱性を発見した人、セキュリティ団体など)によってカテゴライズされたものです。
このとき、ステークホルダーの種類に応じて、決定木が用意されています。たとえば、「デプロイヤー(更新プログラムを適用する立場)」というステークホルダーには、図のような決定木があります。

image01.png

出典:米カーネギーメロン大学ソフトウェア工学研究所の論文
「PRIORITIZING VULNERABILITY RESPONSE: A STAKEHOLDER-SPECIFIC VULNERABILITY CATEGORIZATION (VERSION 2.0)」より抜粋
insights.sei.cmu.edu

これは、次の4つのカテゴリーに分類される決定木です。

・defer:現時点では対応しない
・scheduled:定期メンテナンス時に対応する
・out-of-cycle:通常よりも迅速に対応する
・immediate:組織の通常業務を停止しても、可能な限り迅速に対応する

図の左端にある「Exploitation」は現時点での脆弱性の悪用状況を判定するものです。「none」は悪用されておらず攻撃検証コードも存在しない状況、「PoC」は攻撃検証コードが存在する状況、「active」は脆弱性を悪用した攻撃が発生している状況です。

次の「Exposure」は影響を受けるシステムや攻撃対象がどのような状況にあるかを判定するものです。「small」はネットワークに接続されていないシステムなど、「controlled」はアクセス制限がされているシステムなど、「open」はインターネットに公開されているようなシステムです。

このように、システムの内容によって決定木をたどることで、いつ対応するのかを明確にできます。それぞれのステークホルダーの種類ごとに決定木が用意されているため、この決定木に沿って具体的な対処方針を決定します。

上記の図のような複雑な決定木をたどるのは大変なように思えるかもしれませんが、実際には画面で選択するだけで分類がわかる仕組みが用意されています。
【参考】SSVC: Stakeholder-Specific Vulnerability Categorization

SSVCを使う場合はこの決定木の条件分岐をたどって判定し、導出された判断に沿って対応すれば良いのです。このプロセスが明確で、説明可能なため、透明性を持った対応が可能になります。

まとめ

脆弱性への対応は一般の利用者だけでなく、システム担当者でも中身の理解に知識と時間を要し、対応が難しいものです。適切なタイミングで適切な対応をするために、公開されている評価指標をうまく活用することが求められています。

著者プロフィール
増井 敏克氏(ますい としかつ)
増井技術士事務所代表。技術士(情報工学部門)、情報処理技術者試験にも多数合格。
ビジネス数学検定1級。

「ビジネス」×「数学」×「IT」を組み合わせ、コンピューターを「正しく」「効率よく」使うためのスキルアップ支援や各種ソフトウェア開発、データ分析などをおこなっている。

著書に『図解まるわかり セキュリティのしくみ』『図解まるわかり プログラミングのしくみ』『図解まるわかり アルゴリズムのしくみ』『IT用語図鑑』『IT用語図鑑[エンジニア編]』『Pythonではじめるアルゴリズム入門』『プログラマ脳を鍛える数学パズル』『プログラマを育てる脳トレパズル』(以上、翔泳社)、『プログラマのためのディープラーニングのしくみがわかる数学入門』『プログラミング言語図鑑』(以上、ソシム)、『基礎からのプログラミングリテラシー』(技術評論社)、『RとPythonで学ぶ統計学入門』(オーム社)などがある。