脅威モデリングとは
脅威モデリングを活用して、ソフトウェア全体にわたる脅威を軽減するためのツール、手法、ベスト プラクティスをご覧ください。
脅威モデリングとは
脅威モデリングとは、潜在的なセキュリティ リスクを検出し、アプリケーション全体のセキュリティ態勢に影響を与えるおそれのある脆弱性に対するリスク緩和戦略を提供する、構造化されたエンジニアリング プロセスを指します。エンジ二アリング チームは、コードをデプロイする前にソフトウェア アーキテクチャをレビューしバリデーションすることで脅威モデルを構築します。
脅威モデリングの構成要素
脅威モデリングは少なくとも以下の 3 つの主要タスクで構成されます。
システムのモデリング: 分析対象とするアセットを特定します。例えばアーキテクチャ システム、セキュリティ管理、脅威主体などが含まれるでしょう。次に、コンポーネント図を用いてシステム構成を図表化し、システム アーキテクチャおよびそのデータの流れを概要レベルで可視化します。
脅威分析の実施: 確立された脅威モデリング手法を用いて、具体的な脅威タイプの分析を行い、潜在的な脆弱性を特定してリスクを数値化します。
脅威の優先順位付け: 脅威モデリングツールを用いて脅威スコアを割当てることで、リスクの優先順位付けをサポートします。特に重大な脅威を特定できたら、次にファイアウォールの変更や多要素認証の設定などのリスク軽減対策を策定します。
脅威モデリングのフレームワークと手法
脅威の特定において最も実績のある手法は、チェックリストもしくはテンプレートを用いて脅威を分類するチェックリスト型のアプローチでしょう。チームによってはよりクリエーティブなアプローチを採用する場合もあります。
最も人気のある脅威モデリングのフレームワークおよび手法は以下を含みます。
STRIDE は、想定されるさまざまなタイプのシステム攻撃手法に基づいた脅威モデリング手法です。STRIDE とは、Spoofing (なりすまし)、Tampering (改ざん)、Repudiation (否認)、Information disclosure (情報漏えい)、Denial of service (サービス拒否)、Elevation of privilege (権限昇格) の頭文字をとったものです。
DREAD は、脅威をその想定される影響の度合いに応じて優先順位付けする手法です。DREAD とは、Damage (被害の可能性)、Reproducibility (再現性)、Exploitability (悪用される可能性)、Affected users (影響を受けるユーザー)、Discoverability (発見可能性) の頭文字をとったものです。
OCTAVE は、組織にとって最も重要なアセットに及ぼすリスクを特定し評価する手法です。OCTAVE とは、Operationally Critical Threat (運用上重大な脅威)、Asset (アセット)、Vulnerability Evaluation (脆弱性評価) の頭文字をとったものです。
PASTA は、攻撃のシミュレーションにより脅威の特定とリスクへの対応を行う手法です。PASTA とは、Process for Attack Simulation and Threat Analysis (攻撃シミュレーションと脅威分析のプロセス) の頭文字をとったものです。
脅威モデリング用ツール
多くのエンジニアリングチームは、様々なツールを活用して独自の脅威モデリング手法を構築しています。例えば GitHub のエンジニアリング チームは、Microsoft Thread Modeling Tool (Microsoft 脅威モデリングツール) と OWASP's Threat Dragon を利用して、アプリケーション全体の API、依存関係、データストア、認証メカニズムのマッピングを行っています。
Microsoft Thread Modeling Tool は、ソフトウェア アーキテクチャ内に存在する脅威をさまざまな手法で可視化できる、開発者と非開発者両方にとって脅威モデリングがしやすいツールとなっています。Microsoft Thread Modeling Tool は、主な対象を設計分析に絞ることにより、だれでもシステムのセキュリティ設計を図に表して潜在的なセキュリティ問題が存在しないか分析し、軽減策の提案に利用できるツールとなっています。
一方 OWASP の Threat Dragon は、脅威モデリング図を作成することで、ソフトウェア アーキテクチャ内の多くのコンポーネント、脅威サーフェス、およびデータの流れの概要をビジュアル化します。また Threat Dragon は、自動化して脅威や軽減策を自動生成させることもできます。
いずれのツールも、API、依存関係、データベースなどを含む検討すべき重要なコンポーネントの概要をビジュアル化します。これは、各チームが監査時にセキュリティ コンプライアンス要件をどのように達成できるかを検討する際に便利です。
効果的な脅威モデリングのためのベスト プラクティス
脅威モデルの構築または編集にあたっては、以下のベスト プラクティスを考慮することをお勧めします。
**分析の対象とするスコープと階層の厚みを定義する。**モデル構築前に、ステークホルダーと共同でプロジェクトのスコープを定義すること。また開発チーム内で分析対象とする階層の厚みについても検討しておきます。この段階で定常的な評価実施サイクル (数か月おき、年に 1 回、等) を決めておきましょう。
**コラボレーションとコミュニケーション。**脅威モデリングは、開発チームとセキュリティ チームが共同で行うコラボレーション活動であり、いずれのチームも効果的な脅威モデルのプランニング、設計、およびレビューについて発言の機会を与えられる必要があります。開発チームとセキュリティチームそれぞれが、プロセス開始の段階から自チームの目指す目標や期待する内容について相手チームに伝達すること。
**脅威モデルをビジュアル化する。**脅威モデリングの戦略が決定したら、システム図を作成していきます。アプリケーション サーバー、データベース、データ ウェアハウスなど全ての主要な構成要素をシステム図に含めるようにします。各構成要素間のデータのやり取りや移動の流れも図に示すこと。
**システム全体を包括的に表現する。**システム図を作成する際には、システムの全ての側面を正しく表現することが重要です。例えば、攻撃につながる恐れがある、脅威主体がとり得る侵入・移動経路すべてを反映する必要があります。これはり、どんなセキュリティ管理が欠落しているか、脆弱か、あるいは強化が必要かを判断するのに役立ちます。
**既存のプロセスに組み込む。**チームを新しく導入するセキュリティ ツールやプロセスにスムーズに順応させるには、既存のコード セキュリティ プロセスおよびアプリケーション セキュリティ テスト (AppSec) プロセスに脅威モデルを組み込むことが重要です。
脅威モデリングのメリット
脅威モデリングは、システムのセキュリティを確保し、エンジ二アリング ワークフローをサポートし、チーム間のコミュニケーションを促進するのに重要なツールです。本番システムの設計とプランニングの段階に脅威モデリングを組み込むことで、脅威の解消が比較的容易な段階で脅威を特定し修復することができ、生産開発コスト全体を引き下げる効果が得られます。
チームメンバー全員に対して脅威モデリングの教育を行うことが重要です。これには、脅威モデリングをどのように SDLC に組み込んでDevSecOps プロセスの各ステップにおける脅威意識を高めるかが含まれます。
FAQ
脅威モデリングとは
脅威モデリングとは、確立されたフレームワークと手法を活用して、アプリケーションのソフトウェア アーキテクチャに存在する潜在的なセキュリティの脆弱性を、コードのデプロイ前に特定し軽減するためのリスク評価手法です。脅威モデリングは、アプリケーションの全体的なセキュリティ態勢を強化します。
脅威モデリングはどのような目的で使用されますか?
脅威モデリングは、ソフトウェア アーキテクチャ内に存在する脅威となり得るセキュリティ リスクを特定し、優先順位付けを行うために使用されます。
脅威モデリング フレームワークとは何ですか?
脅威モデリング フレームワークは、確立された手法、チェックリスト、またはテンプレートを適用することで、セキュリティ リスクと脆弱性を特定するための構造化されたアプローチを組織に提供します。中には、趣向を凝らしたフレームワークもあり、脅威を特定するためにチェックリストに依存しないアプローチを採用しているものもあります。
脅威モデリングの 4 つのステージとは何ですか?
エンジニアリング チームは、以下の 4 つの質問または脅威モデリングのステージに基づいて、プロセスを進めます。
現在取り組んでいることは何か。
問題になる可能性があるものは何か。
その問題に対してどのような対応を講じるか。
適切な対応が取れたかどうか。
最も一般的な手法やフレームワークにはどのようなものがありますか?
脅威モデリングの 3 つの主なアプローチには、STRIDE、DREAD、および OCTAVE があります。
脅威モデリングにおける STRIDE とは何ですか?
STRIDE は、なりすまし、改ざん、否認、情報漏えい、権限昇格を表しています。攻撃者がシステムを侵害しようとするさまざまな方法を検討することで、脅威を特定するのに役立ちます。
脅威モデリングを行うにはどうすればよいですか?
脅威モデリングを行うには、次の 3 つの手順が必要です: システムのモデル化 (アセットの特定と図の作成)、立証済みの手法を用いた脅威分析の実施、および脅威スコアに基づく脅威の優先順位付けとリスクの計算。
最も一般的な脅威モデリングは何ですか?
Microsoft Threat Modeling Tool です。このツールは、システム コンポーネント、データ フロー、その他のセキュリティ アセットを可視化するツールを提供することで、開発者だけでなく開発者以外の人も脅威モデリングを簡単に行えるようにします。
ソフトウェア開発ライフサイクル (SDLC) において、脅威モデリングをいつ使用するべきでしょうか?
脅威モデリングは SDLC 全体を通じて実施されますが、特に本番環境の設計と計画フェーズに使用すると最も効果的です。脅威を早期に特定できるほど、コスト削減効果が高まります。