はじめに
アプリやサービスを開発する際、機能要件やUXは重視されがちですが、セキュリティは後回しにされることが多いです。
しかし近年は、設計段階からセキュリティを考慮する「Security by Design」 が求められています。
その代表的な手法が Threat Modelling(脅威モデリング) です。
Threat Modelling とは?
Threat Modelling とは、
システムやアプリケーションに潜む脅威を体系的に 特定・評価・対策 するプロセスです。
目的は以下の3つに集約できます。
- 潜在的な脅威の可視化
- リスクの優先度付け
- 設計段階からのセキュリティ強化
脅威モデリングの基本サイクル
Threat Modelling の原則はシンプルで、以下の流れに沿って進められます。
- Preparation(準備)
- Identification(特定)
- Mitigations(緩和策)
- Review(見直し)
ただし実際は複雑であり、専任チームによる継続的なレビューと議論 が欠かせません。
効果的な Threat Model に含まれる要素
- Threat intelligence(脅威インテリジェンス)
- Asset identification(資産の特定)
- Mitigation capabilities(緩和能力)
- Risk assessment(リスク評価)
これらを体系化するために、代表的なフレームワークが存在します。
有名なのは STRIDE と PASTA です。
- STRIDE: Microsoft が1999年に提唱した脅威分類モデル
- PASTA: Process for Attack Simulation and Threat Analysis
代表的な手法
STRIDE モデル(脅威分類)
Microsoft が提唱した6分類。
項目 | 説明 | 例 |
---|---|---|
Spoofing | なりすまし | 偽のユーザでログイン |
Tampering | 改ざん | データベースの値を不正変更 |
Repudiation | 否認 | 「やっていない」と証明困難 |
Information Disclosure | 情報漏洩 | パスワード流出 |
Denial of Service | サービス拒否 | DDoS攻撃 |
Elevation of Privilege | 権限昇格 | 一般ユーザが管理者権限を取得 |
DREAD モデル(リスク評価)
脅威の深刻度をスコア化するフレームワーク。
- Damage(被害度)
- Reproducibility(再現性)
- Exploitability(攻撃容易性)
- Affected Users(影響範囲)
- Discoverability(発見可能性)
各項目を1〜10点で評価し、合計スコアの高いものから優先的に対策します。
Attack Tree(攻撃木)
攻撃シナリオをツリー構造で可視化する手法。
実践プロセス
-
資産の特定
(例:ユーザデータ、認証情報、APIサーバー) -
システムのモデル化
データフロー図やアーキテクチャ図を作成 -
脅威の洗い出し
STRIDE を使って想定攻撃を列挙 -
リスク評価
DREAD で深刻度をスコアリング -
対策の設計
(例:暗号化、認証強化、ログ監視) -
検証と改善
ペネトレーションテストで実効性確認
まとめ
- Threat Modelling は 攻撃者の視点を設計に取り入れる手法
- STRIDE で脅威を分類し、DREAD でリスクを数値化できる
- Attack Tree を使うと可視化・共有が容易
- DevSecOps の一環として 開発初期から導入するのがベストプラクティス