(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-16
(45)【発行日】2024-12-24
(54)【発明の名称】脆弱性評価装置、脆弱性評価方法、および、脆弱性評価プログラム
(51)【国際特許分類】
G06F 21/57 20130101AFI20241217BHJP
【FI】
G06F21/57 370
(21)【出願番号】P 2023565697
(86)(22)【出願日】2021-12-06
(86)【国際出願番号】 JP2021044770
(87)【国際公開番号】W WO2023105590
(87)【国際公開日】2023-06-15
【審査請求日】2024-04-25
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110001807
【氏名又は名称】弁理士法人磯野国際特許商標事務所
(72)【発明者】
【氏名】佐藤 諒平
【審査官】塩澤 如正
(56)【参考文献】
【文献】特開2019-212143(JP,A)
【文献】特開2021-144639(JP,A)
【文献】磯部義明,サイバーインシデントの損害発生モデルシミュレータによるサイバーリスク評価手法の提案,研究報告コンピュータセキュリティ(CSEC),日本,情報処理学会,2018年12月06日,2018-CSEC-83巻, 3号,pp.1-7,ISSN 2188-8655
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
(57)【特許請求の範囲】
【請求項1】
脆弱性評価装置は、モデル生成部と、モデル評価部とを有しており、
前記モデル生成部は、
データベースから公開された脆弱性データおよび公開された攻撃用コードをそれぞれ取得し、
取得した各脆弱性データの公開時点から、その脆弱性を悪用するための攻撃用コードの公開時点までの経過時間の分布として、取得した各脆弱性データの公開時点からの経過時間に応じて脆弱性が悪用される確率を示す悪用確率を求める計算モデルを作成し、
前記悪用確率を求める計算モデルとして、経過時間の分布に加えて、全脆弱性データのサンプル数と、攻撃用コードにより悪用可能な脆弱性データのサンプル数の割合をもとに、評価したい脆弱性が将来的に悪用される確率である将来悪用確率を計算し、
前記モデル評価部は、
評価したい脆弱性データの公開時点からの経過時間の入力を受け、前記モデル生成部が作成した計算モデルをもとに、入力された経過時間に対応する悪用確率を求める
処理として、入力された経過時間と、経過時間が従う分布とにより計算した結果の値、および、将来悪用確率の値の積算により、脆弱性が悪用される確率を示す悪用確率を求めることを特徴とする
脆弱性評価装置。
【請求項2】
脆弱性評価装置は、モデル生成部と、モデル評価部とを有しており、
前記モデル生成部は、
データベースから公開された脆弱性データおよび公開された攻撃用コードをそれぞれ取得し、
取得した各脆弱性データの公開時点から、その脆弱性を悪用するための攻撃用コードの公開時点までの経過時間の分布
をワイブル分布により近似して、取得した各脆弱性データの公開時点からの経過時間に応じて脆弱性が悪用される確率を示す悪用確率を求める計算モデルを作成し、
前記モデル評価部は、
評価したい脆弱性データの公開時点からの経過時間の入力を受け、前記モデル生成部が作成した計算モデルをもとに、入力された経過時間に対応する悪用確率を求めることを特徴とする
脆弱性評価装置。
【請求項3】
前記脆弱性評価装置は、さらに、危殆化評価部を有しており、
前記危殆化評価部は、
複数の脆弱性の依存関係が含まれるネットワークモデルに対して、前記モデル生成部が作成した前記悪用確率を求める計算モデルを適用することで、前記ネットワークモデルに含まれる各脆弱性の悪用確率を計算し、その計算結果から、入力された攻撃者の最終目標が達成される確率である危殆化確率を計算することを特徴とする
請求項1
または請求項2に記載の脆弱性評価装置。
【請求項4】
脆弱性評価装置は、モデル生成部と、モデル評価部とを有しており、
前記モデル生成部は、
データベースから公開された脆弱性データおよび公開された攻撃用コードをそれぞれ取得し、
取得した各脆弱性データの公開時点からその脆弱性を悪用するための攻撃用コードの公開時点までの経過時間の分布として、取得した各脆弱性データの公開時点からの経過時間に応じて脆弱性が悪用される確率を示す悪用確率を求める計算モデルを作成し、
前記悪用確率を求める計算モデルとして、経過時間の分布に加えて、全脆弱性データのサンプル数と、攻撃用コードにより悪用可能な脆弱性データのサンプル数の割合をもとに、評価したい脆弱性が将来的に悪用される確率である将来悪用確率を計算し、
前記モデル評価部は、
評価したい脆弱性データの公開時点からの経過時間の入力を受け、前記モデル生成部が作成した計算モデルをもとに、入力された経過時間に対応する悪用確率を求める
処理として、入力された経過時間と、経過時間が従う分布とにより計算した結果の値、および、将来悪用確率の値の積算により、脆弱性が悪用される確率を示す悪用確率を求めることを特徴とする
脆弱性評価方法。
【請求項5】
脆弱性評価装置は、モデル生成部と、モデル評価部とを有しており、
前記モデル生成部は、
データベースから公開された脆弱性データおよび公開された攻撃用コードをそれぞれ取得し、
取得した各脆弱性データの公開時点からその脆弱性を悪用するための攻撃用コードの公開時点までの経過時間の分布
をワイブル分布により近似して、取得した各脆弱性データの公開時点からの経過時間に応じて脆弱性が悪用される確率を示す悪用確率を求める計算モデルを作成し、
前記モデル評価部は、
評価したい脆弱性データの公開時点からの経過時間の入力を受け、前記モデル生成部が作成した計算モデルをもとに、入力された経過時間に対応する悪用確率を求めることを特徴とする
脆弱性評価方法。
【請求項6】
コンピュータを、請求項1ないし
請求項3のいずれか1項に記載の脆弱性評価装置として機能させるための脆弱性評価プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、脆弱性評価装置、脆弱性評価方法、および、脆弱性評価プログラムに関する。
【背景技術】
【0002】
セキュリティメトリクス(Security Metrics)は、セキュリティの定量化・数値化を目的とした評価尺度である。情報システムのセキュリティ対策を正しく効率的におこなうためには、システムのセキュリティリスクをセキュリティメトリクスによって定量的かつ正確に評価することが不可欠である。
【0003】
一般に、サイバー攻撃は複数の単位攻撃を数珠つなぎに実行することで実現される(マルチステップ攻撃)。ここで単位攻撃とは、システムに内在する脆弱性を悪用(Exploit)し、ホストの操作権限やアクセス権限を不正に得るなどの攻撃である。したがって、システム全体のセキュリティリスク算出のためには、単位攻撃の成功確率を正確に求める必要がある。
【0004】
外部からの不正アクセスで侵入してから、対象アセットまでの攻撃経路(攻撃手順)を知ることは、セキュリティリスクを知る上で重要となる。そのため、攻撃経路を網羅的に記述したグラフとして、AG(Attack Graph)が知られている。AGの各ノードはシステムの状態を示し、AGの各エッジ(ノード間のリンク)は単位攻撃を示す。
また、AGの表現形式は、エッジの重みを考慮しないState-based AGと、そのState-based AGに対してエッジに「単位攻撃の成功確率」を与えたBAG(Bayesian AG)とに分類される。情報システムのBAGを作成することで、評価対象である情報資産のリスク確率の算出が可能となる。
【0005】
非特許文献1では、BAGやその解析手法を明確かつ詳細に定義している。さらに、非特許文献1では、専門家の主観または共通脆弱性評価システム(CVSS:Common Vulnerability Scoring System)をもとに、BAGに付与する「単位攻撃の成功確率」を計算している。
CVSSは、脆弱性について悪用の難易度や機密性・完全性・可用性への影響などを総合的に評価し、その危険度・深刻度に応じたスコア(0~10の実数値)を付与する世界共通の評価尺度である。CVSSでは、さまざまな評価尺度(要素スコア)を考慮し、専用の計算式によって最終スコアを算出する。
【先行技術文献】
【非特許文献】
【0006】
【文献】N. Poolsappasit, R. Dewri and I. Ray, “Dynamic Security Risk Management Using Bayesian Attack Graphs,” IEEE Transactions on Dependable and Secure Computing, vol. 9, no. 1, pp. 61-74, 2012.
【発明の概要】
【発明が解決しようとする課題】
【0007】
単位攻撃の成功確率は、外部からの攻撃者が、システムに内在する各脆弱性を悪用できる確率(脆弱性の悪用確率)ともいえる。よって、セキュリティリスクの評価精度を向上させるためには、評価の計算に使用される脆弱性の悪用確率の精度を向上させる必要がある。しかし、非特許文献1などの従来の技術では、脆弱性の悪用確率を高精度に計算する手法は提案されていない。
例えば、非特許文献1ではCVSSにもとづいた悪用確率の計算式を(数式1)のように定めている。
悪用確率=2×B_AV(access vector)×B_AC(access complexity)×B_AU(authentication) …(数式1)
【0008】
しかし、(数式1)は、システムの攻撃容易性(深刻度)を大まかに数値化しただけであり、脆弱性の悪用確率とは関係ないため、この深刻度を脆弱性の悪用確率として用いる場合には精度は良くない。
また、脆弱性が発見・公開されてから時間が経過するに伴って、脆弱性を悪用するための攻撃ツール(コードやスクリプト)が不特定多数のハッカーによって開発・公開されやすくなり、脆弱性の悪用確率は上がってしまう。よって、脆弱性の悪用確率の精度を向上させるには、時間の経過も考慮する必要がある。
【0009】
一方、専門家が手動で1つ1つの脆弱性に対して悪用確率を入力する方式では、確率の精度が専門家の技量に依存し、客観性や一意性が失われる。また、日々更新される多量の脆弱性情報すべてに対して人手で確率を付与するのは人的稼働コストが非常に高く、非現実的である。
【0010】
そこで、本発明は、脆弱性の評価精度を高めることを主な課題とする。
【課題を解決するための手段】
【0011】
前記課題を解決するために、本発明の脆弱性評価装置は、以下の特徴を有する。
本発明は、脆弱性評価装置が、モデル生成部と、モデル評価部とを有しており、
前記モデル生成部が、
データベースから公開された脆弱性データおよび公開された攻撃用コードをそれぞれ取得し、
取得した各脆弱性データの公開時点から、その脆弱性を悪用するための攻撃用コードの公開時点までの経過時間の分布として、取得した各脆弱性データの公開時点からの経過時間に応じて脆弱性が悪用される確率を示す悪用確率を求める計算モデルを作成し、
前記悪用確率を求める計算モデルとして、経過時間の分布に加えて、全脆弱性データのサンプル数と、攻撃用コードにより悪用可能な脆弱性データのサンプル数の割合をもとに、評価したい脆弱性が将来的に悪用される確率である将来悪用確率を計算し、
前記モデル評価部が、
評価したい脆弱性データの公開時点からの経過時間の入力を受け、前記モデル生成部が作成した計算モデルをもとに、入力された経過時間に対応する悪用確率を求める処理として、入力された経過時間と、経過時間が従う分布とにより計算した結果の値、および、将来悪用確率の値の積算により、脆弱性が悪用される確率を示す悪用確率を求めることを特徴とする。
【発明の効果】
【0012】
本発明によれば、脆弱性の評価精度を高めることができる。
【図面の簡単な説明】
【0013】
【
図1】本実施形態に関するモデル生成装置の構成図である。
【
図2】本実施形態に関する計算モデル構築部の詳細な構成図である。
【
図3】本実施形態に関するモデル評価装置の構成図である。
【
図4】本実施形態に関する危殆化評価装置の構成図である。
【
図5】本実施形態に関する脆弱性評価システムの各装置のハードウェア構成図である。
【
図6】本実施形態に関するデータベースに格納されたサンプル集合の関係を示すベン図である。
【
図7】本実施形態に関する
図6の各サンプルからデータ処理部が生成するテーブルである。
【
図8】本実施形態に関する確率分布構築部の計算結果の一例を示すグラフである。
【
図9】本実施形態に関する
図8のグラフの記述統計量を示すテーブルである。
【
図10】本実施形態に関するワイブル分布を説明するためのグラフである。
【
図11】本実施形態に関するワイブル分布による近似を説明するためのグラフである。
【
図12】本実施形態に関するワイブル分布F+による近似を説明するためのグラフである。
【
図13】本実施形態に関するワイブル分布F-による近似を説明するためのグラフである。
【
図14】先行手法と本実施形態の手法とを比較するための実験結果を示すグラフである。
【
図15】先行手法と本実施形態の手法とを比較するための実験結果を示すグラフである。
【
図16】本実施形態に関する危殆化評価装置を評価した結果を示すグラフである。
【発明を実施するための形態】
【0014】
以下、本発明の一実施形態について、図面を参照して詳細に説明する。
本実施形態の脆弱性評価システムは、
図1のモデル生成装置1と、
図3のモデル評価装置2と、
図4の危殆化(Compromise)評価装置3を有する。なお、これらの脆弱性評価システムの各装置は、脆弱性評価装置という同じ筐体に収容してもよい。脆弱性評価装置は、モデル生成装置1の機能を有するモデル生成部と、モデル評価装置2の機能を有するモデル評価部と、危殆化評価装置3の機能を有する危殆化評価部との一部または全部を備える。
【0015】
図1は、モデル生成装置1の構成図である。
モデル生成装置1は、データベース10と、データ処理部13と、計算モデル構築部14と、計算モデル出力部15とを有する。
データベース10は、インターネットなどから収集したサンプル(以下、DB(Data Base)サンプル)を、脆弱性データ格納部11および攻撃用コード格納部12に格納する。
【0016】
なお、モデル生成装置1は、実在するデータベース10のDBサンプル(実データ)を用いてモデルを生成する。そのため、DBサンプルが手元にない場合には各自で収集し、脆弱性データ格納部11および攻撃用コード格納部12に格納する必要がある。また、モデルの素材となるDBサンプル数はできる限り多い方が望ましい。
また、データベース10のDBサンプルから、脆弱性データの数や範囲を任意に限定して用いることも可能である。例えば、「近年の動向を分析するために脆弱性の公開日が2017年以降のものだけに限定する」などである。
【0017】
脆弱性データ格納部11は、脆弱性の集合「V」を格納する。「脆弱性」とは、情報セキュリティ上の欠陥である。以下、ある脆弱性を「v」とし、それらの「v」が含まれる脆弱性の集合を「V」とする(v∈V)。脆弱性を修正するためには、OSのアップデートや専用のセキュリティパッチの適用などが必要となる。
脆弱性データ格納部11は、例えば、NVD(National Vulnerability Database)として構築される。発見された主要な脆弱性は、世界的に一意な識別子である共通脆弱性識別子(CVE-ID:Common Vulnerabilities and Exposures-ID)が付されて、NVD内のサンプルとして登録される。NVDには、2021/8/28時点で、169,371件の脆弱性が登録されている。
【0018】
攻撃用コード格納部12は、攻撃用コードの集合「ε」を格納する。「攻撃用コード」とは、脆弱性を攻撃するためのコードやツールである。以下、ある攻撃用コードを「e」とし、それらの「e」が含まれる攻撃用コードの集合を「ε」とする(e∈ε)。攻撃者は、攻撃用コードを用いて、脆弱性を攻撃するという「悪用」行為を行う。なお、「悪用」や、その悪用に用いられる攻撃用コードは、ともに「Exploit」とも呼ばれる。
攻撃用コード格納部12は、例えば、EDB(Exploit Database)として構築される。EDBには、2021/8/28時点で、44,448件の攻撃用コードが登録されている。
データ処理部13は、
図7で後記するように、データベース10のDBサンプルを、計算モデル構築部14が統計処理しやすいデータ形式に整形する。
【0019】
悪用行為についての「悪用時間Tv」とは、ある脆弱性vが脆弱性データ格納部11に公開された時点から、その脆弱性が悪用される時点までの経過時間である。「悪用時間T」とは、悪用時間Tvを任意の脆弱性に一般化したものである。
攻撃者は、攻撃用コード格納部12に公開された攻撃用コードの公開日に、その攻撃用コードをすぐ悪用することが想定される。よって、本実施形態では、「脆弱性vの公開から、その脆弱性vを攻撃可能な攻撃用コードeの公開までの時間Tv」を悪用時間Tvとみなす。
なお、脆弱性vが攻撃用コードを持たない場合は、悪用時間Tvは定義されない。脆弱性vが複数の攻撃用コードを持つ場合は最小値などの代表値を悪用時間Tvとして選択する。
【0020】
以下、脆弱性vが攻撃用コードeを持つか否かを示すパラメータEvを定義する。Ev=1なら脆弱性vが攻撃用コードeを持ち、Ev=0なら脆弱性vが攻撃用コードeを持たない。
また、脆弱性vが攻撃用コードeを持つか否かを示すパラメータEvを一般化し、任意の脆弱性の悪用可能性を示すパラメータEとする。E=1なら任意の脆弱性がいずれ(将来のどこかの時点で)悪用される可能性があり、E=0ならその可能性はない。
【0021】
以下、モデル生成装置1は、データベース10に登録済のDBエントリから、個別の脆弱性vの悪用時間Tvの統計的特徴を一般化したモデルを生成する。このモデルは、現在に存在する任意の脆弱性の悪用確率p(t)を求めるためのモデルである。
「悪用確率p(t)」とは、評価したい任意の脆弱性について、公開日からある時点tにおいて攻撃者に悪用されうる確率である。時点tの単位(例,日,時,分,秒)は利用者が任意に決めてよいが、元のデータから取得可能な粒度でなくてはならない。
【0022】
なお、脆弱性v1,v2,v3…が同じ日に脆弱性データ格納部11に公開されたとしても、それらの脆弱性v1,v2,v3…の悪用時間は、それぞれ異なることも起こりうる。
例えば、脆弱性v1を攻撃する攻撃用コードe1が脆弱性v1の公開日から1日後に、攻撃用コード格納部12に公開されたとする。そして、脆弱性v2の攻撃用コードe2が3日後に公開され、脆弱性v3の攻撃用コードe3が5日後に公開されたとする。この場合、悪用時間は、v1が最も短く,v2,v3の順に長くなる。
【0023】
図2は、計算モデル構築部14の詳細な構成図である。
モデル生成装置1の計算モデル構築部14は、データベース10内のDBサンプルを統計処理することで、悪用確率p(t)を、以下の2つの要素(1)、(2)としてモデル化する。
【0024】
(1)将来悪用確率計算部14Aは、
図6で後記するように、データベース10内のDBサンプル数をもとに、将来悪用確率pLを計算する。将来悪用確率pLとは、現在評価したい脆弱性について、いずれ(将来的に)攻撃用コードが不特定多数のハッカーによって開発・公開されることで悪用されうる脆弱性となる(E=1となる)確率である。
【0025】
(2)確率分布構築部14Bは、
図8で後記するように、過去の悪用時間T(実測値)が従う確率分布の累積分布関数F(t)を計算し、その結果を
図3の確率分布計算部22Bに格納する。累積分布関数F(t)は、将来悪用確率計算部14Aがいずれ悪用されうる(E=1となる)と判断した脆弱性についての、公開されてから時刻tまでに悪用される条件付き確率をあらわす。
【0026】
つまり、確率分布構築部14Bは、データベース10から公開された脆弱性データおよび公開された攻撃用コードをそれぞれ取得する。そして、確率分布構築部14Bは、取得した各脆弱性データの公開時点からその脆弱性を悪用するための攻撃用コードの公開時点までの経過時間の分布として、取得した各脆弱性データの公開時点からの経過時間に応じて脆弱性が悪用される確率を示す悪用確率を求める計算モデルを作成する。
そして、将来悪用確率計算部14Aは、悪用確率を求める計算モデルとして、確率分布構築部14Bが作成する悪用時間の分布に加えて、全脆弱性データのサンプル数と、攻撃用コードにより悪用可能な脆弱性データのサンプル数の割合をもとに、評価したい脆弱性が将来的に悪用される確率である将来悪用確率を計算する。
【0027】
図3は、モデル評価装置2の構成図である。
モデル評価装置2は、評価したい脆弱性データの公開時点からの経過時間の入力を受け、モデル生成装置1が作成した計算モデルをもとに、入力された経過時間に対応する悪用確率を求める。そのため、モデル評価装置2は、経過時間入力部21と、将来悪用確率格納部22Aと、確率分布計算部22Bと、積算部23と、悪用確率出力部24とを有する。
【0028】
経過時間入力部21は、経過時間tの入力を受け、確率分布計算部22Bに通知する。
将来悪用確率格納部22Aは、将来悪用確率計算部14Aが計算した将来悪用確率pLを格納する。
確率分布計算部22Bは、確率分布構築部14Bが計算した過去の悪用時間Tv(実測値)が従う確率分布の累積分布関数F(t)を格納する。そして、確率分布計算部22Bは、評価したい脆弱性の公開日から今日までの経過時間tの入力を受け、経過時間tを累積分布関数F(t)に代入することで、評価したい脆弱性のF(t)を計算する。
【0029】
積算部23は、(将来悪用確率格納部22Aから読み込んだ)将来悪用確率pL×(確率分布計算部22Bから読み込んだ)累積分布関数F(t)の積を計算することで、悪用確率p(t)を求める。
つまり、モデル評価装置2は、入力された経過時間tと、経過時間が従う分布(確率分布Fなど)とにより計算した結果である累積分布関数F(t)の値、および、将来悪用確率pLの値の積算により、脆弱性が悪用される確率を示す悪用確率p(t)を求める。
悪用確率出力部24は、積算部23が求めた悪用確率p(t)を出力する。
【0030】
以下、モデル評価装置2の計算例を示す。
例えば、今日を2021年9月13日だと仮定する。ある情報システムに脆弱性検知ツールを適用し、以下の脆弱性(A)、(B)、(C)が発見されたとする。脆弱性データ格納部11(NVD)には、各脆弱性のCVE-IDと公開日とが、以下のように登録されていたとする。
(A)CVE-ID=CVE-2021-40524(2021/9/5 NVD公開)
(B)CVE-ID=CVE-2021-39181(2021/9/1 NVD公開)
(C)CVE-ID=CVE-2017-18877(2020/6/19 NVD公開)
【0031】
このとき、経過時間入力部21は、9月13日時点での脆弱性公開からの経過時間tとして、それぞれ(A)7日、(B)12日、(C)451日の入力を受け付ける。そして、確率分布計算部22Bは、これらの経過時間tをF(t)に代入すると、以下のように確率F(t)が得られる。
(A)F(7)=P{Tv≦7|Ev=1}=0.891833
(B)F(12)=P{Tv≦12|Ev=1}=0.911164
(C)F(451)=P{Tv≦451|Ev=1}=0.983493
【0032】
積算部23は、将来悪用確率格納部22Aから事前に計算された将来悪用確率pL=0.268334を読み取り、確率分布計算部22Bが計算した(A)~(C)それぞれのF(t)との積を求めることで、悪用確率p(t)とする。
(A)p(7)=pL×F(7)=0.268334×0.891833=0.239309
(B)p(12)=pL×F(12)=0.268334×0.911164=0.244496
(C)p(451)=pL×F(451)=0.268334×0.983493=0.263905
悪用確率出力部24は、積算部23が計算した悪用確率p(t)を出力する。
【0033】
図4は、危殆化評価装置3の構成図である。
危殆化評価装置3は、モデル生成装置1の計算モデル出力部15が出力した計算モデル(将来悪用確率pL、累積分布関数F(t))を要素技術として、BAGを用いたセキュリティリスク解析の精度を向上させる。そのため、危殆化評価装置3は、計算モデル出力部15が出力した計算モデルを用いて、BAGを用いた計算によって対象となる資産の危殆化確率を算出する。「危殆化」とは、例えば、資産のルート権限を奪われるなど、入力された攻撃者の最終目標が達成されることである。
【0034】
つまり、危殆化評価装置3は、複数の脆弱性の依存関係が含まれるネットワークモデル(BAG)に対して、モデル生成装置1が作成した脆弱性の悪用確率を求める計算モデルを適用することで、ネットワークモデルに含まれる各脆弱性の悪用確率を計算する。危殆化評価装置3は、その悪用確率の計算結果から、入力された攻撃者の最終目標が達成される確率である危殆化確率を計算する。
そのため、危殆化評価装置3は、システム検査部31と、BAG生成部32と、BAG解析部33とを有する。
【0035】
以下、分析者が危殆化評価装置3を用いて、システムの危殆化を分析する手順を説明する。
(手順1)システム検査部31は、解析対象となるシステムの構成管理情報や脆弱性情報などを分析者から取得する。そのため、分析者は、BAGを用いた解析を実際におこなう際の「システムの範囲」や「ターゲット(攻撃者の最終目標)」を、以下に例示するように定義する。
・管理者端末のルート権限が奪取される確率を、危殆化確率として求める。
・ユーザ端末のユーザ権限が奪取される確率を、危殆化確率として求める。
システム検査部31は、BAG生成に必要なシステム情報(例:ネットワーク情報、脆弱性情報)をBAG生成部32に出力する。
【0036】
(手順2)BAG生成部32は、計算モデル出力部15が出力した計算モデルを用いて、解析対象となるシステムのBAGを生成し、そのBAGをBAG解析部33に出力する。
(手順3)BAG解析部33は、BAGを用いた計算によって対象となる資産(例えば管理者端末)の危殆化確率(例えばルート権限を奪われる確率)を算出する。ここで、BAG生成部32が生成するBAGは、システム上に存在する脆弱性の悪用確率を高精度に求める計算モデルを含んでいるので、危殆化確率の精度も向上できる。BAGにおける脆弱性の悪用確率は、例えば、脆弱性を表すノードを突破する確率である。
【0037】
図5は、脆弱性評価システムの各装置のハードウェア構成図である。
脆弱性評価システムの各装置(モデル生成装置1と、モデル評価装置2と、危殆化評価装置3)は、CPU901と、RAM902と、ROM903と、HDD904と、通信I/F905と、入出力I/F906と、メディアI/F907とを有するコンピュータ900として構成される。
通信I/F905は、外部の通信装置915と接続される。入出力I/F906は、入出力装置916と接続される。メディアI/F907は、記録媒体917からデータを読み書きする。さらに、CPU901は、RAM902に読み込んだプログラム(アプリケーションや、その略のアプリとも呼ばれる)を実行することにより、各処理部を制御する。そして、このプログラムは、通信回線を介して配布したり、CD-ROM等の記録媒体917に記録して配布したりすることも可能である。
【0038】
図6は、データベース10に格納されたサンプル集合の関係を示すベン図である。
将来悪用確率計算部14Aは、以下に示すように、データベース10内の過去のDBエントリ数をもとに、将来悪用確率pLを計算する。
集合101は、脆弱性データ格納部11に格納されたサンプル集合を示す。集合102は、攻撃用コード格納部12に格納されたサンプル集合を示す。集合103は、集合101と集合102との積集合を示す。
集合101のサンプルは、集合103に属するサンプル(脆弱性サンプルのうち攻撃用コードを有するもの)か、集合103に属さないサンプル(脆弱性サンプルのうち攻撃用コードを有さないもの)かに分類される。
集合102のサンプルは、集合103に属するサンプル(攻撃用コードのうち脆弱性サンプルを攻撃対象としたもの)か、集合103に属さないサンプル(攻撃用コードのうち脆弱性サンプルを攻撃対象としていないもの)かに分類される。
【0039】
以下、将来悪用確率計算部14Aが将来悪用確率pLを計算する方法を(方法1)~(方法3)として例示する。
[方法1]符号100Aは、集合101の一部が集合103に属し、集合102の一部が集合103に属する場合である。全脆弱性サンプル(集合101)のうち、攻撃用コードを有するもの(集合103)の割合を、将来悪用確率pLとする(数式2)。
【0040】
【0041】
[方法2]符号100Bは、集合101の一部が集合103に属し、集合102の全部が集合103に属する場合である。全脆弱性サンプル(集合101)の数に対する、全攻撃用コードサンプル(集合102)の数の割合を、将来悪用確率pLとする(数式3)。こちらの方が、方法1よりも悲観的な見積もりになるので、リスク評価が楽観的になるのを防ぐことができる。
【0042】
【0043】
[方法3]符号100Cは、集合101,102,103が同じ集合となる場合である。すべての脆弱性がいずれ必ず悪用されるものと仮定する(数式4)。方法2よりもさらに悲観的な見積もりになる。方法3は、換言すると、悪用確率p(t)=累積分布関数F(t)となるので、モデル生成装置1の将来悪用確率計算部14Aと、モデル評価装置2の将来悪用確率格納部22Aと、積算部23とを省略できる。
pL=P{E=1}=1 …(数式4)
【0044】
例えば、集合101=169,371サンプルとし、集合102=45,448サンプルとし、集合103=9207サンプルとすると、将来悪用確率計算部14Aは、以下のように将来悪用確率pLを計算する。
[方法1]pL=9207/169,371=0.0544
[方法2]pL=45,448/169,371=0.268
[方法3]pL=1
【0045】
図7は、
図6の各サンプルからデータ処理部13が生成するテーブルである。
データ処理部13は、計算モデル構築部14で処理がしやすいようにデータを整理・整形する。具体的には、データ処理部13は、脆弱性データ格納部11のサンプルごとに、脆弱性vの公開日時を取得する。また、データ処理部13は、攻撃用コード格納部12のサンプルごとに、攻撃用コードeの公開日時を取得する。
【0046】
そして、データ処理部13は、攻撃用コードeを有する脆弱性vのサンプル(
図6の集合103)に関しては、DBサンプルの公開日時情報をもとに、悪用時間Tvを計算し、
図7のテーブルの新たな属性(項目)として追加する。悪用時間Tvとは、脆弱性vの公開日時から脆弱性vへの攻撃用コードeの公開日時(公開により悪用されたとみなす日時)までの時間であり、脆弱性公開前にすでに悪用されていた場合、悪用時間Tvは負数になる。
なお、攻撃用コードの公開日時と実際に攻撃用コードが開発された開発日時とは、誤差がある可能性がある。実際の開発日時が入手可能なら、データ処理部13は、開発日時を用いてより正確な「悪用時間」を求めてもよい。
【0047】
ここで、脆弱性vと攻撃用コードeとの対応付け処理について説明する。
NVDの脆弱性サンプルは、対応する攻撃用コードがEDBに存在する場合、その参照リンクを有する。よって、NVDおよびEDBをソースとする場合には、データ処理部13は、例えばNVDからEDBへの参照リンクを用いてデータを統合できる。
つまり、NVDに公開された脆弱性の中でEDBへの参照リンクを持つものを「攻撃用コードを入手可能な(悪用された)」脆弱性と仮定する。また、複数の攻撃用コードを参照している場合は、公開日時が最も早いものを採用する。
一方、脆弱性情報と攻撃用コード情報とを別々のソース(情報源)から取得する場合には、データ処理部13は、これらのデータを統合するための属性(例、一方からもう一方への参照リンク、双方に共通する識別子)が上記の属性に加えて別途必要である。
【0048】
以上により、
図7のテーブル内のエントリは、以下の3種類に分類される。
(1)攻撃用コードを持たない脆弱性サンプル
(2)対応する脆弱性が不明の攻撃用コードサンプル
(3)攻撃用コードを有する脆弱性サンプル(
図6の集合103に該当し、
図7はすべてこの分類)
確率分布構築部14Bは、(3)の脆弱性サンプルに関する悪用時間Tvの確率分布を求め、その結果を任意の脆弱性に関する悪用時間の確率分布Fとして一般化する。
【0049】
図8は、確率分布構築部14Bの計算結果の一例を示すグラフである。
図9は、
図8のグラフ112の記述統計量を示すテーブルである。
グラフ111は、確率分布Fの確率質量関数(PMF:Probability Mass Function)であるf(t)を示す。
グラフ112は、確率分布Fの累積分布関数(CDF:Cumulative Distribution Function)であるF(t)を示す。
確率分布構築部14Bは、(数式5)を用いてf(t)を計算し、(数式6)を用いてF(t)を計算する。
【0050】
【0051】
以上、
図9までに説明したように、確率分布構築部14Bは、DBサンプルの実測値をもとに作成したモデル(実測モデル)として、計算モデル(確率分布F)を作成した。この実測モデルは、充分なDBサンプル数が取得できる場合には、高精度に計算できる。
【0052】
一方、DBサンプル数が充分でないときの実測モデルでは、PMFが振動し、CDFであるF(t)も滑らかでなくなることで、確率分布Fの精度も不充分となることもある。換言すると、DBサンプル数が充分でないときには、任意の確率分布による近似モデルを用いた方がより精度よく(妥当に)確率計算ができることがある。
そこで、確率分布構築部14Bは、確率分布Fの実測モデルの代わりに、確率分布Fを任意の確率分布によって近似し、その近似モデルのCDFをF(t)の代わりに用いてもよい。以下、確率分布構築部14Bが、ワイブル分布(Weibull Distribution)を近似モデルとし、そのCDFであるG(t)を作成する例を説明する。
【0053】
図10は、ワイブル分布を説明するためのグラフである。
ワイブル分布は、一般に、製品等の故障時間(つまり、製品寿命)が従う分布として知られる。ワイブル分布の強度関数(数式7)は、時刻tにおける(刹那的な)故障率を示す。この故障率は、故障の発生確率ではなく、単位時間あたりの故障の発生頻度を表す。ワイブル係数mの値によって、故障率λ(t)は以下のように振る舞いを変える。
なお、ワイブル分布は、(数式7)で示される2つのワイブルパラメータ「m,η」によって決定される。mは、ワイブル係数(形状パラメータ)であり、ηは尺度パラメータである。
【0054】
【0055】
ワイブル係数m<1のときのグラフ121では、バスタブ曲線の左端のように、故障率が時間経過とともに減少する。このグラフ121は、初期的故障(初期不良による故障)のモデル化などに利用される。
ワイブル係数m=1のとき(このとき、ワイブル分布は指数分布と同値である)のグラフ122では、バスタブ曲線の中間部分のように、故障率が時間経過に依らず一定である。このグラフ122は、災害や事故による故障などの偶発的故障のモデル化などに利用される。
ワイブル係数m>1のときのグラフ123では、バスタブ曲線の右端のように、故障率が時間経過とともに増加する。このグラフ123は、経年劣化による故障などの摩耗的故障のモデル化などに利用される。
【0056】
ワイブル分布の近似モデルでは、まず確率分布Fを脆弱性の悪用時間T>0の領域とT<0の領域とに分けて考える。まず、悪用時間T>0となる確率分布F+について、そのPMFであるf+(t)を(数式8)に示し、そのCDFであるF+(t)を(数式9)に示す。
【0057】
【0058】
次に、悪用時間T<0となる確率分布F-について、そのPMFであるf-(t)を(数式10)に示し、そのCDFであるF-(t)を(数式11)に示す。ただし、確率分布F-はTの絶対値の分布であり、定義域は正数である。
【0059】
【0060】
ワイブルパラメータを用いたワイブル分布のPMFであるh(t)を(数式12)に示し、そのCDFであるH(t)を(数式13)に示す。
【0061】
【0062】
確率分布構築部14Bは、ワイブルプロット(Weibull Plot)の計算により、実測値に最も適したワイブルパラメータ「m,η」を特定する。以下、ワイブルプロットの計算式を説明する。
まず、CDFについて(数式14)とすると、「Y=mX-m ln η」が成り立つ。そして、実測値から求められるYに対して線形近似を行い、その直線の傾きからパラメータmを特定できる。その後、(数式15)にmを代入することで、パラメータηを特定できる。
【0063】
【0064】
図11は、ワイブル分布による近似を説明するためのグラフである。
グラフ131は、正の領域Tv>0に属するDBサンプルについて、ワイブルプロットの実行結果である。
グラフ132は、負の領域Tv<0に属するDBサンプルについて、ワイブルプロットの実行結果である。
テーブル133は、グラフ131と、グラフ132とでそれぞれ求められたワイブルパラメータ「m,η」を示す。
【0065】
図12は、ワイブル分布G+による確率分布F+の近似を説明するためのグラフである。
グラフ141は、ワイブル分布G+による近似線(PDF)、および、その近似線の計算に使用された実測値(PMF)を示す。
グラフ142は、ワイブル分布G+のCDFを示す。
【0066】
図13は、ワイブル分布G-による確率分布F-の近似を説明するためのグラフである。
グラフ143は、ワイブル分布G-による近似線(PDF)、および、その近似線の計算に使用された実測値(PMF)を示す。
グラフ144は、ワイブル分布G-のCDFを示す。
【0067】
確率分布構築部14Bは、ワイブルプロットによって、分布F+を近似するワイブル分布の最適なワイブルパラメータ「m+,η+」を求める。同様に、ワイブルプロットによって、分布F-を近似するワイブル分布の最適なワイブルパラメータ「m-,η-」を求める。これによって、分布F+を近似する最適なワイブル分布G+を、(数式16)により得られる。また、分布F-を近似する最適なワイブル分布G-を、(数式17)により得られる。
【0068】
【0069】
このとき、確率分布構築部14Bは、F(t)を代替するG(t)を(数式18)により計算する。
【0070】
【0071】
ただしここで、(数式18)のp-,p0,p+はそれぞれ悪用時間が負数、0、正数になる確率を示す(数式19)。
【0072】
【0073】
以上、
図13までを参照して、本実施形態の脆弱性評価システムを説明した。以下では、脆弱性評価システムの有効性を評価した実験結果を説明する。
【0074】
図14、
図15は、実験結果を示すグラフである。
まず、実験環境は、以下の通りである。
・非特許文献1のテストネットワークを用い、非特許文献1のFig.1に示されたネットワークの各ホストに非特許文献1のTab.1の各種脆弱性が存在していると仮定した。ただし、「CA 1996-83」という脆弱性に関する情報が出てこなかったので、ここではCVE-2006-4958 で代用している。
・非特許文献1のテストネットワークに関するBAGも引用した。非特許文献1のテストネットワークをBAGに書き起こすと、非特許文献1のFig.2のようになる。
・テストネットワークの危殆化の条件として、攻撃者の最終目標:Admin Machine(10.0.0.128)のルート権限の奪取とした。攻撃者が存在すると仮定した場合における Admin Machineの危殆化確率を算出した。
・各脆弱性について、2000年から2010年までの3ヶ月ごとの悪用確率を算出した。実験結果のグラフ201~205では、横軸を日とし、縦軸をシステムが計算した悪用確率とする。
【0075】
図14のグラフ201~205および
図15のグラフ211~215は、それぞれ対象とする脆弱性が異なる。例えば、グラフ201は、CVE-ID=CVE-2006-4958の脆弱性の実験結果である。そして、グラフ201~205およびグラフ211~215には、それぞれ、以下の3種類の実験結果を示す線が記載されている。
・先行手法として、非特許文献1で示されるように、CVSSにもとづいた悪用確率の計算式(数式1)を用いる手法。
・本実施形態の第1の手法として、確率分布構築部14Bが、実測値の確率分布のCDFであるF(t)を用いる手法。
・本実施形態の第2の手法として、確率分布構築部14Bが、近似線、すなわちワイブル分布のCDFであるG(t)を用いる手法。
【0076】
以下、
図14、
図15の各グラフから読み取れる事項を列挙する。
・非特許文献1の先行手法と異なり、本実施形態の実測値および近似線は、ともに、時間経過とともに悪用確率が上昇する。つまり、本実施形態の実測値および近似線は、時間の変化を考慮している。
・本実施形態の近似線は、実測値に基づくモデルをよく近似している。
・グラフ203などでは、先行手法が提案法よりも悪用確率を楽観的に(低い値に)算出してしまう。
【0077】
なお、非特許文献1で用いられるCVSSはそもそも脆弱性の深刻度を評価するためのメトリクスであって、確率を反映するためのものではない。したがって、非特許文献1の(数式1)によって得られる値は0~1の範囲を取る「確率のように見える」値であり、確率統計学的には根拠が無い。
一方、本実施形態では、データベース10の膨大なサンプルから実際の確率分布Fを求め、その確率分布Fをもとに悪用確率p(t)を算出する。そのため、非特許文献1の手法よりも真の確率に近い(精度の良い)悪用確率p(t)を算出できる。
また、公開されて間もない脆弱性よりも、公開から時間が経過した脆弱性の方が、攻撃用コードの開発期間の長期化により、悪用されやすくなる。しかし、非特許文献1の手法ではCVSSから悪用確率を求めているため、評価時点までの時間経過が考慮させずに、常に一定の値が算出される。
【0078】
図16は、危殆化評価装置3を評価した結果を示すグラフである。
このグラフは、Admin Machine について、2000年から2010年までの3ヶ月ごとの危殆化確率を算出した結果を示す。
図14、
図15のグラフと同様に
図16のグラフでも、本実施形態の実測値および近似線は、非特許文献1の先行手法と異なり、時間の変化を考慮している。さらに、
図16のグラフでも、本実施形態の近似線は、実測値に基づくモデルをよく近似している。
【0079】
[効果]
本発明の脆弱性評価システムは、モデル生成装置1と、モデル評価装置2とを有しており、
モデル生成装置1が、
データベース10から公開された脆弱性データおよび公開された攻撃用コードをそれぞれ取得し、
取得した各脆弱性データの公開時点からその脆弱性を悪用するための攻撃用コードの公開時点までの経過時間の分布として、取得した各脆弱性データの公開時点からの経過時間に応じて脆弱性が悪用される確率を示す悪用確率を求める計算モデルを作成し、
モデル評価装置2が、
評価したい脆弱性データの公開時点からの経過時間の入力を受け、モデル生成装置1が作成した計算モデルをもとに、入力された経過時間に対応する悪用確率を求めることを特徴とする。
【0080】
これにより、モデル生成装置1は、ソフトウェアやハードウェアに内在する脆弱性について、攻撃者がそれを悪用しうる確率をデータベース10の情報をもとに統計的に算出可能な計算モデルを作成する。よって、モデル評価装置2は、脆弱性の公開からの時間経過に伴う悪用確率の増加を考慮して、評価時点での精度が高い悪用確率が得られる。さらに、専門家が自身の経験から判断して評価値を手入力する方式に比べ、自動的・機械的に計算することができ、必要な人的稼働コストを節約できる。
【0081】
本発明は、モデル生成装置1が、悪用確率を求める計算モデルとして、経過時間の分布に加えて、全脆弱性データのサンプル数と、攻撃用コードにより悪用可能な脆弱性データのサンプル数の割合をもとに、評価したい脆弱性が将来的に悪用される確率である将来悪用確率を計算し、
モデル評価装置2が、入力された経過時間と、経過時間が従う分布とにより計算した結果の値、および、将来悪用確率の値の積算により、脆弱性が悪用される確率を示す悪用確率を求めることを特徴とする。
【0082】
これにより、データベース10内の実サンプル数を参照することで、将来的に悪用される確率の大まかな傾向が計算モデルに反映される。よって、客観性および一意性が保証された、真の(精度が高い)悪用確率が得られる。
【0083】
本発明は、モデル生成装置1が、経過時間の分布をワイブル分布により近似した計算モデルを作成し、
モデル評価装置2が、経過時間の分布の代わりに、ワイブル分布により近似した計算モデルをもとに、入力された経過時間に対応する悪用確率を求めることを特徴とする。
【0084】
これにより、データベース10の実データから得られた悪用時間の分布を一般的な確率分布であるワイブル分布によって近似することによって、データベース10のサンプル数が少ない場合でも、妥当な計算モデルを構築することができる。
【0085】
本発明は、脆弱性評価システムが、さらに、危殆化評価装置3を有しており、
危殆化評価装置3が、
複数の脆弱性の依存関係が含まれるネットワークモデルに対して、モデル生成装置1が作成した脆弱性の悪用確率を求める計算モデルを適用することで、ネットワークモデルに含まれる各脆弱性の悪用確率を計算し、その計算結果から、入力された攻撃者の最終目標が達成される確率である危殆化確率を計算することを特徴とする。
【0086】
これにより、BAGのネットワークモデルでは複数の脆弱性の依存関係を考慮して最終的な危殆化確率を算出する。よって、各脆弱性の悪用確率の精度を高めることで、危殆化確率の精度も高めることができる。
【符号の説明】
【0087】
1 モデル生成装置(モデル生成部)
2 モデル評価装置(モデル評価部)
3 危殆化評価装置(危殆化評価部)
10 データベース
11 脆弱性データ格納部
12 攻撃用コード格納部
13 データ処理部
14 計算モデル構築部
14A 将来悪用確率計算部
14B 確率分布構築部
15 計算モデル出力部
21 経過時間入力部
22A 将来悪用確率格納部
22B 確率分布計算部
23 積算部
24 悪用確率出力部
31 システム検査部
32 BAG生成部
33 BAG解析部