レガシーPHPのセキュリティ対策,大丈夫ですか?

第2回 CVEの読み方

この記事を読むのに必要な時間:およそ 3.5 分

PHPプロジェクトではCVEに対応したセキュリティパッチリリースを行っていません。しかし,SRA OSS Inc.社のPHP4 セキュリティ保守サービスでは,できる限りCVEに対応したサービス提供を行うようにしています。CVE番号をご覧になった方は多いと思いますが,CVEデータベースの情報の読み方をよく知っている方は少ないと思います。連載をはじめる前にCVEエントリの読み方を簡単に解説します。

CVEとは

CVEとはCommon Vulnerabilities and Exposuresの頭文字です。日本語にすると「共通の脆弱性と危険性露出」といった感じになります。前回解説したとおりCVE番号は,個別製品中の脆弱性を対象として,米国政府の支援を受けた非営利団体のMITRE社が番号を割り当てている識別子です。

CVEに登録されたエントリはCVE識別子が与えられます。CVE識別子には以下の情報が含まれます。

  • CVE識別番号(例: CVE-1999-0067)
  • エントリ(entry)または候補(candidate)の状態
  • 簡単な脆弱性と危険性露出の解説
  • 協力者へのリファレンス(例:脆弱性報告,アドバイザリなど)

正確にはCVE識別番号と呼ぶべきですが,一般にCVE番号,CVE IDなどと呼ばれています。筆者も通常はCVE番号と呼んでいます。CVE番号により同じ脆弱性は同じCVE番号で識別できるようになっています。

CVEエントリの読み方

以下はCVEエントリの見本です。見本といっても本物のCVEエントリです。これは2011/5/17にリリースされたFlash Media ServerのCVE-2011-0612です。アタックベクタ(攻撃経路)は不明ですが,リモートからXMLデータを破壊できる脆弱性あるとするエントリです。

CVEエントリだけではどのような脆弱性か分かりません。CVEのエントリに対する分析は米国の機関であるNISTのNVD(National Vulerability Database)で確認できます。MITREのCVEエントリの「Lean more at National Vulnerability Database (NVD)」と書いてある部分をクリックするとNISTのNVDを参照できます。

NISTのNVDにはさまざまな情報が掲載されていますが,特に重要な部分は最初のOverviewとImpactの部分です。

OverviewとImpact

Overviewは名前の通り脆弱性情報の概要です。脆弱性の概要と影響する範囲が簡潔に記載されています。

Impactは脆弱性の影響です。さまざまな脆弱性の危険性や攻撃の難易度などを数値化および分類化しています。詳しい計算方法を覚える必要はありませんが,数値がどのような意味を持っているか,分類がどのような分類かは理解しておいたほうがよいです。

  • CVSS v2 Base Score ─ CVSS基本値。CVSS(Common Vulnerability Scoring System)の脆弱性が持つ危険性のスコア
  • Impact Subscore ─ 影響度。攻撃が成功した場合の深刻度のスコア
  • Exploitability Subscore ─ 攻撃容易性。攻撃の難易度のスコア

これらのスコアはそれぞれ,0から10.0までの値を持っています。10.0は最も深刻な脆弱性です。CVSSにはVersion1とVersion2があり,現在はVersion2が利用されています。CVSSは以下のように計算されます。

  • CVSS 基本値 = ((0.6×影響度)+(0.4×攻撃容易性)-1.5)×f(影響度)

CVSS Version2の計算方法は比較的複雑なので,詳しく知りたい方はIPAの共通脆弱性評価システムCVSS概説を参照してください。これらの計算式からCVSS基本値が計算され,脆弱性の危険性が計算されます。

CVSS 基本値の値と脆弱性の危険性

低(Low)0.0 ~ 3.9
中(Medium)4.0 ~ 6.9
高(High)7.0 ~ 10.0

CVSSは脆弱性の危険性の目安となりますが,実際に利用しているシステムの危険性とは直接は関係ありません。脆弱な機能を利用していなければ脆弱性の影響を受けませんし,スコアが低くても脆弱な機能を利用していれば影響を受けます。

CVSSでは脆弱性の特徴が一目で判別できるようにCVSS基本値の横に記号が記載されています。この脆弱性の場合は次のような記号です。

(AV:N/AC:L/Au:N/C:N/I:N/A:P) (legend)

この記号は「分類名:分類の値」⁠/⁠で区切った形式になっています。次のような意味を持っています。

AVアクセスベクタ(AccessVector)関連する攻撃の範囲値: L = ローカル, A = 近隣のネットワーク, N = ネットワーク
ACアクセス難易度(AccessComplexity)攻撃に必要とされる複雑性値: H = 高, M = 中, L = 低
Au認証(Authentication)必要とされる認証値: N= 不要, S= 単一の認証, M= 複数の認証
C機密性への影響(ConfImpact)値: N = 無し, P = 部分的, C = 完全
I完全性への影響(IntegImpact)値: N = 無し, P = 部分的, C = 完全
A可用性への影響(AvailImpact)値: N = 無し, P = 部分的, C = 完全

つまり

(AV:N/AC:L/Au:N/C:N/I:N/A:P) (legend)

  • アクセスベクタ ― ネットワーク
  • アクセス難易度 ― 低
  • 認証の必要性 ― 無し
  • 機密性への影響 ― 無し
  • 完全性への影響 ― 無し
  • 可用性への影響 ― 部分的

となっています。

著者プロフィール

大垣靖男(おおがきやすお)

University of Denver卒。同校にてコンピュータサイエンスとビジネスを学ぶ。株式会社シーエーシーを経て,エレクトロニック・サービス・イニシアチブ有限会社を設立。
オープンソース製品は比較的古くから利用し,Linuxは0.9xのころから利用している。オープンソースシステム開発への参加はエレクトロニック・サービス・イニシアチブ設立後から。PHPプロジェクトでは,PostgreSQLモジュールのメンテナンスを担当している。

URLhttp://blog.ohgaki.net/

著書

コメント

コメントの記入