【解決手段】車載装置に対する攻撃に関するテストシナリオを生成するテストシナリオ生成装置1は、車載装置に含まれる複数の構成要素及び構成要素のうち攻撃対象となりうる資産を示す情報を含む階層情報500、構成要素同士のつながりを示す要素連結510、構成要素ごとの脆弱性を示す脆弱性情報600及び脆弱性ごとの攻撃種別を示す攻撃種別情報900、を格納する記憶部40と、階層情報500、脆弱性情報600及び攻撃種別情報900を用いて、構成要素ごとの攻撃種別を特定した攻撃種別情報を作成する割付部21及び要素連結510に基づき資産である構成要素までの侵入経路を生成し、攻撃種別情報900を用いて、構成要素及び攻撃種別の組合せを侵入経路の順番に並べたテストシナリオを複数生成するシナリオ作成部23を備える処理部20と、を有する。
車載装置に含まれる複数の構成要素および前記構成要素のうち攻撃対象となりうる資産を示す情報を含む階層情報、前記構成要素同士のつながりを示す要素連結、前記構成要素ごとの脆弱性を示す脆弱性情報、および前記脆弱性ごとの攻撃種別を示す攻撃種別情報、を格納する記憶部を備えるテストシナリオ生成装置が前記車載装置に対する攻撃に関するテストシナリオを生成するテストシナリオ生成方法であって、
前記階層情報、前記脆弱性情報、および前記攻撃種別情報を用いて、前記構成要素ごとの前記攻撃種別を特定した攻撃種別情報を作成することと、
前記要素連結に基づき前記資産である前記構成要素までの侵入経路を生成し、前記攻撃種別情報を用いて、前記構成要素および前記攻撃種別の組合せを前記侵入経路の順番に並べたテストシナリオを複数生成することとを含むテストシナリオ生成方法。
車載装置に含まれる複数の構成要素および前記構成要素のうち攻撃対象となりうる資産を示す情報を含む階層情報、前記構成要素同士のつながりを示す要素連結、前記構成要素ごとの脆弱性を示す脆弱性情報、および前記脆弱性ごとの攻撃種別を示す攻撃種別情報、を格納する記憶部を備えるテストシナリオ生成装置に前記車載装置に対する攻撃に関するテストシナリオを生成させるテストシナリオ生成プログラムであって、
前記テストシナリオ生成装置に、
前記階層情報、前記脆弱性情報、および前記攻撃種別情報を用いて、前記構成要素ごとの前記攻撃種別を特定した攻撃種別情報を作成させ、
前記要素連結に基づき前記資産である前記構成要素までの侵入経路を生成し、前記攻撃種別情報を用いて、前記構成要素および前記攻撃種別の組合せを前記侵入経路の順番に並べたテストシナリオを複数生成させるテストシナリオ生成プログラム。
【発明を実施するための形態】
【0011】
―実施の形態―
以下、
図1〜
図15を参照して、本発明に係るテストシナリオ生成装置の実施の形態を説明する。本実施の形態では、ある車載装置が攻撃を受けることを想定し、想定されるさまざまな場面を「テストシナリオ」として作成する。想定されるすべての状況ごとに事前にテストシナリオを作成してユーザに提供することで、事前の対策が可能となる。本実施の形態では、攻撃者から情報搾取などの攻撃を受ける車載装置の保持するデータである情報資産と、攻撃者からDoSなどの機能停止攻撃を受ける車載装置の様々な処理を実施する機能資産とをあわせて資産情報と呼ぶ。
【0012】
図1は、実施の形態に係るテストシナリオ生成システムSの構成図である。テストシナリオ生成システムSは、テストシナリオ生成装置1と、管理者端末2と、管理データベース3とを含んで構成される。ただし
図1に示す構成は例示に過ぎず、後述するそれぞれの装置が有する機能や情報がテストシナリオ生成システムSに含まれていればよく、テストシナリオ生成システムSを構成する装置数は3つに限定されない。
【0013】
図2は、テストシナリオ生成装置1、管理者端末2および構成管理DB3の各々のハ−ドウェア構成を示す図である。これら3つの装置は、ハードウエア構成が略同一なのでまとめて説明する。ただしテストシナリオ生成装置1、管理者端末2および構成管理DB3のハードウエア構成は完全に一致する必要はなく、適宜変更が加えられてもよい。
【0014】
テストシナリオ生成装置1、管理者端末2および構成管理DB3は、各種処理や演算、コンピュ−タ全体の制御等を行うCPU(Central Processing Unit)302と、揮発性の記憶領域であるメモリ303と、各種プログラムおよびデ−タを記憶するハ−ドディスク等の外部記憶装置304と、ネットワ−ク310を介して他コンピュ−タと通信を行うための通信装置305と、キーボードやボタン等の入力装置306と、モニタやプリンタ等の出力装置307と、CD−ROMやUSB等の可搬性を有する記憶媒体309から情報を読み取る読取装置308と、これらの各コンピュ−タ間のデ−タの送受信を行う内部通信線(たとえば、BUS)301と、を備える。テストシナリオ生成装置1、管理者端末2および構成管理DB3はいわば、汎用のコンピュ−タ(電子計算機)である。
【0015】
CPU302は、外部記憶装置304から各種プログラムをメモリ303にロードし、所定のプログラムを実行することにより後述する機能を実現する。CPU302が実行するプログラムは、予め外部記憶装置304に格納されていてもよいし、電子計算機が利用可能な可搬性を有する記憶媒体309に格納されており読取装置308を介して必要に応じて読み出されてもよい。またCPU302が実行するプログラムは、電子計算機が利用可能な通信媒体であるネットワ−クまたはネットワ−ク上を伝搬する搬送波を利用する通信装置305と接続された他のコンピュ−タから必要に応じてダウンロードされて外部記憶装置304に格納されてもよい。
【0016】
図3は、テストシナリオ生成装置1の機能構成図である。テストシナリオ生成装置1は、処理部20と、記憶部40と、操作者からの指示の受け付けや各種デ−タの入出力や処理結果の出力などを行う入出力部60と、ネットワ−クを介して通信する通信部80とを備える。
図3と
図2との関係を説明すると、処理部20は、CPU302の処理プロセスとして実現され、記憶部40は、CPU302がメモリ303や外部記憶装置304を利用することにより実現される。また、通信部80は、CPU302が通信装置305を利用することにより実現され、入出力部60は、CPU302が入力装置306や出力装置307や読取装置308を利用することにより実現される。
【0017】
処理部20は、割付部21と、経路作成部22と、シナリオ作成部23と、リスク評価部24と、重複シナリオ判定部25とを含む。記憶部40には、後述する階層情報500と、攻撃種別情報900と、脆弱性情報600と、攻撃種別情報700と、脆弱性対応情報710と、シナリオパターン情報800、攻撃経路情報1100と、テストシナリオ出力結果1200と、テストシナリオ優先順位評価結果1300と、重複テストシナリオ判定結果1400とが格納される。
【0018】
割付部21は、脆弱性情報600と、攻撃種別情報700と、脆弱性対応情報710とを用いて攻撃種別情報900を作成して記憶部40に格納する。経路作成部22は、階層情報500を参照して攻撃経路情報1100を作成し、さらに階層情報500および攻撃種別情報900を参照して攻撃経路情報1100を作成し、記憶部40に格納する。シナリオ作成部23は、攻撃経路情報1100およびシナリオパターン情報800を参照して、テストシナリオ出力結果1200を作成し、記憶部40に格納する。
【0019】
リスク評価部24は、テストシナリオ出力結果1200に対し、テストシナリオごとの評価値を算出し、テストシナリオ優先順位評価結果1300を作成する。重複シナリオ判定部25は、テストシナリオ出力結果1200に対し、同一シナリオ部分を検出し、テスト設計時に確認すべきパターンを削減してテストを効率化するための重複テストシナリオ判定結果1400を作成する。
【0020】
(階層情報500)
図4は、階層情報500の一例を示す図である。階層情報500は、予め作成されている情報であり、処理の開始時に記憶部40に格納される。なお階層情報500は構成管理DB3から入力されてもよいが、少なくともテストシナリオ生成装置1のメモリ303に一時的には格納される。
【0021】
階層情報500は複数のレコードから構成され、各レコードは階層501、要素名502、および資産該当503のフィールドを有する。階層501は、構成要素の物理的、ネットワ−ク的または概念的な距離を示す。階層501は、たとえば構成レイヤやネットワ−ク構成、サイバーキルチェーンに基づく分類である。資産に対する構成要素の距離を表現できる情報であれば、特にその表現方法は限定しない。
図4に示す例では階層501は図示上に近いほどテストシナリオ生成装置1の内部に近いことを示し、図示下に近いほどテストシナリオ生成装置1の外部に近いことを示す。すなわち「インタフェース」がテストシナリオ生成装置1の最も外側にある。詳しくは後述するが、攻撃はテストシナリオ生成装置1の外部から始まるので、いずれの攻撃も階層501が「インタフェース」の要素から始まる。また攻撃は外部から内部へ進行し、各階層を順番に経由する。
【0022】
要素名502は、それぞれの構成要素の名称であり、構成要素の具体的な製品名、ソフトウェア名、機能名、インタフェース名、要素技術名、データ名などある。要素名502のそれぞれの値はラベルとしての機能を有するが本実施の形態では階層501のような特別な意味は有さない。要素名502に製品名やソフトウェア名を用いる場合には、脆弱性情報はソフトウェアのバ−ジョンにより関連が異なってくるため、詳細なバ−ジョン情報を含めてもよい。資産該当503は、その要素が資産に該当するか否かを示す。資産該当503には、
図4に示す例では、資産に該当する場合は「YES」、資産に該当しない場合は「NO」が記載される。ただし資産に該当するか否かが判断できれば十分であり、その表記や表現は任意である。
【0023】
たとえば
図4の最上段に示す例では、階層501が「データ」、要素名502が「EE情報」、資産該当503が「YES」である。そのため「EE情報」は資産であり最も内側の「データ」の階層に属することがわかる。また
図4の中ごろに示す「OS123」は、階層が外側から2番目の「OS」であり、資産ではないことがわかる。
【0024】
(要素連結510)
図5は、要素連結510の一例を示す図である。要素連結510は、
図4に示したそれぞれの構成要素の接続の有無、すなわち連結を示す情報である。
図5では、
図4と同様に階層ごとに要素名を記載している。また階層の記載位置も
図4と同様であり、図示上に近いほどテストシナリオ生成装置1の内部に近いことを示し、図示下に近いほどテストシナリオ生成装置1の外部に近いことを示す。
【0025】
図5における一方向矢印は、矢印の向きにアクセスが可能なことを示している。換言すると、矢印が存在しない要素間はアクセスができない。たとえば「ミドルウエア」の階層に「MidXXX」と「MidYYY」を示している。「MidXXX」は、「アプリケーション」の階層に存在する、「AppAAA」、「AppCCC」、および「AppDDD」のいずれにもアクセスできる。しかし「MidYYY」は「AppAAA」にしかアクセスできない。
【0026】
また
図5の例によれば、「EE情報」に到達する経路は、インタフェースから内側に順番に辿って「無線LAN」、「OS123」、「MidXXX」、「AppAAA」、「EE情報」のルートと、「IEEE802.15.1」、「OS123」、「MidXXX」、「AppAAA」、「EE情報」のルートの2つが存在することがわかる。
【0027】
(脆弱性情報600)
図6は、脆弱性情報600の一例を示す図である。脆弱性情報600は、管理者により作成されあらかじめ記憶部40に格納される。脆弱性情報600は複数のレコードから構成され、各レコードは要素名601と、脆弱性602のフィールドを有する。要素名601は階層情報500の要素名502と同じく構成要素の名称である。すなわち階層情報500と脆弱性情報600は、要素名502と脆弱性602の値によりリンクする。脆弱性602は、たとえば脆弱性を分類したCWE番号や、過去に発見された脆弱性情報をナンバリングしたCVE番号や、脆弱性の固有名称などである。
【0028】
脆弱性情報とは、ソフトウェアの持つ情報セキュリティ上の欠陥に関する情報であり、セキュリティホ−ルとも呼ばれる。脆弱性情報は、たとえばセキュリティナレッジを公開する機関のサ−バが配信している場合がある。本実施の形態において、脆弱性情報の配信元は問わない。脆弱性情報600はたとえば、管理者が外部の脆弱性情報の配信サ−バから自社の製品に関連する情報を選択して取得し、入出力部230または通信部240を介してテストシナリオ生成装置1に入力する。ただし管理者がノウハウを元に独自に作成してもよい。また、通信部240を介して外部の脆弱性情報の配信サ−バから自動的に取得する構成をテストシナリオ生成装置1に持たせてもよい。
【0029】
(攻撃種別情報700)
図7は、攻撃種別情報700の一例を示す図である。攻撃種別情報700は、管理者により作成されあらかじめ記憶部40に格納される。
攻撃種別情報700は、攻撃の種類を識別するための識別子を格納する攻撃種別符号701の列と、セキュリティに関する攻撃の種別を示す情報を格納する攻撃種別情報702の列とを有する。本実施の形態では、攻撃の種類を識別するための識別子として数字を用いるので、攻撃種別符号701には数字が格納される。
【0030】
(脆弱性対応情報710)
図8は、脆弱性対応情報710の一例を示す図である。脆弱性対応情報710は、管理者により作成されあらかじめ記憶部40に格納される。脆弱性対応情報710は複数のレコードから構成される。脆弱性対応情報710の各レコードは、脆弱性を示す情報を格納する脆弱性情報711と、セキュリティに関する攻撃の種別を示す情報を格納する攻撃種別情報712のフィールドを有する。
【0031】
脆弱性情報711には、たとえば脆弱性を分類したCWE番号や、過去に発見された脆弱性情報をナンバリングしたCVE番号や、脆弱性の固有名称などが格納される。後の処理で対応関係を利用するために、脆弱性情報711には脆弱性情報600の脆弱性602と同じ種類の情報を格納することが望ましい。脆弱性情報711に脆弱性602と異なる種類の情報を格納する場合には、脆弱性情報711と脆弱性602の対応関係が明らかになるように、必要に応じて対応表などを作成する。
【0032】
攻撃種別情報712には、攻撃種別情報700の攻撃種別情報702の中から、その行の脆弱性情報が存在する場合に引き起こす可能性のある攻撃の種別を示す情報が格納される。
図8では攻撃種別情報712には、攻撃種別符号701のフィールドの値が格納されているが、それぞれの脆弱性情報により引き起こされる攻撃の種別が判別できればよく、その表現方法は限定しない。
【0033】
脆弱性対応情報710は、管理者や開発者のノウハウを元に作成することができる。また脆弱性対応情報710は、先述の脆弱性配信サ−バの配信する脆弱性の情報と、その脆弱性により実際に発生した攻撃の情報を集計して作成してもよい。
【0034】
(シナリオパターン情報800)
図9は、シナリオパターン情報800の一例を示す図である。シナリオパターン情報800は、管理者により作成されあらかじめ記憶部40に格納される。
シナリオパターン情報800は複数のレコードから構成される。シナリオパターン情報800の各レコードは、パターンを一意に特定するパターン番号が格納されるパターン番号801、および攻撃が資産に被害を与えるまでの攻撃方法の実行順序が格納されるシナリオパターン802のフィールドとを有する。シナリオパターン802には、攻撃種別情報700に格納される攻撃種別を用いて表現された攻撃の順番が格納される。
【0035】
たとえば
図9の最初のレコードは、パターン番号801が「P1」であり、シナリオパターン802が「D1」である。このレコードは、
図7に示す攻撃種別符号701の「(1)」に対応する「なりすまし」の単独により資産が被害を受けるパターンを示している。シナリオパターン情報800の2番目のレコードは、パターン番号801が「P2」であり、シナリオパターン802が「D1→D2」である。このレコードは、
図7に示す攻撃種別符号701の「D1」に対応する「なりすまし」の攻撃があり、続けて発生する「D3」に対応する「改ざん」の攻撃により資産が被害を受けるパターンを示している。
【0036】
セキュリティに関する攻撃は、サイバーキルチェーンで示されるように、製品の侵入口に施される攻撃、製品の内部で次の攻撃をし易くするための足がかりを施す攻撃、資産を破壊や奪取、停止するなど直接資産に施す攻撃などがある。また、複数の影響を施す攻撃も存在する。攻撃者は製品に施す影響の異なる攻撃を一つまたは複数組み合わせて攻撃を行う。ただし複数を組み合わせる攻撃には、攻撃の製品に施す影響の種類により、攻撃の組み合わせパターンが限定できる。その攻撃の組み合わせのパターンをシナリオパターン802に格納する。
【0037】
シナリオパターン情報800は、セキュリティ専門化や管理者や開発者のノウハウを元に作成することができる。またシナリオパターン情報800は、先述の脆弱性配信サ−バの配信する実際に発生した攻撃の情報を集計し、集計したデータに基づき作成することもできる。さらにシナリオパターン情報800は、セキュリティの攻撃に関する情報を分類するCAPACの情報に基づき作成することもできる。
【0038】
(攻撃種別情報900)
図10は、攻撃種別情報900の一例を示す図である。攻撃種別情報900は、割付部21により作成され、記憶部40に格納される。攻撃種別情報900は、複数のレコードから構成され、各レコードは、要素名901、脆弱性902、および攻撃種別符号903のフィールドを有する。
【0039】
要素名901には、評価対象を構成する構成要素を示す情報が格納される。脆弱性902には、該当構成要素が含有しうる脆弱性を示す情報が格納される。攻撃種別符号903には、該当脆弱性が引き起こす可能性のあるセキュリティに関する攻撃の種別を示す情報が格納される。
【0040】
要素名901には、階層情報500の要素名502に格納された全ての値が格納される。ただし要素名901に記載される順番は階層情報500とは同一でなくてもよい。脆弱性902および攻撃種別符号903には、脆弱性情報600および脆弱性対応情報710を参照して、各レコードの要素名901に対応する脆弱性情報および攻撃種別が格納される。
【0041】
(攻撃経路情報1100)
図11は、攻撃経路情報1100の一例を示す図である。攻撃経路情報1100は、経路作成部22により作成され、記憶部40に格納される。
図11に示す例では、攻撃経路情報1100は、攻撃対象となる資産ごとに別々の表として作成される。攻撃経路情報1100は複数のレコードから構成され、各レコードは、攻撃対象1102、要素番号1103、要素名1104、および攻撃種別符号1105のフィールドを有する。攻撃対象1102には、被害が発生する攻撃の対象、換言すると1つの表における最終的な攻撃の対象となる資産を示す情報が格納される。要素番号1103には、作成した攻撃経路の構成要素を特定する一意の番号が格納される。要素名1104には、当該レコードにおいて攻撃の対象となる要素名が格納される。攻撃種別符号1105には当該レコードにおける攻撃の種別が格納される。
【0042】
攻撃経路情報1100は、少なくとも
図4の階層情報500の資産該当503で資産に設定されている構成要素の数だけ生成される。一つの資産情報に対して複数の攻撃経路が想定される場合には、それぞれの経路が分かるように1つの表にまとめて記載してもよいし、同じ資産情報に対して複数のテーブルを作成してもよい。
図11に示す例では複数の攻撃経路が想定されるが1つの表にまとめて記載している。
【0043】
図11の各表におけるレコードの並び順は、図示下に記載するほど構成要素が侵入口側にあり、図示上に記載するほど構成要素が内部にあることを示す。すなわち図示下から上に向かって攻撃が進行する。ただしこの記載の順番を逆にしてもよいし、侵入の順番を明示する情報を別途格納するためのフィールドを各レコードに設けてもよい。
【0044】
(テストシナリオ出力結果1200)
図12は、テストシナリオ出力結果1200の一例を示す図である。テストシナリオ出力結果1200は、シナリオ作成部23により作成され、テストシナリオ保持部46に格納される。
【0045】
テストシナリオ出力結果1200は複数のレコードから構成され、各レコードは、ルート1201、攻撃対象1202、およびテストシナリオ1203のフィールドを有する。ルート1201のフィールドには、テストシナリオを一意に特定する情報が格納される。
攻撃対象1202には、そのテストシナリオによって攻撃の対象となる資産を示す情報が格納される。テストシナリオ1203には、シナリオ作成部23が作成したテストシナリオの情報が格納される。
【0046】
本実施の形態では、評価対象に対して作成したテストシナリオを1つのテーブルのようにして表現しているが、攻撃対象ごとに別のテーブルとして表現してもよい。また、テストシナリオ出力結果1200は、出力結果画面として管理者端末2の出力装置に表示してもよいし、管理者端末2またはテストシナリオ生成装置1からレポートとして紙に出力してもよい。
【0047】
なお、本実施の形態では攻撃対象とテストシナリオ情報とを出力する例を示しているが、そのシナリオに該当する脆弱性情報もあわせて出力してもよい。また、テストシナリオの表現方法は、本実施の形態のような略記号で表現してもよいし、具体的に構成要素名や攻撃種別名、攻撃内容で表現してもよく、その表現方法は問わない。たとえば、本実施の形態の「I5−D1→I3−D4→I2−D6→I1−D5」は、「認証機能に不正アクセスされ、OS123で不正なコードが実行され、CCCの設定が変更されることで、AAA機能が停止する」と表現してもよい。
【0048】
(テストシナリオ優先順位評価結果1300)
図13は、テストシナリオ優先順位評価結果1300の一例を示す図である。テストシナリオ優先順位評価結果1300は、リスク評価部24により作成され、記憶部40に格納される。
【0049】
テストシナリオ優先順位評価結果1300は、複数のレコードから構成され、各レコードは優先度1301、攻撃対象1302、テストシナリオ1303、および評価値1304のフィールドを有する。優先度1301には、テストシナリオの優先度を示す情報が格納される。攻撃対象1302には、該当テストシナリオが実施される際に攻撃の対象となる資産を示す情報が格納される。テストシナリオ1303には、シナリオ作成部23が作成したテストシナリオの情報が格納される。評価値1304には、リスク評価部24が算出するテストシナリオの評価値が格納される。
【0050】
リスク評価部24による評価値の算出方法はテストシナリオの優先順位を付けられる方法であれば、その具体的な算出方法については限定しないが、たとえば次の5つの方法が考えられる。第1に、テストシナリオを構成する構成要素の数(ポップ数)の長短を評価する方法である。第2に、あらかじめ階層情報500の時点で資産情報の価値の大小を係数で表現しておき資産の価値の大きさを評価する方法である。第3に、攻撃種別情報700で攻撃種別の影響の大きさを係数で表現しておき評価する方法である。第4に、攻撃種別の影響の大きさと資産価値の大きさとの乗算で評価する方法である。第5に、先述の脆弱性配信サ−バの配信する実際に起こった攻撃の情報とその攻撃のリスク値(たとえばCRSS値)を集計し、構成要素と攻撃種別の組み合わせにおける平均リスク値情報を作成しておいて評価する方法である。
【0051】
また、リスク評価部24による評価値の算出方法を複数用意し、管理者が選択できるようにして、選択した算出方法によるそれぞれのテストシナリオの優先度を管理者が比較できるようにしてもよい。この場合は、テスト設計の見積もり時や、顧客への説明時に利用することが可能である。
【0052】
(重複テストシナリオ判定結果1400)
図14は、重複テストシナリオ判定結果1400の一例を示す図である。重複テストシナリオ判定結果1400は、重複シナリオ判定部25により作成され、記憶部40に格納される。重複テストシナリオ判定結果1400は、複数のレコードから構成され、各レコードは、各テストシナリオの1ステップを一意に特定する情報が格納されるステップ1401と、シナリオ作成部23が作成したテストシナリオの各ステップの説明が格納される説明1402とを有する。
【0053】
図14に示す例の上半分は、
図12に示したルートR1のテストシナリオを説明している。
図14のレコード目のステップ1401に格納される「R1−1」は、ルート「R1」の「1」つめのステップであることを示している。
【0054】
説明1402には、1つのテストシナリオの構成要素と攻撃種別の組み合わせのつながりを複数に分解して表現したものが格納される。複数に分解することで、別のテストシナリオと同一の構成要素と攻撃種別の組み合わせのつながりである箇所が判定できる。たとえば、
図14では「I5−D1→I3−D4→I2−D6」が複数のテストシナリオ上に存在している。
【0055】
重複テストシナリオ判定結果1400は、構成要素と攻撃種別の組み合わせのつながりが重複している箇所を管理者に分かるように示して出力する。
図14に示す例では、ルート「R2−1」など重複するテストシナリオは斜線を付している。重複箇所は一度そのシナリオへの攻撃に対してセキュリティ対策が機能していることが確認できれば、その箇所に関するテストを削減し、異なるテストシナリオ箇所、すなわち異なる構成要素と攻撃種別の組み合わせのつながり箇所に関するテストのみを実施することとしてもよいと考える。そのため、重複テストシナリオ判定結果1400により、同一のテストを設計するテスト設計工数を削減し、テストを効率化する効果が得られる。
【0056】
重複シナリオ判定部25はたとえば、テストシナリオ出力結果1200に記載されたそれぞれのテストシナリオを1ステップずつ分解して各ステップの動作を説明1402に格納する。この際に重複シナリオ判定部25は攻撃種別情報700および攻撃経路情報1100を参照する。重複シナリオ判定部25は全ルートの全ステップについて説明1402に記載すると、重複する記載を検索し、2回目以降に出現する記載には重複を示す表示、たとえば斜線の付加を行う。
【0057】
なお以下では、記載を簡潔にするために、各フィールドに格納されている値を言及する際に、フィールドの名称をそのまま用いる。たとえば
図10に示す例では「無線LAN」は要素名901のフィールドに格納される値であるが、以下の説明では、要素名901が「無線LAN」である、とも言う。
【0058】
(処理シーケンス)
図15は、テストシナリオ生成装置1および管理者端末2の処理シ−ケンス図である。なお管理者端末2は、構成管理DB3であってもよい。
【0059】
ステップS401では管理者端末2は、入出力部60または通信部80を介しテストシナリオ生成装置1に対して、評価対象の要素名、資産該当の有無、および階層を入力する。ステップS402ではテストシナリオ生成装置1の処理部20は、入力された情報を用いて階層情報500を作成し、記憶部40に格納する。続くステップS403ではテストシナリオ生成装置1の割付部21は、階層情報500、脆弱性情報600、および脆弱性対応情報710を用いて攻撃種別情報900を作成する。具体的には次の3段階により攻撃種別情報900が作成される。第1段階では割付部21は、階層情報500の全ての要素名502を攻撃種別情報900の要素名901に割り付ける。たとえば
図10に示す例では、
図4の要素名502が順不同で要素名901に転記される。
【0060】
ステップS403の第2段階では割付部21は、脆弱性情報600を参照して攻撃種別情報900の要素名901に対応する脆弱性602を脆弱性902に割り付ける。たとえば
図10に示す例の最初のレコードでは、「無線LAN」に対応する脆弱性情報として「CWE−001」と「CWE−010」が脆弱性902に割り付けられる。第3段階では割付部21は、脆弱性対応情報710を参照して攻撃種別情報900の脆弱性902に対応する攻撃種別情報712を攻撃種別符号903に割り付ける。以上の処理により攻撃種別情報900が作成される。
【0061】
続くステップS403ではテストシナリオ生成装置1の経路作成部22は、階層情報500と要素連結510を用いてインタフェースから資産に至る攻撃経路を特定する。そして経路作成部22は、作成した攻撃経路に対し、攻撃種別情報900に格納される情報を用いて、作成した攻撃経路に対して攻撃種別情報を割り付け、攻撃経路情報1100を作成する。本ステップの詳細は
図16で述べる。
【0062】
続くステップS405ではテストシナリオ生成装置1のシナリオ作成部23は、攻撃経路情報1100を参照して複数のテストシナリオを作成する。テストシナリオは、次の3段階の処理をステップ404で作成した攻撃経路情報1100の各テーブルに対して実行する。処理対象として選択するテーブルの順番は不問である。
【0063】
ステップS405の第1段階では、シナリオ作成部23は、攻撃経路情報1100の処理対象のテーブルにおける攻撃の侵入順序の最も入り口側となる行において、要素番号情報1103と攻撃種別符号1105を取得し組み合わせる。たとえば
図11に示す例では、「I5」と「D1」を組み合わせて「I5−D1」を得る。ただしここでは視認性を確保するために組み合わされた両者の間に「−」(ハイフン)を挿入しているが、このハイフンは省略してもよい。
【0064】
ステップS405の第2段階では、シナリオ作成部23は、侵入順序の次行の要素番号情報1103と攻撃種別符号1105を同様に取得し、組み合わせたものを第1段階の組合せにつなげる。たとえば
図11に示す例では、「I4」と「D1」を組み合わせて「I4−D1」を得て、「I5−D1」と繋げることで、「I5−D1→I4−D1」を得る。ただしここでは順番を示すために右向き矢印を用いているが、コンマ、セミコロン、スラッシュなど任意のデリミタを用いてもよい。
【0065】
ステップS405の第3段階では、シナリオ作成部23は、第2段階の処理を侵入順序の出口側、すなわち攻撃対象となる資産まで繰り返し実行する。なお、攻撃種別符号1105に複数の値が格納されている場合には、テーブルに記載された攻撃種別の数だけ同じ要素番号を組み合わせる。たとえば
図11に示す例では、「I3−D4」と「I3−D6」をそれぞれ作成する。また、攻撃経路情報1100の各行は、その行で攻撃種別情報の攻撃が起こらない場合は、その行を飛ばして次行の要素番号情報1103と攻撃種別符号1105の組み合わせにつなげる。
【0066】
以上の第1段階〜第3段階により、攻撃経路情報1100に記載された要素番号情報と攻撃種別情報をすべて組み合わせたテストシナリオが作成される。前述のように攻撃経路情報1100に含まれるテーブルごとに、すなわち攻撃対象ごとに上記の処理を繰り返し、すべての攻撃対象に対してテストシナリオを作成する。
【0067】
続くステップS406ではテストシナリオ生成装置1のシナリオ作成部23は、ステップ405で作成したテストシナリオの攻撃種別符号の順序が、シナリオパターン情報800のいずれかのパターンに合致するか否かを判断する。ただしこの際にはテストシナリオの攻撃種別符号1105のみに注目し、要素番号情報1103は無視する。たとえば「I5−D1→I3−D4→I2−D6→I1−D5」というテストシナリオは、「D1→D4→D6→D5」というパターンに一致すると判断する。シナリオ作成部23は、いずれのパターンにも合致しないと判断する場合は、そのテストシナリオを削除する。
【0068】
続くステップS407ではテストシナリオ生成装置1のシナリオ作成部23は、ステップS405において作成されたテストシナリオであって、ステップS406において削除されなかったテストシナリオをテストシナリオ出力結果1200のテストシナリオ1203として割付ける。そしてシナリオ作成部23は、各テストシナリオに対応する攻撃対象1202を格納し、各テストシナリオを一意に特定する符号であるルート1201に任意の文字列、たとえば「R1」から始まる連番を格納する。以上によりテストシナリオ出力結果1200が作成される。
【0069】
続くステップS408ではシナリオ作成部23は、ステップS407において作成したテストシナリオ出力結果1200を管理者端末2へ出力する。以上が
図15の説明である。
【0070】
(攻撃経路情報の作成)
図16は、テストシナリオ生成装置1の攻撃経路作成処理、すなわち
図15のステップS404の詳細を示すフローチャートである。テストシナリオ生成装置1の経路作成部22は、本図で示す処理を実行することで、攻撃経路情報1100を攻撃対象資産ごとに作成する。以下に説明する各ステップの実行主体は、テストシナリオ生成装置1の経路作成部22である。
【0071】
ステップS1001では経路作成部22は、階層情報500の全体を読み込む。続くステップS1002では経路作成部22は、階層情報500から資産該当503が「YES」である要素名502の1つを選択する。ここで選択した要素名502がその攻撃経路情報1100における攻撃対象資産となり、攻撃対象1102に格納される。以下では、ステップS1002において選択した構成要素を「処理対象資産」と呼ぶ。
【0072】
ステップS1003では経路作成部22は、要素連結510を参照して、インタフェースからステップ1002において選択した資産である構成要素へ至る経路、すなわち構成要素の順番を特定して攻撃経路情報1100の要素名1104に順番に格納する。本実施の形態では、攻撃対象資産を最上行に配置し、インタフェースの階層の構成要素を最下行に配置する。
【0073】
ステップS1004では経路作成部22は、ステップ1003で並べた構成要素群に、その順番に応じて構成要素を識別するための要素番号を振り、攻撃経路情報1100の要素番号情報1103に格納する。ステップS1005では経路作成部22は、攻撃種別情報900の要素名901および攻撃種別符号903を参照して、要素名1104に対応する攻撃種別符号1105を割り付ける。
【0074】
ステップS1006では経路作成部22は、階層情報500における全ての資産を処理対象資産としたか否かを判断する。全ての資産を処理対象資産としたと判断する場合には
図16に示す処理を終了し、処理対象資産としていない資産が存在すると判断する場合はステップS1002に戻る。以上が
図16に示す処理の説明である。
【0075】
上述した実施の形態によれば、次の作用効果が得られる。
(1)テストシナリオ生成装置1は、車載装置に対する攻撃に関するテストシナリオを生成する。テストシナリオ生成装置1は、車載装置に含まれる複数の構成要素、および構成要素のうち攻撃対象となりうる資産を示す情報を含む階層情報500、構成要素同士のつながりを示す要素連結510、構成要素ごとの脆弱性を示す脆弱性情報600、および脆弱性ごとの攻撃種別を示す攻撃種別情報700を格納する記憶部40と、階層情報500、脆弱性情報600、および攻撃種別情報700を用いて、構成要素ごとの攻撃種別を特定した攻撃種別情報900を作成する割付部21と、要素連結510に基づき資産である構成要素までの侵入経路を生成し、攻撃種別情報900を用いて、構成要素および攻撃種別の組合せを侵入経路の順番に並べたテストシナリオを複数生成するシナリオ作成部23とを備える。そのため、構成や機能の脆弱性を組み合わせた攻撃に対応する漏れのないテストケースが作成できる。本実施の形態によれば、製品の攻撃経路を考慮したテストシナリオを網羅的に作成することが可能であり、また構成要素の脆弱性情報と攻撃種別情報を勘案し、構成要素のつながりと脆弱性を組み合わせた攻撃に関するテストシナリオを作成することが可能である。
【0076】
(2)記憶部40には、攻撃種別が実行される順番を示すシナリオパターン情報800が格納される。シナリオ作成部23は、要素連結510に基づき資産である構成要素までの侵入経路を全て生成して得られたテストシナリオのうち、シナリオパターン情報に該当するテストシナリオのみを抽出する。そのため、種別ごとの攻撃の順番を考慮した現実的なテストシナリオを作成することができる。
【0077】
(3)テストシナリオ生成装置1は、シナリオ作成部23が生成したテストシナリオのごとの優先順位を決定するリスク評価部24を備える。そのため、ユーザにテストシナリオの優劣を提示できる。
【0078】
(4)テストシナリオ生成装置1は、シナリオ作成部23が生成した複数のテストシナリオのうち、構成要素および攻撃種別の組合せが侵入口から少なくとも一部が重複するテストシナリオを検出する重複シナリオ判定部25を備える。そのため、重複しているテストシナリオの一部をユーザに明示できる。
【0079】
(変形例1)
実施の形態では、テストシナリオ生成装置1に管理者端末2が接続されていた。しかし、テストシナリオ生成装置1は構成管理DB3に接続され出力結果をテストシナリオ生成装置の出力部で出力する構成としてもよい。また、テストシナリオ生成装置1のみで機能する構成としてもよい。さらに、テストシナリオ生成装置1を評価対象に直接接続して情報を入手してもよい。
【0080】
(変形例2)
テストシナリオ生成装置1は、通信装置305、入力装置306、出力装置307、および読取装置308のそれぞれを備える代わりに、それぞれの装置に対するインタフェースを備えてもよい。たとえばテストシナリオ生成装置1は、出力装置307そのものを備えるのではなく、液晶ディスプレイに映像信号を出力するための映像信号出力回路および映像信号出力端子を備えてもよい。
【0081】
(変形例3)
脆弱性情報600は既知の具体的な脆弱性の情報が格納された。しかし具体的な脆弱性の情報の代わりに、機能や構成ごとの傾向としての脆弱性を利用してもよい。
【0082】
図17は、変形例3における脆弱性情報600Aの一例を示す図である。脆弱性情報600Aは、構成要素の分類を示す情報を格納する構成要素情報603と、該当の構成要素の分類が含有する傾向にある脆弱性を示す情報を格納する脆弱性情報604とを有する。構成要素情報603に格納される情報は、構成要素の製品種別名や、ソフトウェアの種別名、ソフトウェアを構成する機能の種類名や機能分類名、機能の傾向、要素技術名などである。脆弱性情報604に格納される情報は、脆弱性602と同様に、たとえば脆弱性を分類したCWE番号や、過去に発見された脆弱性情報をナンバリングしたCVE番号や、脆弱性の固有名称などが考えられる。
【0083】
本変形例によれば、構成要素の種別や機能分類と脆弱性情報とを対応させるので、構成要素の名称が完全に一致しない場合でも脆弱性の存在を推認してテストシナリオを作成できる。なお、本変形例で示した脆弱性情報600Aを実施の形態における脆弱性情報600と置き換えるだけでなく、両者を併用してもよい。
【0084】
(変形例4)
テストシナリオ生成装置1は、シナリオパターン情報800を備えず、シナリオパターンを考慮せずに網羅的な組み合わせのシナリオパターンを出力してもよい。
【0085】
上述した各実施の形態および変形例において、機能ブロックの構成は一例に過ぎない。別々の機能ブロックとして示したいくつかの機能構成を一体に構成してもよいし、1つの機能ブロック図で表した構成を2以上の機能に分割してもよい。また各機能ブロックが有する機能の一部を他の機能ブロックが備える構成としてもよい。さらに、プログラムにより実現される機能の一部または全部がハードウエア回路やFPGAにより実現されてもよい。
【0086】
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。