はじめに
システムや機器に対して脅威分析する際、Microsoft Threat Modeling Tool (以降、MTMT) は便利なツールですが、使いにくい面もあります。そこで、本記事では、MTMT のテンプレートをカスタマイズすることによって、そういった使いにくさを改善する方法をお伝えします。
本記事は、MTMT を一度は使用したことがある方を対象としています。 以降の内容は、Version 7.3.10801.1 の MTMT にて動作確認を行いました。
Microsoft Threat Modeling Tool 概要
基本的な機能
システムや機器に対して脅威分析する際、一般的に以下の手順で進めます(参考文献[1]参照)。
- 脅威分析の対象の決定と守るべき資産の洗い出し
- データフローの可視化
- 脅威の洗い出し
- 脅威を実現する攻撃手法の調査
- 脅威が実現した場合のリスクの評価
MTMT は、上記脅威分析における、2. および 3. を支援するアプリケーションであり、Data Flow Diagram (DFD) の作成や脅威の自動検出が行えます。MTMT を使用した DFD の作成例とその DFD に対して MTMT が検出した脅威一覧を以下に示します。
MTMT の基本的な使用方法については、参考文献[2-4]をご参照ください。
テンプレート機能
MTMT では新規で DFD を作成する際、使用するテンプレートを指定します (図 3. の赤枠)。ステンシル(DFD に配置できるアイコン)や脅威は、このテンプレートで定義されています。
テンプレートの内容は、以下のように MTMT で当該テンプレートファイルを開くことで確認できます。
テンプレートでは以下のプロパティが定義されています。
- 「Stencils」タブ: ステンシル (図 5.)
- 「Threat Types」タブ: 脅威およびその検出条件 (図 6.)
- 「Threat Properties」タブ: 脅威のプロパティ (図 7.)
MTMT 利用時の困りごととその解決案
MTMT は英語版のみの提供のため、英語が堪能でない場合、取っつきにくい面があります。また、MTMT にてデフォルトで利用できるテンプレート (以下の 3 種類) は、どれも汎用的な作りのため、対象とするシステムや機器の脅威分析に適さないケースがあります。
- Azure Threat Model Template
- SDL TM Knowledge Base
- Medical Device Model
そこで、MTMT を利用する際の困りごととその解決案について、以下に記載します。本記事では、SDL TM Knowledge Base テンプレート (Default.tb7) をカスタマイズした場合の内容を記載します。
より脅威分析対象に適したテンプレートをあらかじめ作成することは、ある程度の時間を要します。しかし、デフォルトのテンプレートを使用した場合は、同等の作業を実際の脅威分析時に個別に実施しているとも考えられます。先行投資としてテンプレートのカスタマイズを実施していれば、実際の脅威分析ではその作業が不要になり、工数の短縮に繋がります。脅威分析の実施数が増えれば、さらにその効果は上がります。加えて、脅威分析対象に適したテンプレートを使用することは、たとえば「困りごと 2.」のように、担当者間での表現のバラツキを軽減することにも繋がります。
【困りごと 1.】脅威が英文で表示される
多くの場合、脅威分析では数多くの脅威が洗い出されるため、洗い出された脅威を確認する際の 1 件に費やす時間を可能な限り短くしたいものです。しかし、MTMT が検出する脅威の名称や説明文は英語表記のため、英語が堪能でない場合、検出された脅威を理解するのに多くの時間を要する場合があります。
解決策
このような場合、あらかじめテンプレートの脅威の名称や説明文を日本語で記載することによって対処できます。MTMT によって検出された脅威の情報が日本語で表示されるため、検出された脅威の確認時間の短縮につながります。
以下に、MTMT の操作手順を示します。
- テンプレートファイルを開き、「Threat Types」タブを開く。
- 脅威名を日本語表記したい場合は Title 欄を修正する。同じく、脅威説明文を変更したい場合は Description 欄を修正する。
例
以下に、脅威の名称を英語と日本語を併記した場合の修正内容 (図 8.) とその脅威が検出された際の脅威一覧画面 (図 9.) を示します。
【困りごと 2.】ステンシルの数が多く、どれを使用すればよいか迷ってしまう
SDL TM Knowledge Base テンプレートでは、58 個のステンシルが定義されています。そのため、どのステンシルを利用すればよいのか迷う場合があります。この迷いは、脅威分析を実施する担当者間でのバラツキにも繋がります。たとえば、ある担当者はデータストアとして「Generic Data Store」を使用したが、別の担当者は「Cloud Storage」を選択するなど。
解決策
このような場合、テンプレートから対象システムにおいて使用しないステンシルを削除しておく (使用可能なステンシルを限定する) ことで、DFD 作成時の迷い (担当者間でのバラツキ) を軽減できます。
以下に、MTMT の操作手順を示します。
- テンプレートファイルを開き、「Stencils」タブを開く。
- 削除したいステンシルを選択し、「Delete」をクリックする。
例
以下に、ステンシル「Cloud Storage」をテンプレートから削除した場合の例を示します。
【困りごと 3.】独自の通信プロトコルを使用するが、該当するステンシルが存在しない
システムや機器開発において独自の通信プロトコルを使用する場合など、適するステンシルが既存のテンプレートに存在しない場合があります。そのため、「Generic Data Flow」などの汎用的なステンシルを選択し、独自の通信プロトコルの仕様に即したプロパティを都度設定する必要があるため、DFD 作成の効率が悪くなります。加えて、担当者間で使用するステンシルにバラツキが生じてしまう可能性もあります。たとえば、同一の通信プロトコルを表現するために、ある担当者はデータフローとして「Generic Data Flow」を使用したが、別の担当者は「Binary」を選択するなど。
解決策
このような場合、テンプレートの Generic ステンシルを派生して新たなステンシルを定義することによって対処できます。これにより、DFD 作成時の効率が上がり、担当者間のバラツキ軽減にもつながります。
以下に、MTMT の操作手順を示します。
- テンプレートファイルを開き、「Stencils」タブを開く。
- 派生元の Generic ステンシルを選択し、「Add Derived Stencil」をクリックする。
例
以下に、独自の通信プロトコルである、ステンシル「New Communication Protocol」をテンプレートに追加した場合の例を示します。今回動作を確認したバージョンでは、ステンシル名として日本語を使用できませんでした。
【困りごと 4.】対象システムでは想定しない脅威も洗い出されてしまう
脅威分析では、洗い出された脅威を 1 つ 1 つ確認する必要があるため、考慮する必要がない脅威は洗い出されないほうが効率的です。しかし、MTMT にデフォルトで付属するテンプレートは汎用的に作られているため、自身のシステムや機器では考慮する必要のない脅威が存在し得ます。たとえば、ウェブにアクセスすることがないため、XSS のような脅威を考慮する必要がない開発もあります。
解決策
このような場合、自身の脅威分析対象において想定しない脅威をテンプレートから予め削除しておくことで対処できます。
以下に、MTMT の操作手順を示します。
- テンプレートファイルを開き、「Threat Types」タブを開く。
- 削除したい脅威を選択し、「Delete」をクリックする。
例
以下に、図 2. で検出されている脅威「Spoofing of Destination Data Store {target.Name}」をテンプレートから削除した場合の例を示します。
【困りごと 5.】過去事例やアタックライブラリで示されている脅威を洗い出したい
システムや機器開発において、過去事例や CAPEC に代表されるアタックライブラリで示されている脅威を想定する必要があり得ます。一方、MTMT にデフォルトで付属するテンプレートでは、これら脅威は定義されておらず、脅威として検出されません。
解決策
このような場合、新たに検出したい脅威をテンプレートに追加定義することによって検出されるようになります。
以下に、MTMT の操作手順を示します。 ここでは、STRIDE (参考文献[2]参照)のいずれかのカテゴリに属する脅威を追加する方法について記載します。
- テンプレートファイルを開き、「Threat Types」タブを開く。
- 追加したい脅威が属する STRIDE を選択し、「New Threat Type」をクリックする。
- 作成された脅威の「Title」「Include」「Exclude」「Description」を記入する。 Include および Exclude 条件の文法については、参考文献[5]をご参照ください。
例
以下に、「CAPEC-151: Identity Spoofing」を新たな脅威としてテンプレートに追加した場合の例を示します。ここでは、Include、Exclude、Description は「Spoofing the {source.Name} Process」と同じものを設定しています。
【困りごと 6.】脅威に関連する情報を追加したい
MTMT で DFD を解析した結果として、図 18. のような脅威一覧が表示されます。 脅威分析では、前述のとおり、脅威を洗い出したのち、脅威を実現する攻撃手法を調査し、次に脅威が実現した場合のリスクを評価することになります。 そのため、攻撃例や対策案などの関連情報があらかじめ脅威一覧に含まれていると、以後の作業を効率的に進めることが可能です。
解決策
このような場合、関連情報を脅威の新たなプロパティとして追加し、脅威ごとに適するプロパティ値を記載することで対処できます。
以下に、MTMT の操作手順を示します。
- テンプレートファイルを開き、「Threat Properties」タブを開く。
- 「Add Properties」をクリックする。
- 追加したプロパティの Name(必要に応じて Values)欄を記入する。
- MTMT を再起動する。
- 「Threat Types」タブを開く。
- 各脅威に上記プロパティ欄が追加されているため、その欄に関連情報を記入する。
例
以下に、脅威プロパティに「CAPEC」項目を追加した場合の例を示します。例として「Spoofing the {source.Name} Process」に「151 (Identity Spoofing)」を設定しています。
カスタマイズしたテンプレートの適用方法
新規で DFD を作成する場合
- MTMT 起動直後の画面(図 3.)にて「Template For New Models」として、カスタマイズしたテンプレートを指定する。
- 「Create A Model」をクリックする。
既存の DFD に適用する場合
- 既存の DFD を開いた状態で、メニューの「File > Apply Template...」(図 22.) を選択する。
- 新たに適用するテンプレートを指定する。
- 適用するテンプレートを指定すると、図 23. の確認メッセージが表示されるため、「Yes」をクリックする。 この際、テンプレートの更新により陳腐化した脅威を削除したい場合は、「Do you want to delete stale threat」にチェックを入れた状態で「Yes」をクリックする。
おわりに
本記事では、MTMT のテンプレートをカスタマイズすることによって、より効率的に脅威分析する方法をご紹介しました。ご紹介した方法は一例です。参考文献[5]を参照し、MTMT テンプレートのカスタマイズを行ってみるのはいかがでしょうか。
エンジニア募集
FFRIセキュリティでは、本記事で紹介した脅威分析など、セキュリティ関連の業務を行っております。採用に関しては、こちらを御覧ください。
参考文献
[1]機器のサイバーセキュリティ確保のためのセキュリティ検証の手引き 別冊 1 脅威分析及びセキュリティ検証の詳細解説書
[2]Microsoft Threat Modeling Tool
[3]Monthly Research 「Microsoft Threat Modeling Toolの利用例」
[4]Monthly Research 2016.11 「Microsoft Threat Modeling Tool の利用例」