脆弱性に対するオープンで汎用的な評価手法 ~CVSSとは~

情報セキュリティ

 

CVEの記事を書いたところ思いがけず好評だったため、今回はセキュリティの第二弾、CVSSを取り上げます。探してみると実はいろいろなところで、CVSSは使われています。
今回は、よく見かけるのにあまり知らなかったCVSSのことについて、私なりに調査してみた結果をまとめてみました。

CVSSとは

CVSS(Common Vulnerability Scoring System)とは、脆弱性に対するオープンで汎用的な評価手法です。各ベンダーでそれぞればらばらな手法を使っているとどれが本当に深刻な脆弱性なのかがユーザ側で判断できません。CVSSを用いるとべンダーやユーザ、専門家などその脆弱性にかかわる関係者が同じ「ものさし」で各脆弱性を評価できるようになる、というわけです。

CVSSのバージョンにより少し区分が異なりますが、共通して言えることはCVSSの値は0.0~10.0で算出され、大きいほど深刻であることを表しています。

現在、CVSSは、FIRST(Forum of Incident Response and Security Teams)のCVSS-SIG(Special Interest Group)が中心となって仕様改善と普及を推進しています。

2005年6月にCVSS V1が公開され、2007年6月にCVSS V2、2015年にCVSS V3、そして2019年には、V3の標準の定義が明確化されたCVSS V3.1が公開されました。
V2とV3.xは、評価する基準が異なるため、同じ脆弱性でも数値が異なります。V3.0とV3.1は判断基準となる各要素の変更はなく、既存の基準を明確化しているだけのようです。ですので、本記事では、V3.0と3.1を区別する必要がない場合は、V3.xと記載します。
いろいろなサイトで調査したところ、現時点ではV2とV3.xは併記されていることが多いようです。FIRSTのサイトを見るとCVSS V4の仕様検討が進んでいるようです。

CVSSの3つのスコア

CVSS評価基準には3つのスコアがあります。

  • 基本評価基準 (Base Metrics):脆弱性そのものの特性を評価
  • 現状評価基準 (Temporal Metrics):脆弱性をとりまく状況を評価
  • 環境評価基準 (Environmental Metrics):脆弱性を利用する環境における重要度を評価

このうち、基本評価基準は脆弱性を公表している機関や各ベンダーが算出して公表しています。
脆弱性を公表している機関とは具体的に、IPANISTのことなどを指します。

現状評価基準も基本評価基準と同様、ベンダーが記載している場合がありますが、基本的には時間の経過とともに変化する指標ですので、現時点でのものかどうかは判断する必要があります。また、ベンダーサイトの情報を踏まえ、ユーザが必要に応じて算出する場合もあります。

環境評価基準は利用者の環境や被害を受けた際の二次的被害の大きさを踏まえた上での評価ですので、ユーザ自身で評価する値です。

各評価基準では、複数の項目を評価し値が算出されます。算出には複数の団体で公開されているCVSS計算ツールが便利です。JVN iPediaのCVSS計算ソフトウェア多国語版は、日本語がサポートされているので使いやすいです。

今回は各項目についての詳細は説明しませんが、興味がある方は、IPAのサイトが非常にわかりやすかったのでご紹介します。
IPA - 共通脆弱性評価システムCVSS概説
IPA - 共通脆弱性評価システムCVSS v3概説

各サイトのCVSS

各サイトでCVSS値がどこにどのように記載されているかを見てみます。例として昨年末に世間を騒がせたApatch Log4jの脆弱性(CVE-2021-44228)のCVSS値を確認します。(スクリーンショットは2022/12/20現在のページですので、実際の画面と異なる場合があります。)

NIST - National Vulnerability Database

NIST(National Institute of Standards and Technology)が運営するNational Vulnerability Databaseで確認してみます。このページは、MITREサイトのCVE-2021-44228からリンクがありますので、脆弱性が発見された際のCVSS値を確認するには、一番アクセスしやすいページではないでしょうか。
NVDサイトのCVE-2021-44228のページはこのようになっています。

NVD上のCVE-2021-44228

基本評価基準のスコアのみ表示されています。

JVN - iPedia

JVN(Japan Vulnerability Notes)でもiPediaという脆弱性データベースがあります。こちらは、[IPA値] や[NVD値]という記載をつけて、どの組織で評価したかがわかるようになっています。
iPediaサイトのCVE-2021-44228のページはこのようになっています。

iPedia上のCVE-2021-44228

こちらもまた基本評価基準のスコアのみ表示されています。

Ubuntu - CVE reports

ベンダーサイトとしてUbuntuを例にあげます。バージョンや優先順位等状況に応じた検索ができるようになっています。
UbuntuサイトのCVE-2021-44228のページはこのようになっています。

Ubuntu上のCVE-2021-44228

こちらは、基本評価基準のスコアのほかにパッチのリリース状況がわかるようになっています。

上手にCVSSを利用するための考察

CVSSとは、脆弱性の深刻度を0.0~10.0で数値化した指標です。セキュリティに詳しくない方でもこの指標で判断すれば、ある程度は深刻さがわかり、脆弱性への対策の優先度をつけることができるようになります。
脆弱性は年々増加傾向にあります。TECH+の記事によると、2021年にはなんと28,695件の脆弱性が公開されたようです。
TECH+ 2021年に開示された脆弱性の数は過去最大の2万8695件
これらをすべて調査して対処することはまず現実的に不可能です。ですので、脆弱性の対策の優先度を決める際のひとつの根拠として使えます。

ただし、CVSSにもいろいろデメリットがあり、単純に数値だけで優先度を決めることはあまりおすすめしません。特に基本評価基準のみで判断することは、脆弱性の固有の特性のみを評価していて、時間の経過やユーザ環境による特性を一切考慮しないことになります。

計算式上、現状評価基準が基本評価基準を超えることはありません。また。基本評価基準はそんなに高くなくても、環境評価基準では高いスコアになることもあります。各要素がどのように計算されているかを把握した上で、システム上重要な要素はなにかを決定し、優先度を決めることが大切です。
このことは、CVSS V3.1 Users Guideでも強調されています。

あとがき

今回はCVSSについてご紹介しました。
記事の中で団体名や脆弱性のデータベースのリンクを貼ってありますが、今回はあまり詳しく解説できていませんでした。これらの違い等についてまとめた結果をひとつの記事にしようと考えていますので、よろしければまた本サイトを訪問してみてください。

エンジニアノートを開始して1年が経ちました。当初は、こんなに記事を読んでくれる方がいるとは想定せず、単純に自分の知識のアウトプットの場として始めた活動でした。今ではたくさんの方に読んでいただき、大変うれしく思っています。
今後ともどうぞよろしくお願いします。