脅威モデリングとは、システムに対するセキュリティ上の脅威を体系的に洗い出し、リスクを評価し、対策を立案するプロセスです。開発の初期段階で実施することで、後から脆弱性が発見された場合の修正コストを大幅に削減できます。NISTの調査によれば、設計段階で発見された脆弱性の修正コストは、運用段階で発見された場合の30分の1以下です。セキュリティの専門家だけでなく、開発チーム全体が参加することが推奨されています。
Microsoftが考案したSTRIDEフレームワークは、脅威モデリングの手法として最も広く使われているものの一つです。6つの脅威カテゴリに基づいて、網羅的にリスクを洗い出すことができます。STRIDEの利点は体系的であるため見落としが少なく、セキュリティの専門知識がないメンバーでも参加しやすい点にあります。
STRIDEは以下の6つの脅威の頭文字から成り立っています。
Spoofing(なりすまし)は、攻撃者が他のユーザーやシステムになりすます脅威です。認証メカニズムの弱点を突いて、正規ユーザーとしてシステムにアクセスします。対策としては、多要素認証の導入、強力なパスワードポリシーの適用、セッション管理の厳格化が有効です。APIキーの漏洩やトークンの窃取もこのカテゴリに含まれます。
Tampering(改ざん)は、データやコードが不正に変更される脅威です。通信経路上のデータ改ざん、データベースの不正変更、設定ファイルの書き換えがこれに該当します。暗号化、デジタル署名、入力バリデーション、完全性チェックで防御します。特にAPIリクエストのパラメータ改ざんは見落とされがちです。
Repudiation(否認)は、ユーザーが自身のアクションを否定できてしまう脅威です。「自分はそのデータを削除していない」と主張された場合に、証拠を示せるかどうかが問われます。適切な監査ログの記録、タイムスタンプの付与、デジタル署名により、アクションの証跡を残すことが重要です。
Information Disclosure(情報漏洩)は、機密データが意図しない相手に露出する脅威です。エラーメッセージによるスタックトレースの漏洩、不適切なアクセス制御、暗号化されていない通信など、様々な経路で発生します。データの暗号化、アクセス制御、最小権限の原則で対策します。
Denial of Service(サービス拒否)は、正規ユーザーがシステムを利用できなくなる脅威です。大量のリクエストによるリソース枯渇だけでなく、特定の入力で処理が極端に遅くなるアルゴリズム的DoSも含まれます。レート制限、WAF、オートスケーリング、入力サイズの制限などが有効な対策となります。
Elevation of Privilege(権限昇格)は、攻撃者が許可されていない権限を取得する脅威です。一般ユーザーが管理者権限を取得する水平方向の権限昇格と、より高い権限レベルに昇格する垂直方向の権限昇格があります。ロールベースのアクセス制御と最小権限の原則が基本的な対策です。
実際の脅威モデリングは4つのステップで進めます。第一に、対象システムの構成をデータフローダイアグラム(DFD)で可視化します。外部エンティティ、プロセス、データストア、データフロー、信頼境界を明確にします。信頼境界は特に重要で、セキュリティレベルが異なる領域の境界(例:インターネットと社内ネットワークの境界)を示します。
第二に、DFDの各要素に対してSTRIDEの6カテゴリを当てはめ、考えられる脅威を列挙します。この段階では、現実性を問わず網羅的に洗い出すことが重要です。信頼境界をまたぐデータフローには特に注意を払います。
第三に、洗い出した脅威のリスクを評価します。DREADモデル(被害の大きさ、再現性、攻撃の容易さ、影響範囲、発見の容易さ)を使ってスコアリングするのが一般的です。各項目を1〜10で採点し、合計スコアでリスクの優先順位を決定します。
第四に、リスクの高い脅威から優先的に対策を検討します。対策は「軽減」「転移」「受容」「回避」の4つに分類されます。全ての脅威を完全に排除することは非現実的なので、リスクとコストのバランスを考慮した判断が求められます。
脅威モデリングはホワイトボードセッションとして実施するのが効果的です。開発者、アーキテクト、セキュリティエンジニア、QAが参加し、多角的な視点で脅威を洗い出します。1回のセッションは90分程度に抑え、対象範囲を限定して集中的に議論するのがコツです。全体を一度にカバーしようとすると、表面的な分析に終わりがちです。
重要なのは、脅威モデリングを一回限りのイベントではなく、継続的なプロセスとして組み込むことです。アーキテクチャの変更や新機能の追加のたびに見直しを行い、脅威モデルを最新の状態に保ちましょう。スプリントの計画段階でセキュリティレビューの時間を確保するのが理想的です。Microsoft Threat Modeling Toolのような無料ツールを活用することで、DFDの作成とSTRIDE分析の効率化が図れます。