脅威モデリングは、アプリ、システム、または業務プロセスのセキュリティを向上させるため、リスクや欠陥を洗い出し、対策を講じる手法です。
システムや組織にとって基本かつ重要なセキュリティ要件を把握するのに役立ち、IT資産へのリスクを最小限に抑えるため、潜在的な脅威や欠陥を効率的に特定する方法です。また、IT担当者が脅威の影響や重要性を理解し、適切な対策を実施する助けとなります。
脅威モデリングの成功には、ソフトウェアエンジニアだけでなく、他の関係者の意見も必要です。効果的な脅威モデルを作成するために、各分野の専門家の協力を仰ぐ必要があります。
まず、この作業で何を達成するのかを決める必要があります。目標は通常、以下の点に基づいて設定されます:
プライバシーは、情報が不正に漏れるのを守るために重要です。
情報の不正な変更を防ぐ能力を完全性と言います。
攻撃中でも、基本サービスが維持されることが求められます。
SLA(サービスレベル合意)のリストを作成してください。知的財産やライセンスに関して、どのような基準を設けるかを明確にする必要があります。次に、脅威モデリングにどれだけの時間と費用を割くかを検討します。
この段階では、システムを構成する多数の要素を整理し、全体像を把握します。一般的なアプリの設計図は、利用ケース、データフロー、データ構造、通信図などで示されます。図は2種類作成できます。
データフロー図: システム内でデータがどのように流れるかを示します。各コンポーネントへのデータの出入り、データ格納所、処理、通信、信頼境界などが明らかになります。
利用フロー図: アプリ内での顧客の相互作用や利用ケースの流れを表します。PFDは顧客と外部との連携に焦点を当て、DFDはシステム内部の動作を示します。どちらか一方または両方を使用できます。
主要な要素と資源が特定されたので、次は脅威評価に進むのに適した段階です。
前段階でシステム構成図を作成しました。今回の段階では、この図を基に、各資源がどのような攻撃に晒されるか、攻撃者の特徴は何かを検討します。これは様々な手法で進めることができます。以降、最も一般的な6つの脅威評価手法について説明します。
脅威を特定した後、各資源やその動作に対する専門的な脅威リストや攻撃者のプロファイルが作成されます。次に、どの脅威に対して自社アプリが晒されているかを判断します。本記事の主要部分の例では、脅威が「ブルートフォース攻撃」、システムの弱点が「パスワード保存にMD5アルゴリズムを使用」となっていました。弱点が特定されたら、各リスクを評価し、以下の方法で対処します:
全ての弱点が対策されているかどうか検証します。すべてのリスクが除去されたか、残る脅威がリストアップできるかを確認してください。その後、特定された脅威に対する対応策や次回の脅威モデリングサイクルの日程を決めます。脅威モデリングは継続的なプロセスであり、定期的またはアプリ改善時に実施する必要があります。
どのソフトウェアやシステムも、攻撃に対して頑強であるべきですが、そのためのセキュリティ基準を設定するのは容易ではありません。エンジニアや利用者は攻撃者とは異なる考え方をするためです。
脅威モデリングは、コードレビューや他の調査では見逃されがちな脅威を洗い出す有効な手法です。これにより、アプリに必要なセキュリティ対策や、適切な防御策を迅速に講じる手助けとなります。このプロセスは、全体としてより安全なアプリを実現し、リソースを効果的に利用するための基盤を提供します。
脅威モデルは、堅牢なセキュリティ体制を構築する上で重要な視点です。Wallarmを活用することで、設計時や運用時に脅威モデリングを実施でき、入力確認不足、認証不備、エラー処理の甘さ、データ暗号化の欠如といった問題を回避できます。
STRIDEは純粋なデジタルシステムおよび実システムの両方で高い成果を上げています。Microsoftは、脅威モデリングツールの一環としてSTRIDEを採用しており、またDREAD(損害可能性、再現性、悪用容易性、影響度、発見性)という手法も提唱しています。
STRIDE
脅威 | 侵害対象 | 意味 | |
---|---|---|---|
S | Spoofing | 信頼性 | 他者になりすます |
T | Toying with data | 完全性 | 記憶装置上のデータを変更する |
R | Refusal | 否認防止 | 責任を認めない(正しいか否かは別として) |
I | Intelligence leak | 秘匿性 | 情報を第三者へ渡す |
D | DOS | 可用性 | サービス提供に必要な資源を枯渇させる |
E | Elevation of privilege | 権限のない操作を許可してしまう |
2012年に、攻撃シミュレーションと脅威分析のプロセス(PASTA)が、脅威駆動のモデリング手法として登場しました。これは7段階の攻撃ドリブンプロセスで、ビジネス影響分析やコンプライアンス要件を考慮しながら、技術的要求とビジネス目標を結びつけます。
LINDDUNフレームワーク(linkability, recognizability, nonrepudiation, perceptibility, exposure of data, ignorance, rebelliousness)は、プライバシーとデータ保護のための体系的な手法です。LINDDUNは、6段階のプロセスにより、セキュリティ評価を体系的に実施します。
システムのデータフロー図(DFD)は、情報の流れ、データ格納所、プロセス、外部要素を示し、LINDDUNの最初の段階として利用されます。利用者は、この図からシステムへの脅威の関連性を把握し、各コンポーネントに対して脅威ツリーを作成します。
デジタルシステム、実システム、またはその両方で、攻撃ツリーを用いて脅威を再現する手法は、最も成熟し広く使われている方法の一つです。最初は独立した手法でしたが、現在は他の方法と組み合わせて利用されています。
攻撃ツリーは、システムへの攻撃をツリー状に表現したもので、攻撃者の目的である根本への到達と、そのための複数の経路を示します。各目的ごとに個別のツリーが作られ、システム全体の脅威評価に役立てられます。
TRIKEは、脅威モデリングを活用したセキュリティ評価フレームワークです。経営者視点と技術者視点の両面から脅威を評価します。
他の手法と同様、まずシステムの特性を定義します。関係者、資源、期待される動作、ルールを一覧化し、システムモデルを構築します。この段階では、関係者を行、資源を列に配置した活動マトリックスが作成されます。
各セルは、CRUDの各操作ごとに4つに分割されます。
OCTAVE(Operationally Critical Threat, Asset, and Vulnerability Evaluation)手法は、ネットワークのセキュリティ戦略を評価・策定するためのリスクベースの方法です。SEIのCERT部門が2003年に作成し、2005年に更新されました。OCTAVEは機械的な脅威ではなく、組織的なリスクに焦点を当てた評価手法で、主な3側面は運用上の脅威、セキュリティポリシー、技術です。
ThreatModelerは、高度に自動化された脅威モデリングプラットフォームで、Visual, Agile, and Simple Threat (VAST) モデリング手法の基盤となっています。その柔軟性と使いやすさにより、大規模組織全体で有効かつ顕著な成果を上げることが可能です。
大企業の場合、開発チームとインフラチームの間での役割や懸念の違いを示すため、アプリ脅威モデルと機能脅威モデルの2種類を構築する必要があります。アプリ脅威モデルではプロセスフロー図が、技術的視点ではDFDを用いて、攻撃者の観点でモデルを構築します。これにより、VASTは開発やDevOpsのライフサイクルに組み込むことが可能となります。
Persona non Grata(PnG)は、攻撃者の動機や能力に基づいた手法です。PnGは、実際にシステムを攻撃しうる利用者を想定し、偶発的な利用状況も考慮に入れて脅威を評価します。図5にはいくつかのモデル例が示されています。
PnGは、脅威モデリングの初期段階において、攻撃者の視点からリスクを把握するのに役立ちます。専門家が潜在的な攻撃者像を理解し、その能力、動機、目的を分析できるようにするための手法です。この分析により、攻撃者の視点からシステムの弱点を把握することができます。PnGは、ペルソナを活用するアジャイル開発にも適しています。
2018年、SEIはHybrid Threat Modeling Method (hTMM)を開発しました。SQUARE、Security Cards、そしてPnGの演習が重要な要素となっています。偽陽性や見落としのない、安定した結果が得られ、コスト効率にも優れるのが特徴です。
手法の主な手順は以下の通りです:
このハイブリッド手法は、攻撃ツリー、STRIDE、CVSSを組み合わせ、複雑な依存関係を持つ実システムにおける主要な脅威モデリングの課題に対応することを目指しています。
STRIDEの5つの脅威カテゴリごとに、Quantitative Threat Modeling Method(qTMM)は部品ごとの攻撃ツリーを作成し、攻撃の種類とその要素間の関係を明らかにします。その後、CVSSを用いて各部品のスコアを計算します。
脅威モデリングは、製品開発全体におけるセキュリティ戦略を裏付けるために役立ちます。組織は、この手法を用いて既知のアプリのセキュリティ課題を記録し、適切な対応策を判断することが可能です。場合によっては、十分な証拠がなくとも判断を下すこともあります。
全体として、十分に記録された脅威モデルは、アプリやネットワークのセキュリティ状態を明確にし、守るための有用な情報を提供します。開発チームがセキュリティを重視する際、以下の点で脅威モデリングは有効です:
インフラの見直しや、設計・セキュリティ上の欠陥を解消するため、脅威モデリングは有効な手法です。しかし、その効果は実施方法に依存します。効果と有効性を確認するため、以下の3つの方法が挙げられます:
CVSSは、ITの脆弱性を評価するためのスコアリング基準です。この手法により、最も重要な脆弱性を優先的に対処できます。アプリ、ネットワーク機器、またはITシステムに対して、無料のオンラインCVSSツールを用いてスコアを算出可能です。この値は、脅威や脆弱性の重大度、迅速な対応が必要な度合いの判断材料となります。また、CVSSを活用して独自のスコアを算出し、ツールのデータベースに情報を追加することも可能です。CVSSと既存の脅威モデルを比較することで、モデルの正確性と妥当性が把握できます。
脅威モデルに対してペネトレーションテストを実施し、その有効性を検証できます。ペネトレーションテストは、システムの弱点や強みを明らかにし、モデルに問題があるかどうかを確認する手法です。
ただし、ペネトレーションテストには大量のデータ収集や時間、検討すべき利用ケースなどの課題があり、コストとのバランスも考慮する必要があります。
GoTestWAFは、高度なWAFテストツールです。既存のWebアプリ用ファイアウォールのセキュリティ性能を評価し、脆弱性を明らかにします。REST、SOAP、XML-RPC APIに対して基本的なペイロードを送信し、各種注入攻撃などに対する脆弱性の度合いを算出します。
脅威モデルを確立し、Webアプリを展開した後、セキュリティ上の弱点を解消した状態で、ぜひGoTestWAFを試し、その動作を確認してください。以下は一般的なGoTestWAFのレポート例です。
脅威モデリングは、システム全体の姿を明らかにし、ネットワークのすべての要素を十分に把握できるようにします。これにより、潜在的な弱点が見つかり、攻撃者に利用される前に対処可能となります。しかし、この手法に対しては、組織内で様々な誤解が存在します。
脅威モデリングは非常に複雑なものではなく、初めて実施する開発者やテスターが不安になる程度の難易度です。
作業をスムーズに進めるには、計画を立て、プロセスを小さなタスクに分割して実施することが推奨されます。この方法は、小規模なWebアプリでも大企業向けのソリューションでも有効です。
セキュリティ専門家と製品設計者が並行して作業すれば包括的な脅威モデルを構築しやすくなりますが、脅威モデリングは設計段階だけの作業ではありません。
実際、製品実装後の脅威モデル作成はより重要です。設計段階で行っていなかった場合でも、その重要性を認識した段階で速やかに実施するべきです。これにより、セキュリティ体制、システムアーキテクチャの堅牢性、監視能力、脅威追跡、リスク軽減の速度が向上します。これがなければ、脅威やリスク、攻撃、サイバーセキュリティ上の問題を十分に把握できません。
正直なところ、脅威モデリングはコードレビューやペネトレーションテストに代替できるものではありません。これらの手法はシステムのデバッグやコードの性能向上に役立つものの、脅威モデリングは製品設計を評価し、潜在的な欠陥を効果的に抽出するための独自の範囲を持っています。
脅威モデリングは困難な作業です。想定される脅威は無限にあり、規模にかかわらず、時間と費用を節約するためにツールを活用するのが望ましいです。
ツールを使うことで、プロセスが整理され反復可能になり、初期段階から脅威モデルを構築し、長期的に維持するための労力を削減できます。良質な脅威モデリングツールは、最新の脅威情報を提供するインサイトストリーム、推奨対策付きの脅威ダッシュボード、Jiraなどと連携可能な軽減ダッシュボード、そしてコンプライアンスや関係者向けのレポートなどの機能を備えています。
ここで、最も頻繁に利用される脅威モデリングツールを紹介します:
攻撃サーフェスを解析し、既存のセキュリティ欠陥や将来的なGDPRコンプライアンス問題に関する情報を基に対策を提案する無料の開発プラットフォームです。
アプリの技術設計、構造、セキュリティ設定に関する柔軟な質問を通じて案内する、理論に基づいた脅威モデリングツールです。
脅威の特定を支援するプログラムです。セキュリティの専門知識がない人向けに設計されており、MicrosoftのSecurity Development Lifecycleの一環として、脅威モデルの作成と解析を支援します。システム構成要素、データフロー、セキュリティ境界を自動的に文書化し、製品設計に基づいた攻撃タイプを容易に識別できます。
オンライまたはデスクトップで利用可能なオープンソースのアプリです。潜在的な脅威を監視し、対策の手法を決定し、脅威モデルの各要素や攻撃サーフェスを可視化します。
Security Compassのツールで、システムの情報を弱点に基づいて収集・整理し、レビュー用のレポートを作成します。
アプリのコードベースに脅威モデリングを組み込む、無料のオープンソースの統合開発環境です。コマンドラインツール、Dockerコンテナ、またはRESTサーバとして利用できます。
ローカル、クラウド(cloud security)、アプリセキュリティ向けに自動化された脅威モデリングを提供するツールです。既成の設計パターンを活用し、脅威の特定、予測、分類を実現します。
システム、ITインフラ、または脅威環境が変化した場合、どのツールを用いていても脅威モデリングのプロセスを更新する必要があります。新たな脅威の出現に伴い、脅威モデルは常に最新の状態に保たれるべきです。
脅威評価には時間と労力が必要です。簡単な作業ではありませんが、開発者が気づく前に弱点を発見して修正するためには、脅威モデリングが最適な手法です。
最新情報を購読