2-1-1-脅威モデリング (Threat-modeling)

脅威モデリング

脅威モデリングは DevSecOps アプローチの重要な要素であり、構造化された方法でリスクを特定して管理することに重点を置いています。ここではこのトピックについてより詳しく見ていきます。

脅威モデリングとは何か?

脅威モデリングではアプリケーションに対する潜在的な攻撃ベクトルをすべて列挙し、脅威シナリオのリストを緩和策とともに作成します。この全体的かつ協調的なプロセスにより、潜在的な脅威を包括的にカバーできます。

もう一つ重要なことは、脅威モデリングは 協調的 (Collaborative) かつ 反復可能 (Repeatable) なプロセスであり、プロジェクト ではなく プロセスであるということです!

主要なアウトプット:

  • システムダイアグラム: アーキテクチャとデータフローの詳細な表現。

  • セキュリティ要件: システムを保護するための具体的な基準。

  • 脅威リスト: 潜在的な脅威と緩和戦略のカタログ。

用語:

  • 弱点 (Weakness): ソフトウェアの不具合やバグ。(例: 入力バリデーションエラー、ユーザーの電子メールバリデーションの欠落)

  • 脆弱性 (Vulnerability): 悪用可能な弱点。(例: ユーザー電子メールフィールドを悪用して SQL ステートメントを挿入できる)

  • 攻撃 (Attack): 脆弱性の悪用。

    • ターゲット (Target): 攻撃の目的 (機密データなど)。

    • 攻撃ベクトル (Attack Vector): 攻撃者が脆弱性を悪用するためにたどることができる経路 (例: ウェブインタフェース)。

    • 脅威アクター (Threat Actor): 脅威の発生源 (例: ハッカー、内部関係者)。

  • 攻撃対象領域 (Attack Surface): 脅威アクターが入手、使用、または攻撃できる可能性のあるもの。

  • リスク (Risk): 脅威が悪用された場合の影響と可能性 (リスク (Risk) = 影響 (Impact) * 可能性 (Likelihood))。

    • 影響 (Impact): 各リスクがもたらす悪影響の大きさ。

    • 可能性 (Likelihood): リスクが発生する確率。

  • アプローチ (Approach): どのようなプロセスで始めることができるかの説明。

  • 手法 (Methodology): プロセスそのものの説明。

なぜ脅威モデリングなのか?

脅威モデリングの利点として、以下のことが挙げられます。

  • プロアクティブな脅威の特定: 潜在的なセキュリティ問題を早期に発見します。

  • コスト効率: 脅威を早期に緩和することで、修復コストを削減します。

  • 優先順位付け: 最も重大な脆弱性に焦点を当てます。

  • システムの理解: システムの相互連携とデータフローをより深く理解します。

脅威モデリングには誰が参加すべきか?

  • アーキテクト: アプリケーションがどのように設計されているか、どのようにデータが流れているかを把握し、適切な設計とフローを確保します。

  • 開発者: アプリケーションがどのように構築されたか、コンポーネント間の相互連携について把握し、コードと相互連携に関する洞察を提供します。

  • テスト担当者: 要件と、アプリケーションが何をすべきかを把握し、要件と動作を確認します。

  • セキュリティ専門家: 特定の攻撃因子と脆弱性について把握し、セキュリティリスクを特定して評価します。

なお、この質問に対するベストアンサーは 組織による となります。

脅威モデリングをいつ実施するか?

理想的には、脅威モデリングはソフトウェア設計プロセスの早い段階で実施すべきです。そうすることでより簡単で安価に修正が行えます。

アジャイル環境では、脅威モデリングは各スプリントの中で行うべきです。しかし、毎回ゼロから始める必要はありません。各スプリントでは前回の脅威モデルアウトプットのイテレーションが必要なだけです。

適切なアプローチと手法を選択する

一般的な手法

一般的な脅威モデリング手法には以下があります。

  • PASTA (Process for Attack Simulation and Threat Analysis): ビジネスの影響に焦点を当てます。

  • Microsoft Threat Modeling: データフローダイアグラム (DFD) を使用して脅威を特定します。

  • OCTAVE (Operationally Critical Threat, Asset, and Vulnerability Evaluation): 組織のリスクを重視します。

  • TRIKE: セキュリティ監査フレームワークです。

  • VAST (Visual, Agile, and Simple Threat): 自動化によるアジャイル開発をサポートします。

アプローチ

アプローチ

手順

資産中心

1. 資産を特定して分類します。 2. コンポーネントとデータフローを図解します。 3. 要素ごとに特有の脅威を特定します。

攻撃者中心

1. 潜在的な脅威アクター (内部関係者、外部ハッカーなど) を定義します。 2. 彼らの動機、手段、機会を確定します。 3. 潜在的な脅威をリストアップし、優先順位を付けます。

アプリケーション中心

