(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】分析条件生成装置、分析システム、分析条件生成プログラム、分析プログラム、分析条件生成方法、及び分析方法
(51)【国際特許分類】
G06F 21/57 20130101AFI20240910BHJP
【FI】
G06F21/57 370
(21)【出願番号】P 2023506665
(86)(22)【出願日】2021-03-19
(86)【国際出願番号】 JP2021011367
(87)【国際公開番号】W WO2022195848
(87)【国際公開日】2022-09-22
【審査請求日】2023-07-24
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100141519
【氏名又は名称】梶田 邦之
(72)【発明者】
【氏名】上村 純平
(72)【発明者】
【氏名】磯山 和彦
(72)【発明者】
【氏名】榮 純明
【審査官】辻 勇貴
(56)【参考文献】
【文献】国際公開第2007/064516(WO,A2)
【文献】特開2018-005690(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
(57)【特許請求の範囲】
【請求項1】
分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを生成し、前記グラフ構造データに基づいて前記分析対象システムのセキュリティリスクを分析するための分析条件を生成する分析条件生成部を備
え、
前記オントロジーは、
前記ノードの種別及び前記エッジの種別を示す抽象化識別子を有し、
前記ノードの種別は、前記データフローグラフに関するプロセスと、データストアと、通信ソケットと、前記プロセス、前記データストア及び前記通信ソケット以外の外部アクターと、を含む、
分析条件生成装置。
【請求項2】
前記分析条件生成部は、
前記オントロジーに基づいて前記自然文から前記グラフ構造データを抽出する構造情報抽出部と、
前記オントロジーに基づいて、前記グラフ構造データに含まれる前記ノード及び前記エッジに関する固有識別子を前記抽象化識別子に変換する抽象化処理部と、を備える、
請求項
1に記載の分析条件生成装置。
【請求項3】
前記ノードのうち、前記プロセスを示すノードは、前記プロセスの実行権限を示す属性を有し、
前記ノードのうち、前記データストアを示すノードは、前記データストアのアクセス権限を示す属性を有する、
請求項
1又は2に記載の分析条件生成装置。
【請求項4】
前記自然文を更新する更新部を備える、
請求項1から
3のいずれか1項に記載の分析条件生成装置。
【請求項5】
前記分析条件生成部は、
前記自然文に対して前記オントロジーを用いた自然言語処理を行うことにより、前記グラフ構造データを生成する、
請求項1から
4のいずれか1項に記載の分析条件生成装置。
【請求項6】
前記自然文は、前記分析対象システムに関するセキュリティリスクを示す文字情報である、
請求項1から
5のいずれか1項に記載の分析条件生成装置。
【請求項7】
分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを抽出する構造情報抽出部と、
抽象化ルールに基づいて、前記グラフ構造データに含まれる前記ノード及び前記エッジに関する固有識別子を抽象化識別子に変換する抽象化処理部と、
前記固有識別子が前記抽象化識別子に変換された前記グラフ構造データから生成された分析条件に基づいて、前記分析対象システムにおけるセキュリティリスクを分析する分析処理部と、を備える、
分析システム。
【請求項8】
前記抽象化識別子は、
前記ノードの種別及び前記エッジの種別を示す識別子であり、
前記ノードの種別は、
前記データフローグラフに関するプロセスと、データストアと、通信ソケットと、前記プロセス、前記データストア及び前記通信ソケット以外の外部アクターと、を含み、
前記抽象化ルールは、
前記固有識別子を、前記ノードの種別及び前記エッジの種別に応じた前記抽象化識別子に変換するための情報である、
請求項
7に記載の分析システム。
【請求項9】
前記ノードのうち、前記プロセスを示すノードは、前記プロセスの実行権限を示す属性を有し、
前記ノードのうち、前記データストアを示すノードは、前記データストアのアクセス権限を示す属性を有する、
請求項
8に記載の分析システム。
【請求項10】
前記構造情報抽出部を有する第1装置と、
前記抽象化処理部と前記分析処理部とを有し、前記第1装置とは異なる第2装置とを備える、
請求項
7から
9のいずれか1項に記載の分析システム。
【請求項11】
前記第1装置は、
前記自然文を更新する更新部を有する、
請求項
10に記載の分析システム。
【請求項12】
前記構造情報抽出部は、前記自然文に対して前記オントロジーを用いた自然言語処理を行うことにより、前記グラフ構造データを抽出する、
請求項
7から
11のいずれか1項に記載の分析システム。
【請求項13】
前記自然文は、前記分析対象システムに関するセキュリティリスクを示す文字情報である、
請求項
7から
12のいずれか1項に記載の分析システム。
【請求項14】
分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを生成し、前記グラフ構造データに基づいて前記分析対象システムのセキュリティリスクを分析するための分析条件を生成することをコンピュータのプロセッサに実行さ
せ、
前記オントロジーは、
前記ノードの種別及び前記エッジの種別を示す抽象化識別子を有し、
前記ノードの種別は、前記データフローグラフに関するプロセスと、データストアと、通信ソケットと、前記プロセス、前記データストア及び前記通信ソケット以外の外部アクターと、を含む、
分析条件生成プログラム。
【請求項15】
分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを抽出することと、
抽象化ルールに基づいて、前記グラフ構造データに含まれる前記ノード及び前記エッジに関する固有識別子を抽象化識別子に変換することと、
前記固有識別子が前記抽象化識別子に変換された前記グラフ構造データから生成された分析条件に基づいて、前記分析対象システムにおけるセキュリティリスクを分析することと、をコンピュータのプロセッサに実行させる、
分析プログラム。
【請求項16】
分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを生成し、前記グラフ構造データに基づいて前記分析対象システムのセキュリティリスクを分析するための分析条件を生成することを備
え、
前記オントロジーは、
前記ノードの種別及び前記エッジの種別を示す抽象化識別子を有し、
前記ノードの種別は、前記データフローグラフに関するプロセスと、データストアと、通信ソケットと、前記プロセス、前記データストア及び前記通信ソケット以外の外部アクターと、を含む、
コンピュータにより実行される分析条件生成方法。
【請求項17】
分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを抽出することと、
抽象化ルールに基づいて、前記グラフ構造データに含まれる前記ノード及び前記エッジに関する固有識別子を抽象化識別子に変換することと、
前記固有識別子が前記抽象化識別子に変換された前記グラフ構造データから生成された分析条件に基づいて、前記分析対象システムにおけるセキュリティリスクを分析することと、を備える、
コンピュータにより実行される分析方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分析条件生成装置、分析システム、分析条件生成プログラム、分析プログラム、分析条件生成方法、及び分析方法に関する。
【背景技術】
【0002】
近年、ネットワークに接続されるシステムのセキュリティ強化が望まれており、システムのセキュリティリスクを分析するために、脆弱性診断、ペネトレーションテストといったサービスが提供されている。
【0003】
脆弱性診断は、SQLインジェクション、クロスサイトリクエストフォージェリ等の既知の脆弱性の定義に基づいて、システムに内在する脆弱性やセキュリティ機能の不足を網羅的に把握する手法である。ペネトレーションテストは、予め作成した攻撃シナリオに基づいたシステムへの攻撃により、攻撃目的が達成されてしまうかどうかを分析し、システムに対する被害の実現性を把握する手法である。
【0004】
例えば、特許文献1には、評価ターゲットとなる対象システムが使用する規格、及び仕様と、公開脆弱性情報とを基点として、評価ターゲットとなる対象システムの脆弱性を評価するための情報を生成する技術が開示されている。
【0005】
また、例えば、特許文献2には、ソフトウェアの処理に対する攻撃による脅威と、脅威に対して脆弱性を有する処理の記述である脆弱性記述との一覧を脅威一覧として取得し、ソフトウェアの処理フローから、脅威一覧に含まれる脆弱性箇所を判定する技術が開示されている。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2019-192101号公報
【文献】再表2019/142335号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
脆弱性診断は、システム全体を網羅的に検証できる一方で、定義されていない脆弱性等を把握することが困難である。また、ペネトレーションテストは、システムに対する具体的な侵入方法等を検証できる一方で、システムを網羅的に分析しようとすると、コストや時間が増大するという問題がある。このような問題に対して、対象システム内のデータの取り扱いに注目したセキュリティリスク分析が行われている。
【0008】
特許文献1に開示されている技術では、評価ターゲットとなる対象システムが使用する規格及び仕様における脆弱性が評価される。つまり、特許文献1は、対象システム内のデータの取り扱いに注目したセキュリティリスク分析を目的とした技術ではないため、定義されていない脆弱性や、対象システムが使用する規格及び仕様以外の脆弱性を評価することができない。
【0009】
また、特許文献2に開示されている技術では、脅威一覧に含まれる脆弱性記述は、CWE(Common Weakness Enumeration)から取得される。CWEは、多種多様な脆弱性の種類が階層化かつ抽象化されているため、ソフトウェアの処理フローに当てはめて脆弱性箇所を判定するにあたり、ソフトウェアの処理フロー毎に具体化する必要がある。したがって、システムを網羅的に分析しようとすると、膨大な具体化の規則が必要となるため、コストや時間が増大するという問題を解決することができない。
【0010】
本発明の目的は、上記課題を解決するためになされたものであり、分析対象のシステムのデータの流れにおけるセキュリティリスクの分析条件を自動的に生成することを目的とする。
【課題を解決するための手段】
【0011】
本発明の分析条件生成装置は、分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを生成し、前記グラフ構造データに基づいて前記分析対象システムのセキュリティリスクを分析するための分析条件を生成する分析条件生成部を備える。
【0012】
本発明の分析システムは、分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを生成する構造情報生成部と、抽象化ルールに基づいて、前記グラフ構造データに含まれる前記ノード及び前記エッジに関する固有識別子を抽象化識別子に変換する抽象化処理部と、前記固有識別子が前記抽象化識別子に変換された前記グラフ構造データから生成された分析条件に基づいて、前記分析対象システムにおけるセキュリティリスクを分析する分析処理部と、を備える。
【0013】
本発明の分析条件生成プログラムは、分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを生成し、前記グラフ構造データに基づいて前記分析対象システムのセキュリティリスクを分析するための分析条件を生成することをプロセッサに実行させる。
【0014】
本発明の分析プログラムは、分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを生成することと、抽象化ルールに基づいて、前記グラフ構造データに含まれる前記ノード及び前記エッジに関する固有識別子を抽象識別子に変換することと、前記固有識別子が前記抽象化識別子に変換された前記グラフ構造データから生成された分析条件に基づいて、前記分析対象システムにおけるセキュリティリスクを分析することと、をプロセッサに実行させる。
【0015】
本発明の分析条件生成方法は、分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを生成し、前記グラフ構造データに基づいて前記分析対象システムのセキュリティリスクを分析するための分析条件を生成することを備える。
【0016】
本発明の分析方法は、分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを生成することと、抽象化ルールに基づいて、前記グラフ構造データに含まれる前記ノード及び前記エッジに関する固有識別子を抽象識別子に変換することと、前記固有識別子が前記抽象化識別子に変換された前記グラフ構造データから生成された分析条件に基づいて、前記分析対象システムにおけるセキュリティリスクを分析することと、を備える。
【発明の効果】
【0017】
本発明によれば、分析対象のシステムのデータの流れにおけるセキュリティリスクの分析条件を自動的に生成することができる。なお、本発明により、当該効果の代わりに、又は当該効果とともに、他の効果が奏されてもよい。
【図面の簡単な説明】
【0018】
【
図1】
図1は、第1の実施形態に係る分析対象システムにおけるデータの流れの説明図である。
【
図2】
図2は、第1の実施形態の変形例に係る分析システムの運用形態を示す図である。
【
図3】
図3は、第1の実施形態に係る分析条件生成装置のハードウェア構成を示すブロック図である。
【
図4】
図4は、第1の実施形態に係る分析条件生成装置の機能構成を示す機能ブロック図である。
【
図5A】
図5Aは、第1の実施形態に係るオントロジーの記述を例示した図である。
【
図5B】
図5Bは、第1の実施形態に係るオントロジーを例示した図である。
【
図6】
図6は、第1の実施形態に係る分析条件生成処理の流れを示すフローチャートである。
【
図7A】
図7Aは、第1の実施形態に係る自然文の一例を示す図である。
【
図7B】
図7Bは、第1の実施形態に係る構造化処理の説明図である。
【
図8】
図8は、第1の実施形態に係る抽象化処理の説明図である。
【
図9】
図9は、第1の実施形態に係る分析処理の流れを示すフローチャートである。
【
図10】
図10は、第1の実施形態の変形例に係る分析条件生成処理の機能構成を示す機能ブロック図である。
【
図11】
図11は、第2の実施形態に係る分析システムの運用形態を示す図である。
【
図12】
図12は、第2の実施形態に係る分析条件生成装置の機能構成を示す機能ブロック図である。
【
図13】
図13は、第2の実施形態に係る分析装置の機能構成を示す機能ブロック図である。
【
図14】
図14は、第2の実施形態に係る分析システムにおける分析処理の流れを示すシーケンス図である。
【
図15】
図15は、第3の実施形態に係る分析条件生成装置の構成を示す図である。
【
図16】
図16は、第4の実施形態に係る分析システムの構成を示す図である。
【発明を実施するための形態】
【0019】
以下、添付の図面を参照して本発明の実施形態を詳細に説明する。なお、本明細書及び図面において、同様に説明されることが可能な要素については、同一の又は対応する符号を付することにより重複した説明が省略され得る。
【0020】
以下に説明される各実施形態は、本発明を実現可能な構成の一例に過ぎない。以下の各実施形態は、本発明が適用される装置の構成や各種の条件に応じて適宜に修正又は変更することが可能である。以下の各実施形態に含まれる要素の組合せの全てが本発明を実現するに必須であるとは限られず、要素の一部を適宜に省略することが可能である。したがって、本発明の範囲は、以下の各実施形態に記載される構成によって限定されるものではない。相互に矛盾のない限りにおいて、実施形態内に記載された複数の構成を組み合わせた構成も採用可能である。
【0021】
説明は、以下の順序で行われる。
1.本発明の実施形態の概要
2.第1の実施形態
2.1.分析対象システムにおけるデータの流れ
2.2.分析システムの運用形態
2.3.情報処理装置のハードウェア構成
2.4.分析条件生成装置の機能構成
2.5.分析条件生成処理の流れ
2.6.分析処理の流れ
3.第1の実施形態の変形例
3.1.分析条件生成装置の機能構成
4.第2の実施形態
4.1.分析システムの運用形態
4.2.分析条件生成装置の機能構成
4.3.分析処理装置の機能構成
4.4.分析処理の流れ
5.第3の実施形態
6.第4の実施形態
7.その他の実施形態
【0022】
<1.本発明の実施形態の概要>
まず、本発明の実施形態の概要を説明する。
【0023】
(1)技術的課題
近年、ネットワークに接続されるシステムのセキュリティ強化が望まれており、システムのセキュリティリスクを分析するために、脆弱性診断、ペネトレーションテストといったサービスが提供されている。
【0024】
脆弱性診断は、SQLインジェクション、クロスサイトリクエストフォージェリ等の既知の脆弱性の定義に基づいて、システムに内在する脆弱性やセキュリティ機能の不足を網羅的に把握する手法である。ペネトレーションテストは、予め作成した攻撃シナリオに基づいたシステムへの攻撃により、攻撃目的が達成されてしまうかどうかを分析し、システムに対する被害の実現性を把握する手法である。
【0025】
例えば、評価ターゲットとなる対象システムが使用する規格、及び仕様と、公開脆弱性情報とを基点として、評価ターゲットとなる対象システムの脆弱性を評価するための情報を生成する技術が開示されている。
【0026】
また、例えば、ソフトウェアの処理に対する攻撃による脅威と、脅威に対して脆弱性を有する処理の記述である脆弱性記述との一覧を脅威一覧として取得し、ソフトウェアの処理フローから、脅威一覧に含まれる脆弱性箇所を判定する技術が開示されている。
【0027】
脆弱性診断は、システム全体を網羅的に検証できる一方で、定義されていない脆弱性等を把握することが困難である。また、ペネトレーションテストは、システムに対する具体的な侵入方法等を検証できる一方で、システムを網羅的に分析しようとすると、コストや時間が増大するという問題がある。このような問題に対して、対象システム内のデータの取り扱いに注目したセキュリティリスク分析が行われている。
【0028】
上述したような評価ターゲットとなる対象システムの脆弱性を評価するための情報を生成する技術では、評価ターゲットとなる対象システムが使用する規格及び仕様における脆弱性が評価される。つまり、上述したような評価ターゲットとなる対象システムの脆弱性を評価するための情報を生成する技術は、対象システム内のデータの取り扱いに注目したセキュリティリスク分析を目的とした技術ではないため、定義されていない脆弱性や、対象システムが使用する規格及び仕様以外の脆弱性を評価することができない。
【0029】
また、上述したようなソフトウェアの処理フローから、脅威一覧に含まれる脆弱性箇所を判定する技術では、脅威一覧に含まれる脆弱性記述は、CWEから取得される。CWEは、多種多様な脆弱性の種類が階層化かつ抽象化されているため、ソフトウェアの処理フローに当てはめて脆弱性箇所を判定するにあたり、ソフトウェアの処理フロー毎に具体化する必要がある。したがって、システムを網羅的に分析しようとすると、膨大な具体化の規則が必要となるため、コストや時間が増大するという問題を解決することができない。
【0030】
以上の事情に鑑み、本実施形態では、分析対象のシステムのデータの流れにおけるセキュリティリスクの分析条件を自動的に生成することを目的とする。
【0031】
(2)技術的特徴
本発明の実施形態では、分析条件生成装置が、分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文からノードとエッジとの関係性を示すグラフ構造データを生成し、グラフ構造データに基づいて分析対象システムのセキュリティリスクを分析するための分析条件を生成する分析条件生成部を備える。
【0032】
これにより、分析対象のシステムのデータの流れにおけるセキュリティリスクの分析条件を自動的に生成することが可能となる。なお、上述した技術的特徴は本発明の実施形態の具体的な一例であり、当然ながら、本発明の実施形態は上述した技術的特徴に限定されない。
【0033】
<2.第1の実施形態>
以下、
図1から
図8を参照して、本発明の第1の実施形態について説明する。本実施形態においては、ネットワークを介してサービス等を提供するシステムを対象としてセキュリティリスクを分析するための分析条件生成装置を含む分析システムについて説明する。
【0034】
<2.1.分析対象システムにおけるデータの流れ>
まず、
図1を参照して、分析対象システムにおけるデータの経路について説明する。
図1は、分析対象システムの一例である認証システム3Aにおけるデータの経路の説明図である。認証システム3Aは、例えば、既存の顔認証技術によってユーザを認証する認証サービスを提供するシステムに相当する。
【0035】
認証システム3Aは、ユーザ情報取得モジュール31、クライアントサーバ32、サーバ33、及びDB(Data Base)34を含む。ユーザ情報取得モジュール31、クライアントサーバ32、サーバ33、及びDB34は、それぞれ、ネットワーク7(
図2参照)とは異なるネットワークを介して互いに接続されている。
【0036】
ユーザ情報取得モジュール31としては、カードに内蔵されたICチップ等からユーザの顔画像を含むユーザ情報を読み取り可能なIDリーダ、ユーザ情報としてゲートを通過するユーザの顔画像を撮像するカメラ等を用いることができる。ユーザ情報取得モジュール31によって取得されたユーザ情報は、クライアントサーバ32に送信される。本実施形態では、認証システム3Aにおいてやり取りされる情報の経路として、ユーザ情報取得モジュール31が取得したユーザ情報を含むデータの経路を例に説明を行う。また、データとしては、ユーザの顔画像を示す“FFFF.jpg”ファイルや、拡張子が“.config”、“.log”、“.tmp”、“.dat”、“.dump”であるデータファイルを例に取り上げる。
【0037】
なお、
図1では、ユーザ情報取得モジュール31、クライアントサーバ32、サーバ33、及びDB34におけるデータのやり取りを実線の矢印で示している。また、クライアントサーバ32、サーバ33、及びDB34において動作するプログラムによるファイルへのアクセス及びファイル生成を破線の矢印で示している。さらに、サーバ33及びDB34における認証システム3A外のIP(Internet Protocol)アドレスとの通信を一点鎖線で示している。
【0038】
クライアントサーバ32は、ユーザ情報取得モジュール31によって読み取られたユーザ情報(例えば、“FFFF.jpg”や、ユーザに関する各種の設定情報等)を取得する。クライアントサーバ32は、取得したユーザ情報に基づいて、データファイルを一意に識別するためのファイル識別子を含むデータファイルを生成する。このとき、クライアントサーバ32は、例えば、拡張子が“.log”、“.tmp”等であるデータファイルを生成する。拡張子が“.log”であるデータファイルは、クライアントサーバ32において動作するプログラムのログデータに相当する。また、クライアントサーバ32は、“FFFF.jpg”の画像を含む、拡張子が“.tmp”である一時的なデータファイルを生成する。また、クライアントサーバ32は、拡張子が“.config”であるデータファイルを読み込む。拡張子が“.config”であるデータファイルは、例えば、サーバ33のIPアドレス等の設定パラメータのデータが含まれる設定ファイルに相当し、ファイルを一意に識別するためのファイル識別子が含まれている。
【0039】
サーバ33は、クライアントサーバ32からユーザ情報を受信する。サーバ33は、受信したユーザ情報に基づいて、データファイルを一意に識別するためのファイル識別子を含むデータファイルを生成する。サーバ33は、例えば、拡張子が“.log”、“.dump”等であるデータファイルを生成する。拡張子が“.log”であるデータファイルは、サーバ33において動作するプログラムのログデータに相当する。また、サーバ33は、サーバ33において動作するプログラムに異常が発生したことを示す、拡張子が“.dump”であるデータファイルを生成する。また、サーバ33は、拡張子が“.config”であるデータファイルを読み込む。拡張子が“.config”であるデータファイルは、例えば、DB34のIPアドレス等の設定パラメータのデータが含まれる設定ファイルに相当し、ファイルを一意に識別するためのファイル識別子が含まれている。さらに、サーバ33は、認証システム3Aの外部のIPアドレスで指定される情報資源において実現されているSNS(Social Networking Service)と通信を行っている。
【0040】
DB34は、サーバ33からユーザ情報を受信して記憶する。また、DB34は、受信したユーザ情報に基づいて、データファイルを一意に識別するためのファイル識別子を含むデータファイルを生成する。DB34は、例えば、拡張子が“.log”、“.data”等であるデータファイルを生成する。拡張子が“.log”であるデータファイルは、DB34において動作するプログラムのログデータに相当する。また、DB34は、何等かのデータが含まれる、拡張子が“.dat”であるデータファイルを生成する。また、DB34は拡張子が“.config”であるデータファイルを読み込む。拡張子が“.config”であるデータファイルは、例えば、DB34のデータの保存位置などの設定パラメータのデータが含まれる設定ファイルに相当し、ファイルを一意に識別するためのファイル識別子が含まれている。
【0041】
このように、認証システム3Aにおいては、プログラムが動作することにより、様々なデータが生成されてやり取りされる。しかしながら、認証システム3Aで動作するプログラムの動作によって生成される又はやり取りされるデータは、必ずしも認証システム3Aによって提供される認証サービスに用いられるとは限らない。また、認証システム3Aにおいて生成される又はやり取りされるデータに関して、セキュリティリスクがあると考えられるものもある。
【0042】
例えば、認証システム3Aでやり取りされるデータの経路において、SNS等、認証システム3A外部のIPに向けてユーザ情報のような個人情報を含むデータが晒されている可能性がある。認証システム3A外部のIPに個人情報を含むデータが晒されている可能性があるような状態は、セキュリティの観点から望ましくない。また、拡張子が“.tmp”である一時的なデータファイルが同一のディレクトリ内に所定時間以上残ってしまうようなデータの滞留もセキュリティの観点から望ましいとは言えない。さらに、拡張子が“.dump”であるデータファイルは、システムの開発中にプログラムの動作に障害が発生した際に原因解析のために生成されるファイルである。ゆえに、認証システム3Aの本番環境において拡張子が“.dump”であるデータファイルが作成されることは、セキュリティの観点から望ましいとは言えない。
【0043】
上述したような、認証システム3Aで動作するプログラムの動作によって生成される又はやり取りされるデータに関連する情報は、以下のようにして得ることができる。例えば、認証システム3Aにおいて実行される認証プログラムが、各ホスト端末の資源(記憶媒体、メモリ等)を利用する際に呼び出されるシステムコールの取得や、認証プログラムの実行中に認証システム3Aをスナップショットすることによって得ることできる。システムコールや認証システム3Aのスナップショットは、認証システム3Aにおいて動作するプログラム(ここでは、認証プログラム)が動作することによって生成される情報である。換言すると、システムコールや認証システム3Aのスナップショットは、認証システム3Aにおいて動作するプログラムの動作履歴に関する履歴情報に相当する。以後、システムコールや認証システム3A等の分析対象システムのスナップショットのことを「履歴情報」と称することがある。
【0044】
本実施形態では、分析装置2が、履歴情報を認証システム3Aから取得して、履歴情報をグラフ構造で表現したデータフローグラフを生成する。そして、分析装置2は、生成したデータフローグラフを用いて、認証システム3Aにおいてやり取りされるデータの経路におけるセキュリティリスクを分析する。
【0045】
<2.2.分析システムの運用形態>
続いて、
図2を参照して分析システム1000の運用形態について説明する。
図2は、分析システム1000の運用形態を示す図である。
図2に示すように、分析システム1000は、分析条件生成装置1、分析装置2、及び認証システム3Aに含まれるホスト端末が、ネットワーク7を介して接続されている。
【0046】
分析条件生成装置1は、分析装置2がセキュリティリスクの有無を分析するための分析条件を生成する。
【0047】
分析装置2は、履歴情報を認証システム3Aから取得して、認証システム3Aにおいてやり取りされるデータの経路におけるセキュリティリスクの有無を分析する。分析装置2は、分析対象システムでやり取りされるデータの経路におけるセキュリティリスクの有無を分析するプログラムがインストールされたサーバ等の情報処理装置に相当する。また、本実施形態の分析対象システムとは、例えば、認証システム3A等、分析装置2にネットワーク7を介して接続されているシステムに相当する。
【0048】
分析装置2は、分析対象システムから履歴情報を収集する履歴情報収集部210と、履歴情報に基づいて分析対象システムにおいてやり取りされるデータの経路を示すデータフローグラフを生成する生成部220と、分析条件に基づいて、データフローグラフにおけるセキュリティリスクの有無を分析する分析処理を実行する分析部230とを有する。
【0049】
認証システム3Aは、ホスト端末として、ユーザ情報取得モジュール31、クライアントサーバ32、サーバ33、及びDB34を含む。
【0050】
<2.3.情報処理装置のハードウェア構成>
続いて、
図3を参照して、本実施形態に係る分析条件生成装置1及び分析装置2や、認証システム3Aに含まれるホスト端末等の情報処理装置のハードウェア構成について説明する。
図3は、情報処理装置のハードウェア構成を示すブロック図である。
【0051】
情報処理装置は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、記憶媒体14、及びインタフェース(I/F)15がバス16を介して相互に接続されている。また、I/F15には、入力部17、表示部18及びネットワーク7が接続されている。
【0052】
CPU11は、演算手段であり、情報処理装置全体の動作を制御する。ROM12は、読み出し専用の不揮発性記憶媒体であり、ファームウェア等のプログラムが格納されている。RAM13は、情報の高速な読み書きが可能な揮発性の記憶媒体であり、CPU11が情報を処理する際の作業領域として用いられる。記憶媒体14は、HDD(Hard Disk Drive)等の情報の読み書きが可能な不揮発性の記憶媒体であり、OS(Operating System)や各種の制御プログラム、アプリケーション・プログラム等が格納されている。
【0053】
I/F15は、バス16と各種のハードウェアやネットワーク等とを接続し制御する。入力部17は、ユーザが情報処理装置に情報を入力するためのキーボードやマウス等の入力装置である。表示部18は、ユーザが情報処理装置の状態を確認するためのLCD(Liquid Crystal Display)等の表示装置である。なお、入力部17や表示部18は、省略可能である。
【0054】
このようなハードウェア構成において、ROM12に格納されたプログラムや、記憶媒体14からRAM13にロードされたプログラムに従ってCPU11が演算を行うことにより、情報処理装置のソフトウェア制御部が構成される。そして、以上のようにして構成されたソフトウェア制御部と、ハードウェアとの組み合わせによって、本実施形態に係る分析条件生成装置1のコントローラ100(
図4参照)の機能を実現する機能ブロックが構成される。また、分析装置2の履歴情報収集部210、生成部220及び分析部230の機能は、分析装置2のROM12に格納されたプログラムや、分析装置2の記憶媒体14から分析装置2のRAM13にロードされたプログラムに従って、分析装置2のCPU11が演算を行って構成されるソフトウェア制御部と、分析装置2に含まれるハードウェアとの組み合わせによって実現される。
【0055】
<2.4.分析条件生成装置の機能構成>
続いて、
図4を参照して、分析条件生成装置1の機能構成について説明する。
図4は、分析条件生成装置1の機能構成を示す機能ブロック図である。
図4に示すように、分析条件生成装置1は、分析条件生成装置1全体の動作を制御するコントローラ100と、コントローラ100に情報を入出力するネットワークI/F101と、を有する。
【0056】
コントローラ100は、ネットワークI/F101を介して取得した情報に基づいて、認証システム3Aにおけるセキュリティリスクを分析するための分析条件の生成等を行う。コントローラ100は、専用のソフトウェア・プログラムが分析条件生成装置1等の情報処理装置にインストールされることによって構成されている。
【0057】
図4に示すように、コントローラ100は、分析条件生成部110と、記憶部120とを有する。分析条件生成部110は、共通脆弱性識別子(Common Vulnerabilities and Exposures:CVE)や共通脆弱性タイプ一覧(Common Weakness Enumeration:CWE)等の情報セキュリティに関するセキュリティリスクを示す情報から、セキュリティリスクを分析するための分析条件を生成する。CVEとは、ベンダを跨いだ脆弱性情報の比較を容易に行う目的で、脆弱性情報にユニークな識別番号を付与し、リスト化したものである。また、CWEとは、脆弱性について、どのような領域に当てはまるかを分類した指標であり、CVEの補足情報に相当するものである。以後の説明において、CVE、CWE、AAR(After Action Report)、及びセキュリティベンダや専門家によるセキュリティリスクの分析レポート等の情報セキュリティに関するセキュリティリスクを示す文字情報のことを、「脆弱性情報」と称することがある。
【0058】
具体的に、分析条件生成部110は、脆弱性情報に対して自然言語処理を行って分析条件を生成する。分析条件生成部110が行う自然言語処理には、固有表現抽出工程、関係抽出工程、正規化工程、及びTemplate Filling工程が含まれている。
【0059】
固有表現抽出(Named Entity Recognition:NER)工程は、自然文から、固有表現(Named Entity)を抽出する工程である。自然文とは、話し言葉や書き言葉等のヒトが日常生活で用いる文字情報であり、かつ構造化されていない文字情報に相当する。例えば、CVEやCWEは、情報セキュリティに関するセキュリティリスクを示す文字情報の一例である。
【0060】
関係抽出(Relation Extraction:RE)工程は、NER工程によって抽出された固有表現間の関係性を抽出する工程である。正規化工程は、単語の分割、文字種やつづり、表記ゆれの吸収等の処理を行うことにより、固有表現に含まれるノイズを除去する工程である。Template Filling工程は、固有表現や固有表現間の関係性をテンプレートに記述された構造に当てはめる工程である。本実施形態の分析条件生成部110は、テンプレートとして、オントロジーを用いて自然言語処理を行う。分析条件生成部110において行われる分析条件生成処理やオントロジーの詳細については、後述する。
【0061】
分析条件生成部110は、構造情報抽出部111と、抽象化処理部112とを有する。構造情報抽出部111は、脆弱性情報等の自然文から、固有表現がグラフ構造化されたグラフ構造データを抽出する構造化処理を行う。抽象化処理部112は、グラフ構造データに含まれる固有表現を抽象表現に変換する抽象化処理を行う。構造化処理及び抽象化処理の詳細については、後述する。
【0062】
記憶部120は、脆弱性情報や、オントロジー等を記憶する記憶領域である。以上説明したような構成により、分析条件生成装置1は、分析対象システムのセキュリティリスクを分析するための分析条件を生成する。
【0063】
本実施形態において、分析装置2は、分析対象システムのデータの流れを示すデータフローグラフにおけるセキュリティリスクを分析する。データフローグラフは、データの実体を示すノードと、ノードに関連するイベントを示すエッジとによりグラフ構造化された分析対象システムの履歴情報に相当する。したがって、データフローグラフにおけるセキュリティリスクを分析するための分析条件もグラフ構造化された情報、グラフに関する問い合わせ言語(Gremlin(登録商標),Cypher(登録商標),SPARQL)の検索式、又はグラフ問い合わせ実現するためのプログラム等でなければならない。
【0064】
また、OpenIoC(Indicator of Compromise)やSTIX(Structured Threat Information eXpression)等に定義された脅威情報から自動で分析条件を生成してデータフローグラフにおけるセキュリティリスクを分析することも可能である。しかしながら、OpenIoCやSTIXは、既知の脆弱性や脅威を定義した情報であるため、分析対象システムがOpenIoCやSTIXに定義されている脆弱性や脅威そのものに晒されていることしか分析することができない。つまり、既知の脆弱性や脅威から変異したようなセキュリティリスクを評価することができない。
【0065】
このような問題に対して、本実施形態では、既知の脆弱性や脅威を示す自然文から、分析対象システムにおけるデータの流れの規則に従った抽象的な構造をグラフ構造データとして抽出し、既知の脆弱性や脅威から変異したようなセキュリティリスクを分析可能な分析条件を生成する。
【0066】
<2.5.分析条件生成処理の流れ>
続いて、
図5Aから
図8を参照して、セキュリティリスクを分析するための分析条件を生成する分析条件生成処理の詳細について説明する。
図5Aは、本実施形態に係るオントロジーの記述を例示した図である。
図5Bは、本実施形態に係るオントロジーを例示した図である。
図6は、本実施形態に係る分析条件生成処理の流れを示すフローチャートである。
図7Aは、本実施形態に係る自然文の一例を示す図である。
図7Bは、本実施形態に係る構造化処理の説明図である。
図8は、本実施形態に係る抽象化処理の説明図である。
【0067】
まず、本実施形態に係るオントロジーについて説明する。「オントロジー」とは、意味リンクを用いて概念間の関係を記述することにより、ある知識を記述するときに用いる“語彙”やその語彙の“意味”、さらに“言葉と意味との関係性”を、他のコンピュータとも共有できるように明確な仕様として定義したものである。
【0068】
例えば、“生物”、“ウサギ”、“長い耳”という3つの語彙の関係性を記述したオントロジーについて考察する。まず、“ウサギ”と“生物”との関係性について考察する。「“ウサギ”であれば必ず“生物”である」一方で、「“生物”であれば、必ず“ウサギ”である」とは限らない。この場合、オントロジーでは、“ウサギ”は“生物”であるということを示す関係性を、(is a)リンクという意味リンクを用いて“(ウサギ)‐(is a)‐>(生物)”と記述する。(is a)リンクの矢印の始点である“(ウサギ)”が下位概念であり、矢印の終点である“(生物)”が上位概念である。(is a)リンクを用いて2つの概念間の関係性を記述した場合、下位概念は例外を指定しない限り、上位概念の属性を継承する。
【0069】
続いて、“ウサギ”と“長い耳”との関係性について考察する。この場合、「“ウサギ”には“長い耳”が生えている」、「“ウサギ”には“長い耳”がある」、「“ウサギ”の“長い耳”が垂れている」といったように、ヒトが考える“ウサギ”と“長い耳”との関係性には差異が生じ得る。上述したように、オントロジーとは、意味リンクを用いて概念間の関係を明確な仕様として定義したものである。ここで、「“ウサギ”は“長い耳”を持っている」ことをコンピュータが“ウサギ”と“長い耳”との関係性であるとして明確に解釈することができるようにする場合、オントロジーでは、(has a)リンクという意味リンクを用いて“(ウサギ)‐(has a)‐>(長い耳)”と記述する。このようにオントロジーを記述することで、どのコンピュータにおいても、“ウサギ”と“長い耳”との関係性が「“ウサギ”は“長い耳”を持っている」ことであると解釈することができる。
【0070】
また、(has a)リンクは、全体と部分との関係を示す意味リンクである。したがって、(has a)リンクを用いて2つの概念間の関係性を記述した場合、(is a)リンクとは異なり、下位概念が上位概念の属性を継承するとは限らない。つまり、「“ウサギ”であれば必ず“長い耳”を持っている」関係は成立する一方で、「“長い耳”を持っていれば“ウサギ”である」という関係が成立するとは限らない。なお、全体と部分との関係を示す意味リンクとして、(has a)リンクの他に、(part of)リンク等がある。
【0071】
このように、オントロジーは、概念を示す自然言語による語彙、又は、概念間のイベントを示す“is a”や“has a”等の簡潔な述語を用いて、上位概念を示すノードと下位概念を示すノードとの間を、上位概念を示すノードや下位概念を示すノードに関連するイベントを示すエッジで結ぶことによりグラフ構造化し、ノード間の関係性をコンピュータが解釈可能な形式に記述した情報に相当する。
【0072】
続いて、
図5A及び
図5Bを参照して、本実施形態におけるオントロジーの構築例について説明する。
図5Aには、オントロジーに記述されている情報として、“(Process)‐(execute)‐>(Process)”、“(Process)‐(read/write)‐>(File)”、“(Process)‐(has a)‐>(実行権限)”、“(File)‐(has a)‐>(権限)”、・・・が例示されている。
【0073】
本実施形態において、オントロジーは、分析条件生成装置1を操作するオペレータにより構築される。分析条件生成装置1を操作するオペレータは、例えば、分析対象システム(例えば、認証システム3A)におけるデータの流れを示すデータフローグラフに基づいて、分析条件を生成する際に用いるオントロジーを構築する。
【0074】
なお、オントロジーを構築する際に、分析条件生成装置1を操作するオペレータは、脆弱性情報を参照してオントロジーを構築するようにしてもよい。例えば、分析対象システムから取得したデータフローグラフには含まれていない情報が、脆弱性情報には含まれている場合がある。“プロセスAAが読み込むパスワードを含む設定ファイルXX”という記述が脆弱性情報に含まれており、分析対象システムから取得したデータフローグラフには“プロセスAAが読み込むファイルXX”の情報が含まれていると仮定する。
【0075】
この場合、分析条件生成装置1を操作するオペレータは、“ファイルXX”を示すノードの属性として、“設定ファイルである”、及び“パスワードを含む”ことを付加してオントロジーを作成してもよい。この場合のオントロジーは、例えば、“(config file)‐(is a)‐>(File)‐(has a)‐>(password)”のように記述される。
【0076】
“(Process)‐(execute)‐>(Process)”は、あるプロセスが、別のあるプロセスを実行することを示す記述である。また、“(Process)‐(read/write)‐>(File)”は、あるプロセスがあるファイルを読み出し/書き込みすることを示す記述である。また、“(Process)‐(has a)‐>(実行権限)”は、あるプロセスが実行権限を示す属性を持っていることを示す記述である。また、“(File)‐(has a)‐>(アクセス権限)”は、あるファイルがアクセス権限を示す属性を持っていることを示す記述である。
【0077】
図5Bは、
図5Aのオントロジーの記述をグラフ構造によって示した図である。
図5Bに示すように、オントロジーの記述は、上位概念を示すノードと下位概念を示すノードとの間が、上位概念を示すノードや下位概念を示すノードに関連するイベントを示すエッジで結ばれたグラフ構造データとして表すことができる。
【0078】
例えば、あるプロセスが、別のあるプロセスを実行する関係性を示す記述(“(Process)‐(execute)‐>(Process)”:
図5A)は、矢印の始点の“(Process)”を下位概念のノード、“(execute)”をエッジ、矢印の終点の“(Process)”を上位概念のノードとしたグラフ構造データとして表わすことができる。
【0079】
図5A及び
図5Bに示すように、オントロジーは、ノードの種別やエッジの種別を示す抽象化識別子を有している。ノードの種別を示す抽象化識別子には、例えば、“(Process)”、“(Registry)”、“(File)”、“(IP,Port)”、及び“(Actor)”が挙げられる。
【0080】
“(Process)”は、例えば、ヘッダ部分のファイル情報や所定の拡張子(例えば、拡張子“.exe”であるファイル)に基づいて、プロセスを示すノードの抽象化識別子である。また、“(Registry)”や“(File)”は、例えば、OSの設定情報や文書ファイルの格納先情報、つまりデータストアを示すノードの抽象化識別子である。また、“(IP,Port)”は、IPアドレスやポート番号等の通信ソケットを示すノードの抽象化識別子である。
【0081】
また、“(Actor)”は、分析条件生成装置1を操作するオペレータにより定義されるノードのうち、プロセス、データストア、及び通信ソケット以外の要素である、外部アクターを示すノードの抽象化識別子である。分析条件生成装置1を操作するオペレータは、例えば、CWEやCVEに現れる外部の攻撃者等をノードとして定義し、上述したプロセス、データストア、及び通信ソケットを示すノードとの関係をオントロジーに記述してもよい。この場合、外部の攻撃者を示すノードと、プロセス、データストア、及び通信ソケットを示すノードとの関係は、エッジとして表現される。
【0082】
このように、本実施形態において、分析条件を生成するために用いられるオントロジーは、ノードの種別がプロセス、データストア、及び通信ソケット以外の要素のいずれかであることを識別でき、かつ、ノード及びエッジが固有表現を含まない程度に、ノード及びエッジの概念が抽象化されたグラフ構造データに相当する。本実施形態において、固有表現を含まない程度にノード及びエッジの概念が抽象化された状態とは、例えば、“xxx¥cmd.exe”や“yyy¥Explorer.exe”等のノードが、“xxx¥cmd”や“yyy¥Explorer”等のユニークな文字列を含まないノードになることに相当する。“xxx¥cmd”や“yyy¥Explorer”は、各ノードに固有であり、かつ各ノードをユニークに識別可能な固有識別子に相当する。
【0083】
したがって、本実施形態では、固有表現を含まない程度にノード及びエッジの概念が抽象化されたオントロジーを用い、自然文に対して自然言語処理を行うことにより、オントロジーに定義された概念間の関係に当てはまるグラフ構造データを抽出することができる。なお、分析条件生成装置1のオペレータは、オントロジーの構築に際し、ノード及びエッジの概念をどの程度抽象化するかを任意に設定することができる。
【0084】
また、分析条件を生成するために用いるオントロジーを構築するに際し、プロセスを示すノードに、プロセスの実行権限を示す属性を付与してもよい。例えば、“(Process)‐(has a)‐>(実行権限)”は、矢印の始点のノードのプロセスが実行権限を示す属性を持っていることを示す記述である(
図5A参照)。つまり、このオントロジーを用いて自然文に対して自然言語処理を行うことにより、抽象化識別子として“(Process)”を有するノードに、プロセスの実行権限が付加される。
【0085】
さらに、分析条件を生成するために用いるオントロジーを構築するに際し、データストアを示すノードに、そのデータストアに記憶されているデータへのアクセス権限を示す属性を付与してもよい。例えば、“(File)‐(has a)‐>(アクセス権限)”は、あるファイルがアクセス権限を示す属性を持っている関係性を示す記述である(
図5A参照)。つまり、このオントロジーを用いて自然文に対して自然言語処理を行うことにより、抽象化識別子として“(File)”を有するノードに、プロセスの実行権限が付加される。
【0086】
このほかにも、例えば、(is a)リンクや(has a)リンクを用いて、“(File)”の抽象化識別子を有するノードが設定ファイルであることを示す属性、パスワードを含むことを示す属性、バイナリファイルであることを示す属性、一時ファイルであることを示す属性、又はプログラム情報をシリアライズしたものであることを示す属性等を含んで、オントロジーを構築してもよい。
【0087】
続いて、
図6を参照して、本実施形態における分析条件生成処理の流れについて説明する。本実施形態に係る分析条件生成装置1では、オントロジーを用いて脆弱性情報に対して自然言語処理を行うことにより、オントロジーに定義された概念間の関係に当てはまるグラフ構造データを抽出し、セキュリティリスクを分析するための分析条件を生成する。
【0088】
まず、ステップS11において、分析条件生成部110は、記憶部120に記憶されているオントロジー及び自然文を取得する。
図7Aには、分析条件生成部110に入力される自然文の例として、CWEの一種であるJVN(Japan Vulnerability Notes)に定義されているJVNDB-2015-0061XXを示している。
【0089】
図7Aの自然文には、以下(1)から(6)に示す「XXXX Solution Centerには複数の脆弱性が存在し、攻撃者による“SYSTEM権限”での任意のコード実行が可能であることを示す文字情報」が含まれている。
(1)XXXX Solution Centerを起動すると、“SYSTEM権限”で動作するプロセス“LSCTaskService”が作成されること
(2)プロセス“LSCTaskService”は、“55555番ポート”を使って“HTTP daemon”を実行することで、“GETリクエスト”や“POSTリクエスト”による“LSCController.dll”モジュール内のメソッドの実行を実現すること
(3)“LSCController.dll”には安全ではないメソッドが多数含まれていること
(4)そのうち、“RunInstaller”は、“%APPDATA%¥LSC¥Local Store”ディレクトリに置かれた任意のコードを実行するよう設計されていること
(5)“%APPDATA%¥LSC¥Local Store”ディレクトリは、システムにログイン可能な全てのユーザに対して作成されるため、ユーザは、システムの管理者権限を持たなくても、このディレクトリへの書込みを行うことができること
(6)この脆弱性を悪用することで、一般ユーザは“SYSTEM権限”で任意のコードを実行すること
【0090】
ステップS12において、構造情報抽出部111は、分析条件生成部110に入力されたオントロジーと自然文とに基づいて構造化処理を行う。具体的に、構造情報抽出部111は、
図7Aに示す自然文から、オントロジーに定義されている概念間の関係に当てはまるグラフ構造データを抽出する。
図7Bには、構造化処理によって
図7Aに示す自然文から抽出されたグラフ構造データの一例を示している。
【0091】
上述したように、分析条件生成装置1のオペレータは、オントロジーの構築に際し、ノード及びエッジの概念をどの程度抽象化するかを任意に設定することができる。
図7Bには、ノードの種別がプロセス、データストア、及び通信ソケット以外の要素のいずれかであることを識別でき、かつ、ノード及びエッジが固有表現を含まない程度に、ノード及びエッジの概念が抽象化されたオントロジーを用いた場合において、構造化処理によって
図7Aに示す自然文から抽出されたグラフ構造データを例示している。構造化処理によって、
図7Aに示す自然文から、上述の(1)から(6)のセキュリティリスクを示すグラフ構造データ(
図7B参照)が抽出される。
【0092】
続いて、ステップS13において、抽象化処理部112は、構造情報抽出部111によって抽出されたグラフ構造データに含まれる固有表現を抽象化する抽象化処理を行う。
【0093】
図8には、
図7Bに示すグラフ構造データに対して、抽象化処理部112が抽象化処理を行うことにより、
図7Aの(1)から(6)の自然文を、それぞれ(1α)~(6α)に示すように抽象化したグラフ構造データを示している。
(1α)XXXX Solution Centerを起動すると、“Admin権限”で動作するプロセス“Parent Process”が作成されること
(2α)プロセス“Parent Process”は、“Actor1”からの実行命令により、“File”モジュール内のメソッドの実行を実現すること
(3α)“File”にはメソッドが含まれていること
(4α)“File”モジュール内のメソッドの実行により、プロセス“Parent Process”は、“Program Directory”に置かれた任意のコードを実行するよう設計されていること
(5α)“Program Directory”へのアクセス権限は“Non-Admin権限”であるため、システムの管理者権限を持たない“Actor2”も、このディレクトリへの書込みを行うことができること
(6α)この脆弱性を悪用することで、システムの管理者権限を持たない“Actor1”も“Admin権限”で任意のコードを実行すること
【0094】
具体的に、抽象化処理部112は、グラフ構造データに含まれるノード及びエッジに関する固有識別子を、抽象化識別子に変換する。抽象化処理部112は、例えば、ノードの種別及びエッジの種別に応じて、ノード及びエッジに関する固有識別子を抽象化識別子に変換する。抽象化処理部112は、ノードの種別がプロセス、データストア、及び通信ソケット以外の要素のいずれかであることを識別でき、かつ、ノード及びエッジが固有表現を含まない程度に、グラフ構造データに含まれるノード及びエッジの概念を抽象化する。さらに、抽象化処理部112は、抽象化した場合に種別が同じノードが複数含まれるような場合に、複数のノードそれぞれを識別可能な形式で抽象化処理を行う。
【0095】
例えば、グラフ構造データに、ノードの種別がプロセスであり、固有識別子“AYj3A”を持つノードと、ノードの種別がファイルであり、固有識別子“xni4G”を持つノードと、ノードの種別がディレクトリであり、固有識別子“BNWjf”を持つノードとが含まれていると仮定する。抽象化処理部112は、ノードの拡張子やヘッダ情報に基づいて、それぞれのノードの種別を識別し、固有識別子“AYj3A”を抽象化識別子“Process”に、固有識別子“xni4G”を抽象化識別子“File”に、固有識別子“BNWjf”を抽象化識別子“Directory”に変換する。なお、グラフ構造データに、ノードの種別が同じノードが複数含まれている場合、抽象化処理部112は、例えば、抽象化識別子“Process1”、抽象化識別子“Process2”のように、複数のノードをそれぞれ識別可能な形式で抽象化するようにしてもよい。
図8には、抽象化処理部112が、下位概念のプロセスのノードの固有識別子を抽象化識別子“Parent Process”に変換し、上位概念のプロセスのノードの固有識別子を抽象化識別子“Child Process”に変換するように抽象化処理を行った結果を示している。
【0096】
また、例えば、グラフ構造データに、ノードの種別がファイルであり、ファイルの所有者を示す固有識別子“Tanaka”を持つノードと、ノードの種別がプロセスであり、プロセスの実行者を示す固有識別子“Yamada”を持つノードとが含まれていると仮定する。抽象化処理部112は、固有識別子“Tanaka”を、管理者を示す抽象化識別子である“Admin”に変換し、固有識別子“Yamada”を、非管理者を示す抽象化識別子である“Non-Admin”に変換する。なお、グラフ構造データに、ユーザを示す固有識別子を持つノードが複数含まれている場合、抽象化処理部112は、例えば、抽象化識別子“Admin1”、抽象化識別子“Admin2”のように、複数のノードをそれぞれ識別可能な形式で抽象化するようにしてもよい。
【0097】
また、例えば、グラフ構造データに、ノードの種別が通信ソケットであり、IPアドレスを示す固有識別子“8.8.8.8”を持つノードが含まれていると仮定する。抽象化処理部112は、通信ソケットのノードに含まれるIPアドレスに基づいて、IPアドレスを示す固有識別子“8.8.8.8”を“Global IP”(又は“Local IP”)等のように、抽象化する。なお、グラフ構造データに、ノードの種別が通信ソケットであり、かつIPアドレスを示す固有識別子を持つノードが複数含まれている場合、抽象化処理部112は、それぞれのIPアドレスの区別がつくように、例えば、“Local IP 1”、“Local IP 2”のように、複数のノードをそれぞれ識別可能な形式で抽象化するようにしてもよい。
【0098】
また、例えば、グラフ構造データに、ノードの種別が通信ソケットであり、ポート番号を示す固有識別子“647X”を持つノードが含まれていると仮定する。抽象化処理部112は、通信ソケットのノードに含まれるポート番号を示す固有識別子“647X”を、任意のポート番号を示す抽象化識別子“****”に抽象化する。なお、抽象化処理部112は、TCP(Transmission Control Protocol)やUDP(User Datagram Protocol)のポート番号のうち、著名なサービスやプロトコルが利用するために予約されている0番から1023番のポート(いわゆるwell-known-port)については、具体的な数値を残して抽象化処理を行ってもよい。
【0099】
このように、抽象化処理部112によって抽象化されたグラフ構造データは、ステップS11で入力されたオントロジーよりは抽象化されていないグラフ構造データであり、かつステップS12で抽出されたグラフ構造データよりは抽象化されているグラフ構造データに相当する。
【0100】
図6に戻ってステップS14から説明を続ける。ステップS14において、分析条件生成部110は、グラフ構造データに対して後処理を行う。本実施形態において、分析条件生成部110は、例えば、分析条件生成装置1のオペレータにより予め設定されたルールに従って、抽象化されたグラフ構造データを編集する処理や、分析対象システムにおいてセキュリティリスク分析を行うに際し、意味を成さないグラフ構造データを、セキュリティリスク分析に用いるグラフ構造データとは区別して管理する処理を後処理として行う。なお、ステップS14は省略することもできる。
【0101】
例えば、分析条件生成部110は、分析条件としてDOT言語やノードとエッジとから成るJavaScript(登録商標) Object Notation(JSON)等の形式によってグラフ構造データを出力できるように、ステップS13において抽象化されたグラフ構造データに対してステップS14の後処理を行ってもよい。また、分析条件生成部110は、分析条件の出力形式をグラフ検索言語としてもよい。この場合、分析条件生成部110は、ステップS13において抽象化されたグラフ構造データを、CypherやGremlin等の検索言語で表現する後処理を行う。CypherやGremlin等の検索言語はテキスト形式であるため、分析条件生成装置1のオペレータがエディタを用いて編集することができる。また、CypherやGremlin等の検索言語によって表現されたデータをグラフとして可視化するエディタを作成し、分析条件生成装置1のオペレータがより直感的に編集修正するようにしてもよい。
【0102】
続いて、分析条件生成部110は、ステップS14において後処理した後のグラフ構造データをセキュリティリスク分析に用いる分析条件として分析装置2に対して出力する。
【0103】
<2.6.分析処理の流れ>
続いて、
図9を参照して、分析装置2における分析処理の流れについて説明する。
図9は、分析装置2における分析処理の流れを示すフローチャートである。
【0104】
生成部220は、ステップS21において、履歴情報収集部210が収集した認証システム3Aの履歴情報に基づいてデータフローグラフを生成する。
【0105】
続いて、分析部230は、ステップS22において、ステップS21で生成されたデータフローグラフに、分析条件生成装置1から取得した分析条件に合致するグラフ構造が含まれているか否かを判定する。ここでは、分析条件生成装置1から分析装置2に対して出力された分析条件がグラフ構造データであると仮定する。
【0106】
分析条件生成装置1から分析装置2に対して出力されたグラフ構造データに合致するグラフ構造が、ステップS21で生成されたデータフローグラフに含まれている場合(ステップS22/Y)、分析部230は、ステップS23において、ステップS21で生成されたデータフローグラフによって示されるデータの経路にリスクがあると判定する。
【0107】
分析条件生成装置1から分析装置2に対して出力されたグラフ構造データに合致するグラフ構造が、ステップS21で生成されたデータフローグラフに含まれていない場合(ステップS22/N)、分析部230は、ステップS23において、ステップS21で生成されたデータフローグラフによって示されるデータの経路にリスクがないと判定する。
【0108】
分析条件生成装置1から分析装置2に対して出力された分析条件は、脆弱性情報に含まれる固有概念が抽象化されたグラフ構造データに相当する。したがって、ステップS22において、分析部230は、CVEやCWEに定義されている脆弱性、及び脆弱性の変異データに基づいて、セキュリティリスクの有無を判定する。
【0109】
そして、分析部230は、ステップS25において、セキュリティリスクの有無を分析した結果を出力し、本処理を終了する。なお、分析装置2は、ステップS25で出力した分析結果を表示部18に表示させてもよい。
【0110】
以上説明したように、本実施形態では、既知の脆弱性や脅威を示す自然文から分析対象システムにおけるデータの流れの規則に従った構造をグラフ構造データとして抽出し、分析条件として出力する。このとき、データの流れの規則をオントロジーとして表現することにより、既知の脆弱性や脅威を示す具体的な情報からオントロジーに定義されたデータの流れの規則に従った構造を抜き出すことができる。また、本実施形態において、オントロジーは、分析条件生成装置1のオペレータにより構築される。ゆえに、分析対象システムにおけるデータの流れの規則を抽象化したオントロジーを構築することにより、既知の脆弱性や脅威から変異したセキュリティリスクを分析可能な分析条件を生成する。
【0111】
したがって、分析装置2において、脆弱性情報から抽出された要素が抽象化された分析条件を用いてセキュリティリスクを分析することが可能となる。ゆえに、脆弱性情報においてセキュリティリスクがあると定義されている情報を示すグラフ構造データの変異データ(バリアントデータ)が分析対象システムのデータフローグラフに含まれる場合、分析対象システムのデータフローグラフに含まれる変異データに関してセキュリティリスクがあるという分析結果を得ることが可能となる。
【0112】
<3.第1の実施形態の変形例>
第1の実施形態におけるCVEやCWEは、インターネット上で公開されている情報であり、ベンダから提供される情報に基づいて日々更新されている。本変形例の分析条件生成装置1は、CVEやCWE等の脆弱性情報を自動的に更新して分析条件を生成する。
【0113】
<3.1.分析条件生成装置の機能構成>
図10を参照して、本変形例に係る分析条件生成装置1の機能構成について説明する。
図10は、第1の実施形態の変形例に係る分析条件生成装置1の機能構成を示す機能ブロック図である。なお、
図10において
図4と同じ構成には同じ符号を付し、重複する説明を省略する。
【0114】
図10に示すように、本変形例に係る分析条件生成装置1は、分析条件生成部110、記憶部120、及び更新部130を有する。分析条件生成部110及び記憶部120は、
図4と同様であるため、説明を省略する。
【0115】
更新部130は、ネットワーク7を介して脆弱性情報を取得し、記憶部120に記憶されている脆弱性情報を更新する。また、更新部130は、分析装置2における分析処理の結果に基づいて、分析装置2のオペレータが定義した分析対象システムの脆弱性を示す情報を、ネットワーク7を介して取得し、記憶部120に記憶されている脆弱性情報を更新してもよい。
【0116】
本変形例では、インターネット上で公開される最新のCVEやCWE、更に分析装置2の分析結果を取得して、分析条件生成装置1に記憶されている脆弱性情報を更新する。このようにすることにより、分析条件生成装置1は、分析対象システムに関する最新の脆弱性情報を反映させた上で分析条件を生成することが可能となる。
【0117】
<4.第2の実施形態>
第1の実施形態では、オントロジーを用いて抽出されたグラフ構造データを、分析条件生成装置1において抽象化してから分析装置2に送信する態様について説明を行った。第2の実施形態は、分析条件生成装置1において、自然文からオントロジーを用いてグラフ構造データを抽出し、分析処理装置4においてグラフ構造データを抽象化する点で第1の実施形態と異なる。以下、
図11から
図14を参照して、本発明の第2の実施形態について説明する。なお、第2の実施形態の説明において、第1の実施形態と同じ要素には同じ符号を付し、重複する説明を省略する。
【0118】
<4.1.分析システムの運用形態>
まず、
図11を参照して、第2の実施形態に係る分析システム2000の運用形態について説明する。
図11は、第2の実施形態に係る分析システム2000の運用形態を示す図である。
図11に示すように、分析システム2000は、分析条件生成装置1、及び分析処理装置4がネットワーク7を介して接続されて構成されている。
【0119】
分析条件生成装置1は、分析処理に際し、セキュリティリスクを分析するための分析条件を生成する。分析条件生成装置1は、本実施形態の第1装置の一例である。
【0120】
分析処理装置4は、分析条件生成装置1が生成した分析条件に基づいて、分析対象システムのデータの流れを示すデータフローグラフにおけるセキュリティリスクを分析する。分析処理装置4は、本実施形態の第2装置の一例である。
【0121】
<4.2.分析条件生成装置の機能構成>
続いて、
図12を参照して、本実施形態に係る分析条件生成装置1の機能構成について説明する。
図12は、本実施形態に係る分析条件生成装置1の機能構成を示す機能ブロック図である。
【0122】
図10に示すように、本変形例に係る分析条件生成装置1は、構造情報抽出部111、記憶部120を有する。なお、以上の要素以外に、更新部130を備えていてもよい。構造情報抽出部111、記憶部120及び更新部130は、
図4又は
図10と同じであるため、説明を省略する。
【0123】
<4.3.分析処理装置の機能構成>
続いて、
図13を参照して、本実施形態に係る分析処理装置4の機能構成について説明する。
図13は、本実施形態に係る分析処理装置4の機能構成を示す機能ブロック図である。
図13に示すように、分析処理装置4は、分析処理装置4全体の動作を制御するコントローラ400と、コントローラ400に情報を入出力するネットワークI/F401と、を有する。
図13に示す分析処理装置4に含まれる要素は、分析処理装置4のROM12に格納されたプログラムや、分析処理装置4の記憶媒体14から分析処理装置4のRAM13にロードされたプログラムに従って、分析処理装置4のCPU11が演算を行って構成されるソフトウェア制御部と、分析処理装置4に含まれるハードウェアとの組み合わせによって実現される。
【0124】
コントローラ400は、グラフ分析エンジン410と、抽象化ルールDB420と、記憶部430と、を有し、ネットワークI/F101を介して取得した情報に基づいて、分析対象システムにおけるセキュリティリスクを分析する。コントローラ400は、専用のソフトウェア・プログラムが分析処理装置4にインストールされることによって構成されている。
【0125】
図13に示すように、グラフ分析エンジン410は、抽象化処理部411と、分析処理部412とを有する。抽象化処理部411は、ネットワークI/F101を介して取得したグラフ構造データに含まれる固有表現を、抽象化ルールDB420に記憶されている抽象化ルールに基づいて抽象表現に変換する抽象化処理を行う。なお、抽象化処理部411は、自然言語処理により抽象化処理を行ってもよい。分析処理部412は、抽象化処理後のグラフ構造データに基づいて、分析対象システムにおけるセキュリティリスクを分析する。抽象化処理部411が行う抽象化処理は、第1の実施形態の抽象化処理部112が行う抽象化処理(
図7B及び
図8参照)と同じである。また、分析処理部412が行う分析処理は、第1の実施形態の分析部230が行う分析処理(
図9参照)と同じである。
【0126】
抽象化ルールDB420は、抽象化処理部411が抽象化処理を行うに際し、グラフ構造データを抽象化するルールである抽象化ルールを記憶する記憶領域に相当する。抽象化ルールDB420には、例えば、以下のような抽象化ルールが記憶されている。
【0127】
抽象化ルールDB420には、例えば、ノード及びエッジに関する固有識別子を、ノードの種別及びエッジの種別に応じた抽象化識別子に変換するための情報が記憶されている。これにより、抽象化処理部112は、ノードの種別がプロセス、データストア、及び通信ソケット以外の要素のいずれかであることを識別でき、かつ、ノード及びエッジが固有表現を含まない程度に、グラフ構造データに含まれるノード及びエッジの概念を抽象化することができる。
【0128】
抽象化ルールDB420には、例えば、ノードの拡張子やヘッダ情報に基づいて、それぞれのノードの種別を識別し、固有識別子“AYj3A”を抽象化識別子“Process”に、固有識別子“xni4G”を抽象化識別子“File”に、固有識別子“BNWjf”を抽象化識別子“Directory”に変換する抽象化ルールが記憶されている。ここで、グラフ構造データに、ノードの種別がプロセスであり、固有識別子“AYj3A”を持つノードと、ノードの種別がファイルであり、固有識別子“xni4G”を持つノードと、ノードの種別がディレクトリであり、固有識別子“BNWjf”を持つノードとが含まれていると仮定する。この場合、抽象化処理部411は、抽象化ルールにより、グラフ構造データに、ノードの種別が同じノードが複数含まれている場合、例えば、抽象化識別子“Process1”、抽象化識別子“Process2”のように、複数のノードをそれぞれ識別可能な形式で抽象化することができる。
【0129】
また、抽象化ルールDB420には、例えば、固有識別子“Tanaka”を、管理者を示す抽象化識別子である“Admin”に変換し、固有識別子“Yamada”を、非管理者を示す抽象化識別子である“Non-Admin”に変換する抽象化ルールが記憶されている。ここで、グラフ構造データに、ノードの種別がファイルであり、ファイルの所有者を示す固有識別子“Tanaka”を持つノードと、ノードの種別がプロセスであり、プロセスの実行者を示す固有識別子“Yamada”を持つノードとが含まれていると仮定する。この場合、抽象化処理部411は、抽象化ルールにより、固有識別子“Tanaka”を、管理者を示す抽象化識別子である“Admin”に変換し、固有識別子“Yamada”を、非管理者を示す抽象化識別子である“Non-Admin”に変換することができる。なお、抽象化ルールとして、グラフ構造データに、ユーザ名を示す固有識別子を持つノードが複数含まれている場合に、例えば、抽象化識別子“Admin1”、抽象化識別子“Admin2”のように、複数のノードをそれぞれ識別可能な形式で抽象化するものを記憶してもよい。
【0130】
また、抽象化ルールDB420には、例えば、通信ソケットのノードに含まれるIPアドレスに基づいて、IPアドレスを示す固有識別子“8.8.8.8”を“Global IP”(又は“Local IP”)等のように、抽象化する抽象化ルールが記憶されている。ここで、グラフ構造データに、ノードの種別が通信ソケットであり、IPアドレスを示す固有識別子“8.8.8.8”を持つノードが含まれていると仮定する。抽象化処理部411は、抽象化ルールに基づいて、IPアドレスを示す固有識別子“8.8.8.8”を“Global IP”(又は“Local IP”)等のように抽象化することができる。なお、抽象化ルールとして、グラフ構造データに、IPアドレスを示す固有識別子を持つノードが複数含まれている場合、抽象化ルールに基づいて、それぞれのノードの固有識別子のIPアドレスを、例えば、“Local IP 1”、“Local IP 2”のように、複数のノードをそれぞれ識別可能な形式で抽象化するものを記憶してもよい。
【0131】
また、抽象化ルールDB420には、例えば、通信ソケットのノードに含まれるポート番号を、任意のポート番号を示す“****”等のように抽象化する抽象化ルールが記憶されている。ここで、グラフ構造データに、ノードの種別が通信ソケットであり、ポート番号“647X”を持つノードが含まれていると仮定する。抽象化処理部411は、通信ソケットのノードに含まれるポート番号“647X”を、任意のポート番号を示す“****”等のように抽象化する。なお、抽象化ルールとして、TCPやUDPのポート番号のうち、著名なサービスやプロトコルが利用するために予約されている0番から1023番のポート(いわゆるwell-known-port)については、具体的な数値を残すものを記憶してもよい。
【0132】
このように、抽象化処理部411は、種別が同じノードが複数含まれるような場合に、複数のノードをそれぞれ識別可能な形式で抽象化処理を行う。
【0133】
<4.4.分析処理の流れ>
続いて、
図14を参照して、分析システム2000における分析処理の流れについて説明する。
図14は、分析システム2000における分析処理の流れを示すシーケンス図である。
【0134】
本実施形態において、オントロジーは、分析条件生成装置1を操作するオペレータにより構築される。分析条件生成装置1を操作するオペレータは、例えば、分析対象システム(例えば、認証システム3A)におけるデータの流れを示すデータフローグラフに基づいて、分析条件を生成する際に用いるオントロジーを構築する。なお、オントロジーを構築する際に、分析条件生成装置1を操作するオペレータは、脆弱性情報を参照してオントロジーを構築するようにしてもよい。
【0135】
まず、ステップS31において、構造情報抽出部111は、記憶部120に記憶されているオントロジー(
図5B参照)及び自然文(
図7A参照)を取得する。続いて、ステップS32において、構造情報抽出部111は、ステップS31で取得したオントロジーと自然文とに基づいて構造化処理を行う。具体的に、構造情報抽出部111は、構造化処理において、自然文から、オントロジーに定義されている概念間の関係に当てはまるグラフ構造データ(
図7B参照)を抽出する。
【0136】
続いて、構造情報抽出部111は、ステップS33において、ステップS32で自然文から抽出したグラフ構造データを分析処理装置4に出力する。
【0137】
ステップS34において、抽象化処理部411は、分析条件生成装置1から受信したグラフ構造データを抽象化する。具体的に、抽象化処理部411は、抽象化ルールDBに記憶されている抽象化ルールに従って、グラフ構造データに含まれるノード及びエッジに関する固有識別子を、抽象化識別子に変換する(
図8参照)。ステップS34において、抽象化処理部411は、ノードの種別がプロセス、データストア、及び通信ソケット以外の要素のいずれかであることを識別でき、かつ、ノード及びエッジが固有表現を含まない程度に、グラフ構造データに含まれるノード及びエッジの概念を抽象化する。
【0138】
このように、抽象化処理部112によって抽象化されたグラフ構造データは、ステップS31で分析条件生成装置1に入力されたオントロジーよりは抽象化されていないグラフ構造データであり、かつステップS32で構造情報抽出部111によって抽出されたグラフ構造データよりは抽象化されたグラフ構造データに相当する。
【0139】
ステップS35において、グラフ分析エンジン410は、グラフ構造データに対して後処理を行う。本実施形態において、グラフ分析エンジン410は、例えば、分析処理装置4のオペレータにより予め設定されたルールに従って、抽象化されたグラフ構造データを編集する処理や、分析対象システムにおいてセキュリティリスク分析を行うに際し、意味を成さないグラフ構造データを、セキュリティリスク分析に用いるグラフ構造データとは区別して管理する処理を後処理として行う。なお、ステップS35は省略することもできる。
【0140】
例えば、グラフ分析エンジン410は、分析条件としてDOT言語やノードとエッジとから成るJSON等の形式によってグラフ構造データを用いることができるように、ステップS34において抽象化されたグラフ構造データに対して後処理を行ってもよい。また、グラフ分析エンジン410は、分析条件の出力形式をグラフ検索言語としてもよい。この場合、グラフ分析エンジン410は、ステップS34において抽象化されたグラフ構造データを、cypherやgremlin等の検索言語で表現する後処理を行う。cypherやgremlin等の検索言語はテキスト形式であるため、分析処理装置4のオペレータがエディタを用いて編集することができる。また、cypherやgremlin等の検索言語によって表現されたデータをグラフとして可視化するエディタを作成し、分析処理装置4のオペレータがより直感的に編集修正するようにしてもよい。
【0141】
ステップS36において、分析処理部412は、データフローグラフに分析条件に合致するグラフ構造が含まれているか否かを判定する。ステップS36において、分析処理部412が行う工程は、
図9のフローチャートのステップS22からステップS24に相当する。
【0142】
ステップS36において分析処理部412がセキュリティリスクを分析するデータフローグラフは、分析処理装置4が分析対象のシステムの履歴情報を取得して生成してもよい。また、これ以外に、分析処理装置4に接続されている不図示の情報処理装置に分析対象のシステムの履歴情報を入力してデータフローグラフを作成させ、分析処理装置4に送信するようにしてもよい。
【0143】
ステップS37において、分析処理部412は、ステップS36の分析結果を出力し、本処理を終了する。なお、分析処理部412は、ステップS37で出力した分析結果を表示部18に表示させてもよい。
【0144】
以上説明したように、本実施形態では、既知の脆弱性や脅威を示す自然文から分析対象システムにおけるデータの流れの規則に従った構造をグラフ構造データとして抽出し、分析条件として出力する。このとき、データの流れの規則をオントロジーとして表現することにより、既知の脆弱性や脅威を示す具体的な情報からオントロジーに定義されたデータの流れの規則に従った構造を抜き出すことができる。また、本実施形態において、オントロジーは、分析条件生成装置1のオペレータにより構築される。ゆえに、分析対象システムにおけるデータの流れの規則を抽象化したオントロジーを構築することにより、既知の脆弱性や脅威から変異したセキュリティリスクを分析可能な分析条件を生成する。
【0145】
したがって、分析処理装置4において、脆弱性情報から抽出された要素が抽象化された分析条件を用いてセキュリティリスクを分析することが可能となる。ゆえに、脆弱性情報においてセキュリティリスクがあると定義されている情報を示すグラフ構造データの変異データ(バリアントデータ)が分析対象システムのデータフローグラフに含まれる場合、分析対象システムのデータフローグラフに含まれる変異データに関してセキュリティリスクがあるという分析結果を得ることが可能となる。
【0146】
また、本実施形態では、分析条件生成装置1と分析処理装置4とにおいて、セキュリティリスクの分析に用いる分析条件を生成する処理を分散して行うことができる。このようにすることにより、自然言語処理による分析条件生成装置1への処理負荷の増大を抑制することが可能となる。
【0147】
<5.第3の実施形態>
次いで、
図15を参照して、本発明の第3の実施形態を説明する。上述した第1の実施形態は具体的な実施形態であるが、第3の実施形態はより一般化された実施形態である。以下の第3の実施形態によれば、第1の実施形態と同様の技術的効果が奏される。
【0148】
図15は、本発明の第3の実施形態に係る分析条件生成装置1Aの概略的な構成を例示するブロック図である。
図15に示すように、分析条件生成装置1Aは、分析条件生成部110Aを備える。
【0149】
分析条件生成部110Aは、分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文からノードとエッジとの関係性を示すグラフ構造データを生成し、グラフ構造データに基づいて分析対象システムのセキュリティリスクを分析するための分析条件を生成する。
【0150】
-第1の実施形態との関係
一例として、第3の実施形態に係る分析条件生成装置1Aが、第1の実施形態に係る分析条件生成装置1の動作を実行してもよい。以上の場合、第1の実施形態についての説明が第3の実施形態にも適用可能である。なお、第3の実施形態は以上の例に限定されるものではない。
【0151】
<6.第4の実施形態>
次いで、
図16を参照して、本発明の第4の実施形態を説明する。上述した第2の実施形態は具体的な実施形態であるが、第4の実施形態はより一般化された実施形態である。以下の第4の実施形態によれば、第2の実施形態と同様の技術的効果が奏される。
【0152】
図16は、本発明の第4の実施形態に係る分析システム2000Aの概略的な構成を例示するブロック図である。
図16に示すように、分析システム2000Aは、構造情報抽出部111Aと、抽象化処理部411Aと、分析処理部412Aとを備える。
【0153】
構造情報抽出部111Aは、分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文からノードとエッジとの関係性を示すグラフ構造データを抽出する。
【0154】
抽象化処理部411Aは、抽象化ルールに基づいて、グラフ構造データに含まれるノード及びエッジに関する固有識別子を抽象化識別子に変換する。
【0155】
分析処理部412Aは、固有識別子が抽象化識別子に変換されたグラフ構造データから生成された分析条件に基づいて、分析対象システムにおけるセキュリティリスクを分析する。
【0156】
-第2の実施形態との関係
一例として、第4の実施形態に係る分析システム2000Aが、第2の実施形態に係る分析システム2000の動作を実行してもよい。以上の場合、第2の実施形態についての説明が第4の実施形態にも適用可能である。なお、第4の実施形態は以上の例に限定されるものではない。
【0157】
<7.その他の実施形態>
以上、本発明の実施形態を説明したが、本発明はこれらの実施形態に限定されるものではない。これらの実施形態は例示にすぎないということ、及び、本発明のスコープ及び精神から逸脱することなく様々な変形が可能であるということは、当業者に理解されるであろう。
【0158】
例えば、本明細書に記載されている処理におけるステップは、必ずしもフローチャートやシーケンス図に記載された順序に沿って時系列に実行されなくてよい。例えば、処理におけるステップは、フローチャートやシーケンス図として記載した順序と異なる順序で実行されても、並列的に実行されてもよい。また、処理におけるステップの一部が削除されてもよく、さらなるステップが処理に追加されてもよい。
【0159】
また、本明細書において説明した分析条件生成装置1の構成要素(例えば、分析条件生成部110に含まれる各部に相当する要素)を備える装置が提供されてもよい。また、上記構成要素の処理を含む方法が提供されてもよく、上記構成要素の処理をプロセッサに実行させるためのプログラムが提供されてもよい。また、当該プログラムを記録したコンピュータに読み取り可能な非一時的記録媒体(Non-transitory computer readable medium)が提供されてもよい。当然ながら、このような装置、モジュール、方法、プログラム、及びコンピュータに読み取り可能な非一時的記録媒体も本発明に含まれる。
【0160】
上記実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【0161】
(付記1)
分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを生成し、前記グラフ構造データに基づいて前記分析対象システムのセキュリティリスクを分析するための分析条件を生成する分析条件生成部を備える、
分析条件生成装置。
【0162】
(付記2)
前記オントロジーは、
前記ノードの種別及び前記エッジの種別を示す抽象化識別子を有し、
前記ノードの種別は、前記データフローグラフに関するプロセスと、データストアと、通信ソケットと、前記プロセス、前記データストア及び前記通信ソケット以外の外部アクターと、を含む、
付記1に記載の分析条件生成装置。
【0163】
(付記3)
前記分析条件生成部は、
前記オントロジーに基づいて前記自然文から前記グラフ構造データを抽出する構造情報抽出部と、
前記オントロジーに基づいて、前記グラフ構造データに含まれる前記ノード及び前記エッジに関する固有識別子を前記抽象化識別子に変換する抽象化処理部と、を備える、
付記2に記載の分析条件生成装置。
【0164】
(付記4)
前記ノードのうち、前記プロセスを示すノードは、前記プロセスの実行権限を示す属性を有し、
前記ノードのうち、前記データストアを示すノードは、前記データストアのアクセス権限を示す属性を有する、
付記2又は3に記載の分析条件生成装置。
【0165】
(付記5)
前記自然文を更新する更新部を備える、
付記1から4のいずれか1項に記載の分析条件生成装置。
【0166】
(付記6)
前記分析条件生成部は、
前記自然文に対して前記オントロジーを用いた自然言語処理を行うことにより、前記グラフ構造データを生成する、
付記1から5のいずれか1項に記載の分析条件生成装置。
【0167】
(付記7)
前記自然文は、前記分析対象システムに関するセキュリティリスクを示す文字情報である、
付記1から6のいずれか1項に記載の分析条件生成装置。
【0168】
(付記8)
分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを抽出する構造情報抽出部と、
抽象化ルールに基づいて、前記グラフ構造データに含まれる前記ノード及び前記エッジに関する固有識別子を抽象化識別子に変換する抽象化処理部と、
前記固有識別子が前記抽象化識別子に変換された前記グラフ構造データから生成された分析条件に基づいて、前記分析対象システムにおけるセキュリティリスクを分析する分析処理部と、を備える、
分析システム。
【0169】
(付記9)
前記抽象化識別子は、
前記ノードの種別及び前記エッジの種別を示す識別子であり、
前記ノードの種別は、
前記データフローグラフに関するプロセスと、データストアと、通信ソケットと、前記プロセス、前記データストア及び前記通信ソケット以外の外部アクターと、を含み、
前記抽象化ルールは、
前記固有識別子を、前記ノードの種別及び前記エッジの種別に応じた前記抽象化識別子に変換するための情報である、
付記8に記載の分析システム。
【0170】
(付記10)
前記ノードのうち、前記プロセスを示すノードは、前記プロセスの実行権限を示す属性を有し、
前記ノードのうち、前記データストアを示すノードは、前記データストアのアクセス権限を示す属性を有する、
付記9に記載の分析システム。
【0171】
(付記11)
前記構造情報抽出部を有する第1装置と、
前記抽象化処理部と前記分析処理部とを有し、前記第1装置とは異なる第2装置とを備える、
付記8から10のいずれか1項に記載の分析システム。
【0172】
(付記12)
前記第1装置は、
前記自然文を更新する更新部を有する、
付記11に記載の分析システム。
【0173】
(付記13)
前記構造情報抽出部は、前記自然文に対して前記オントロジーを用いた自然言語処理を行うことにより、前記グラフ構造データを生成する、
付記8から12のいずれか1項に記載の分析システム。
【0174】
(付記14)
前記自然文は、前記分析対象システムに関するセキュリティリスクを示す文字情報である、
付記8から13のいずれか1項に記載の分析システム。
【0175】
(付記15)
分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを生成し、前記グラフ構造データに基づいて前記分析対象システムのセキュリティリスクを分析するための分析条件を生成することをプロセッサに実行させる、
分析条件生成プログラム。
【0176】
(付記16)
分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを抽出することと、
抽象化ルールに基づいて、前記グラフ構造データに含まれる前記ノード及び前記エッジに関する固有識別子を抽象化識別子に変換することと、
前記固有識別子が前記抽象化識別子に変換された前記グラフ構造データから生成された分析条件に基づいて、前記分析対象システムにおけるセキュリティリスクを分析することと、をプロセッサに実行させる、
分析プログラム。
【0177】
(付記17)
分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを生成し、前記グラフ構造データに基づいて前記分析対象システムのセキュリティリスクを分析するための分析条件を生成することを備える、
分析条件生成方法。
【0178】
(付記18)
分析対象システムにおけるデータの流れを示すデータフローグラフに関する1つ以上のノードと、前記ノードに関連するイベントを示す1つ以上のエッジとの関係性が記述されたオントロジーを用いて、自然文から前記ノードと前記エッジとの関係性を示すグラフ構造データを抽出することと、
抽象化ルールに基づいて、前記グラフ構造データに含まれる前記ノード及び前記エッジに関する固有識別子を抽象化識別子に変換することと、
前記固有識別子が前記抽象化識別子に変換された前記グラフ構造データから生成された分析条件に基づいて、前記分析対象システムにおけるセキュリティリスクを分析することと、を備える、
分析方法。
【産業上の利用可能性】
【0179】
分析対象のシステムのデータの流れにおけるセキュリティリスクの分析条件を自動的に生成する。
【符号の説明】
【0180】
1、1A 分析条件生成装置
2 分析装置
3A 認証システム
4 分析処理装置
110、110A 分析条件生成部
111、111A 構造情報抽出部
112 抽象化処理部
130 更新部
210 履歴情報収集部
220 生成部
230 分析部
411、411A 抽象化処理部
412、412A 分析処理部
420 抽象化ルールDB
1000、2000、2000A 分析システム