00b. 脅威モデリング
脅威モデリング
DevSecOps の取り組みで重要なのは脅威モデリングです。脅威モデリングはリスクの特定と管理の構造化された活動です。そこでこのパートでは、このトピックについて詳しく見ていきたいと思います。
脅威モデリングとは何か?
これはアプリケーションを攻撃できるすべての潜在的な方法を一覧にするプロセスです。このプロセスのアウトプットは脅威シナリオとその緩和策のリストです。
私たちのアプローチはすべての脅威をカバーする全体的なものであるべきです。これを実現するには、アプリケーションの特定の部分だけに焦点を当てるべきではありません。
もう一つ重要なことは、脅威モデリングは 協調的 (Collaborative) かつ 反復可能 (Repeatable) なプロセスであるということです。
プロセスアウトプット:
ダイアグラム
セキュリティ要件
非要件
脅威、脆弱性、緩和策のリスト
用語:
弱点 (Weakness)
ソフトウェアの不具合やバグ (例: ユーザーの電子メールバリデーションの欠落)
脆弱性 (Vulnerability)
悪用可能な弱点 (例: ユーザー電子メールフィールドを悪用して SQL ステートメントを挿入できる)
攻撃 (Attack)
ターゲット (Target): 攻撃の価値
攻撃ベクトル (Attack Vector): 攻撃者が脆弱性を悪用するためにたどることができる経路
脅威アクター (Threat Actor): 脅威の発生源
攻撃対象領域 (Attack Surface)
脅威アクターが入手、使用、または攻撃できる可能性のあるもの
リスク (Risk)
リスク (Risk) = 影響 (Impact) * 可能性 (Likelihood)
影響 (Impact): 各リスクがもたらす悪影響の大きさ
可能性 (Likelihood): リスクが発生する確率
アプローチ (Approach)
どのようなプロセスで始めることができるかの説明
手法 (Methodology)
プロセスそのものの説明
なぜ脅威モデリングなのか?
脅威モデリングを使用する主な理由としては以下のことが挙げられます。
脅威を発見するためのプロアクティブなアプローチ
コスト削減による効率向上
バグに基づくより適切な優先順位付けと緩和策の計画
システムの理解が深まる
脅威モデリングには誰が参加すべきか?
アーキテクト - アプリケーションがどのように設計されているか、どのようにデータが流れているかを知っています。
開発者 - アプリケーションがどのように構築されたか、コンポーネント間の相互連携について知っています。
テスト担当者 - 要件とアプリケーションが何をすべきかを知っています。
セキュリティ専門家 - 特定の攻撃要因と脆弱性について知っています。
なお、この質問に対するベストアンサーは 組織による となります。
脅威モデリングをいつ実施するか?
理想的には、脅威モデリングはソフトウェア設計プロセスの早い段階で実施すべきです。そうすることでより簡単で安価に修正が行えます。
アジャイル環境では、脅威モデリングは各スプリントの中で行うべきです。しかし、毎回ゼロから始める必要はありません。各スプリントでは前回の脅威モデルアウトプットのイテレーションが必要なだけです。
適切なアプローチと手法を選択する
手法
一般的な脅威モデリング手法には以下があります。
PASTA
Microsoft Threat Modeling
OCTAVE
TRIKE
VAST
上記の利用可能な手法は 3 つの一般的なアプローチのいずれかに基づいています。
アプローチ
資産中心のアプローチh
手順:
資産のリストを作成する
資産、コンポーネント、データフローを描く
要素ごとに脅威をチェックする
攻撃者中心のアプローチ
手順:
脅威アクターのリストを作成する
動機
手段
機会
脅威のリストを作成する
アプリケーション中心のアプローチ
手順:
アプリケーションのダイアグラムを描く
要素ごとに脅威をリストする
STRIDE
OWASP TOP 10
分類モデルを使用して脅威をランク付けする
Last updated