1. アプリケーションの詳細なダイアグラムを作成します。 2. 要素ごとの脅威を特定します。 3. 脅威分類モデル (STRIDE, OWASP Top 10 など) を使用します。 4. リスク分類モデル (DREAD - Damage, Reproducibility, Exploitability, Affected Users, Discoverability など) を使用して脅威をランク付けします。

各アプローチの詳細な手順

資産中心

  1. 資産の特定:

    • データ、ソフトウェア、ハードウェアを含むすべての資産をリストアップします。

    • 重要度と機密度に基づいて資産を分類します。

  2. コンポーネントの図解:

    • データフローダイアグラム (DFD) を使用して、相互作用をマップします。

    • 信頼境界とデータエントリポイントを明確にします。

  3. 脅威の特定:

    • 各コンポーネントを分析して、潜在的な脅威を探します。

    • Microsoft Threat Modeling Tool などのツールを使用して、脅威の検出を自動化します。

  4. 脅威の緩和:

    • 特定した脅威ごとに具体的な対策を策定します。

    • リスク評価に基づいて緩和策に優先順位を付けます。

攻撃者中心

  1. 脅威アクターの特定:

    • 潜在的な攻撃者 (外部ハッカー、悪意のある内部関係者など) を特定します。

    • アクセスレベルと意図に基づいてアクターを分類します。

  2. 攻撃者のプロファイリング:

    • 攻撃者の目的と能力を理解します。

    • 脅威インテリジェンスソースを使用して、一般的な攻撃方法に関する情報を収集します。

  3. 脅威の列挙:

    • 潜在的な攻撃シナリオをリストアップします。

    • 攻撃ツリーを使用して、攻撃者が脆弱性を悪用する方法をマップします。

  4. 脅威の緩和:

    • 侵入検知システム、アクセス制御、暗号化などの防御策を導入します。

    • 新しいインテリジェンスに基づいて、脅威プロファイルと防御策を定期的に更新します。

アプリケーション中心

  1. アプリケーションの図解:

    • 詳細なアーキテクチャダイアグラムを作成します。

    • データフロー、コンポーネント、相互作用を含めます。

  2. 脅威の特定:

    • コンポーネントごとに STRIDE や OWASP Top 10 などのモデルを適用します。

    • なりすまし、改竄、データ侵害などの脅威を特定します。

  3. リスク評価:

    • DREAD モデルを使用して脅威を評価します。

    • 潜在的な影響と悪用可能性に基づいて脅威をランク付けします。

  4. 脅威の緩和:

    • 高リスクの脅威に対する対策を策定します。

    • セキュアコーディングプラクティスを実装し、定期的なセキュリティレビューを実施します。

DREAD とは何か?

DREAD はサイバーセキュリティで使用されるリスク評価モデルで、潜在的な脅威を評価して優先順位付けします。頭字語は以下を意味します。

  • 損害可能性 (Damage potential): 悪用が成功した場合に発生する可能性がある潜在的な損害を評価します。

  • 再現可能性 (Reproducibility): 悪用がどれだけ簡単に複製できるかを評価します。

  • 悪用可能性 (Exploitability): 脆弱性がどれだけ簡単に悪用できるかを判断します。

  • 影響を受けるユーザー (Affected users): 脆弱性の影響を受けるユーザーまたはシステムの数を特定します。

  • 発見可能性 (Discoverability): 脆弱性がどれだけ簡単に発見できるかを評価します。

これらの各因子は通常 0 から 10 までのスケールでスコア付けされ、スコアが高いほどリスクのレベルが高いことを示します。

脅威モデリングの実践的な手順:

  1. スコープの定義: システムと重要な資産の境界を特定します。

  2. ダイアグラムの作成: DFD とアーキテクチャダイアグラムを作成します。

  3. 脅威の特定: STRIDE などの方法論を使用して潜在的な脅威を見つけ出します。

  4. 脅威の分析: DREAD などのモデルを使用してリスクを評価します。

  5. 緩和策の策定: 戦略を定義して、特定した脅威を緩和します。

  6. レビューと反復: 開発ライフサイクル全体を通じて脅威モデルを定期的に更新します。


ツール:

  • オープンソース:

  • OWASP Threat Dragon - 脅威モデルダイアグラムを作成し、脅威を管理するためのオープンソースツールです。

  • Microsoft Threat Modeling Tool - データフローダイアグラムを作成し、STRIDE を使用して脅威を特定するためのツールです。

  • CAIRIS: モデルを構築し、そのモデルに基づいてリスク評価を実施するためのツールです。

  • threat-composer - 脅威モデリング時に価値実現までの時間を短縮するのに役立つシンプルな脅威モデリングツールです。

  • 商用:

  • ThreatModeler - CI/CD パイプラインと統合する、自動化された脅威モデリングのためのエンタープライズグレードのツールです。

  • IriusRisk - 自動化された脅威モデリングとリスク評価のためのプラットフォームです。


リンク:

Last updated