セキュリティセンターTOP > セキュアプログラミング講座 > C/C++言語編 > 脆弱性回避策とソフトウェア開発工程 > 脅威モデリング

第2章 脆弱性回避策とソフトウェア開発工程
脅威モデリング

脅威モデリングを行おう

脅威モデリングは、開発対象のソフトウェアがどのようなセキュリティ脅威にさらされており、攻略される可能性を持ちうるかを洗い出す活動である。潜在するセキュリティ脆弱性を上流工程で見つけ出すことによって、より効果的に脆弱性を排除することを狙う。

脅威モデリングはいつ行うか

脅威モデリングは、ソフトウェアの設計段階の比較的初期に行う。より具体的には、設計の概要がある程度落ち着いて、次の事項の見通しがはっきりしてきた時点で行う。

脅威モデリングの手順

脅威モデリングは次の手順で行う。

1) システム構造図

対象ソフトウェアシステムの構造を大まかな図にする。

2) データフローライン

具体的なオペレーションのシナリオをとりあげ、そのときのデータの流れの線をシステム構造図の上に描く。多くの場合シナリオはひとつのみでないと考えられるので、通常は複数のデータフローラインがあり得る。ただし、いちどにはひとつのラインを描く。

3) データフローラインをたどる

データフローラインに沿って、データの入力、検査、伝達、保管、読み出し等のライフサイクルをシミュレートする。

4) 脅威の洗い出し

データフローラインがシステム構成要素と要素のつなぎ目を通る際、そのインタフェースに近寄り得る人物が次のことを行う手順の想定を試みる。

侵害手順1. 不正なデータを入力しコンピュータ内で任意のマシンコードを実行させる手順
侵害手順2. 情報の漏洩・改ざんを起こす手順
侵害手順3. 業務の継続を妨害する手順

上記の侵害手順が存在する場合、そこで起こる侵害をこのソフトウェアシステムに対する脅威として取り上げ「脅威リスト」に記載する。

5) シナリオ数分繰り返し

データフローラインを引き、脅威を洗い出し、評価する作業を、オペレーションのシナリオの数ぶん繰り返す。

図2-1: 脅威モデリング

脅威のランク付け

多くの脅威が見いだされた場合、脅威のランク付けをし、優先的に対策すべきものを選び出す。

ランク付けの方法の例として、上記で洗い出した脅威のひとつひとつに関し、次の5つの尺度のそれぞれにおおまかな評価を下し(大、中、小)、この5項目の総合評価をその脅威のランクとして割り当てる方法がある。

ネットワークを介した脅威の例

クライアントサーバシステムにおいては、脅威としてクライアントマシンのユーザがサーバコンピュータを攻撃することや、その逆の想定が必要である。ネットワークを介した関係にかかわる脅威の例には次のようなものがある。

  1. 攻撃者が、他人や自分の携帯機器やクライアントソフトウェアを「こじあけ」て、情報を取り出す
  2. 攻撃者が、他人の携帯機器やPCを侵害してから、そこにあるアカウント等を用いてサーバに不正アクセスする
  3. 攻撃者が、ネットワークプロトコルを通じてサーバを侵害する
  4. 攻撃者が、悪意のサーバからクライアントや携帯機器を侵害する
  5. 攻撃者が、ネットワーク機器を侵害して、そこから匿名アクセスする
  6. 攻撃者が、ワームをばらまく