脅威モデリング(Threat Modeling)
脅威モデリングとは
「どこを攻撃されうるか」を設計段階で体系的に洗い出し、対策の優先順位を決めるプロセス。
セキュリティ問題は発見が遅れるほどコストが増大する。
コーディング後に気づくより、設計段階で脅威を特定する方が修正コストは数十倍安い(Shift Left の原則)。
なぜ脅威モデリングが必要か
セキュリティテストは「実装済みのコードに穴がないか」を確認する。
脅威モデリングは「そもそも穴の生まれる設計になっていないか」を問う。
両者は補完関係にあり、脅威モデリングなしにセキュリティテストだけ行うと「見えている穴だけ塞ぐ」状態になる。
STRIDE モデル
Microsoft が提唱した脅威の6分類。「どの種類の攻撃か」を特定するための言語として広く使われる。
| 頭文字 | 脅威 | 攻撃例 | 侵害するCIA |
|---|---|---|---|
| S | Spoofing(なりすまし) | 認証情報の盗用, フィッシング | 機密性 |
| T | Tampering(改ざん) | DBデータ改ざん, Cookieの書き換え | 完全性 |
| R | Repudiation(否認) | ログ削除による証拠隠滅 | 完全性 |
| I | Information Disclosure(情報漏洩) | エラーメッセージからのスタックトレース漏洩 | 機密性 |
| D | Denial of Service(サービス妨害) | DDoS, リソース枯渇攻撃 | 可用性 |
| E | Elevation of Privilege(権限昇格) | 一般ユーザーが管理者権限を取得 | 機密性・完全性 |
DREAD モデル
脅威の深刻度スコアリング手法。各項目を 1〜10 で採点し合計で優先度を決める。
現在は CVSS に押されているが、チーム内のリスク議論を構造化するツールとして依然有効。
| 頭文字 | 指標 | 問い |
|---|---|---|
| D | Damage(被害規模) | 攻撃が成功した場合の被害はどれほどか? |
| R | Reproducibility(再現性) | 攻撃をどれほど簡単に再現できるか? |
| E | Exploitability(攻撃容易性) | 攻撃に必要なスキル・リソースはどれほどか? |
| A | Affected Users(影響ユーザー数) | 何人のユーザーが影響を受けるか? |
| D | Discoverability(発見可能性) | 攻撃者が脆弱性を見つけやすいか? |
脅威モデリングの実施プロセス
Adam Shostack(元Microsoft)が提唱する 4ステップ。
Step 1: 何を作るか明確にする
システムの構成要素を可視化する。代表的な手法が DFD(データフロー図)。
DFDで描く要素:
- プロセス — データを処理するコンポーネント(円)
- データストア — データを保存する場所(二重線)
- 外部エンティティ — システム外のアクター(四角)
- データフロー — データの流れ(矢印)
- トラストバウンダリ — セキュリティ境界線(点線)
Step 2: 何が問題か洗い出す
DFDをSTRIDEにあてはめ、境界線を越えるすべてのデータフローに対して6分類を問う。
例:ユーザー → APIサーバー のデータフローに対して
- Spoofing: 本当に正規ユーザーか?(認証はあるか)
- Tampering: リクエストデータが改ざんされていないか?
- Repudiation: 誰が何をしたか記録されているか?
- Information Disclosure: レスポンスに不要な情報が含まれていないか?
- DoS: 大量リクエストで落ちないか?
- EoP: 一般ユーザーが管理APIを叩けないか?
Step 3: 対策を決める
脅威ごとに対策を対応させる。
| STRIDE脅威 | 代表的な対策 |
|---|---|
| Spoofing | 強固な認証(MFA, OAuth2) |
| Tampering | デジタル署名, HMAC, 入力バリデーション |
| Repudiation | 改ざん不可な監査ログ |
| Information Disclosure | 暗号化(TLS, at-rest encryption), 最小権限 |
| Denial of Service | レートリミット, オートスケール |
| Elevation of Privilege | RBAC, 最小権限, 入力バリデーション |
Step 4: 十分にやれたか確認する
チェックリスト:
- DFDのすべてのトラストバウンダリを横断するフローを検討したか
- 洗い出した脅威それぞれに対策を割り当てたか
- 対策を実装したか、またはリスク受容の判断を記録したか
脅威モデリングのタイミング
| タイミング | 目的 |
|---|---|
| 設計フェーズ | 最も効果が高い。アーキテクチャ変更のコストが低い段階 |
| コードレビュー | 新機能やインフラ変更時の追加確認 |
| 年次レビュー | システム変化に合わせた定期的な再評価 |
PASTA(参考)
Process for Attack Simulation and Threat Analysis。
ビジネスリスクと技術的脅威を紐付けた7フェーズの手法論。
より大規模・組織的な脅威モデリングに向いている。
- ビジネス目標の定義
- 技術スコープの定義
- アプリケーション分解(DFD作成)
- 脅威分析
- 脆弱性分析
- 攻撃シミュレーション
- リスク/影響分析
参考文献
- Adam Shostack『Threat Modeling: Designing for Security』(Wiley, 2014)— 脅威モデリングの実践書として最も広く参照される
- Maxie Reynolds『The Art of Attack』(Wiley, 2021)— 攻撃者思考の形成に向けた解説書
- OWASP Threat Modeling Cheat Sheet — 手法の概要と実践チェックリスト
- Microsoft SDL(Security Development Lifecycle)— STRIDEとDFDを組み込んだ開発プロセス
- 1. 🔒セキュリティ概要・学習ロードマップ
- 2. 🎯脅威モデリング(Threat Modeling)
- 3. 🏛️セキュリティ設計原則
出典: Threat Modeling: Designing for Security(Adam Shostack, 2014)/ The Art of Attack(Maxie Reynolds, 2021)/ OWASP Threat Modeling Cheat Sheet