脅威モデリング
STRIDEフレームワークを用いたシステムへの脅威の体系的な識別・評価・対策の手順
脅威モデリングとは、設計段階でシステムに対する潜在的な攻撃や誤用を体系的に洗い出し、優先順位を付けて対策を講じるプロセスである。セキュリティ問題を実装後に発見するよりも、設計段階で識別する方が修正コストは桁違いに低い。脅威モデリングをスプリントの始めに行う習慣を持つことで、セキュリティを後付けではなくアーキテクチャの一部として扱えるようになる。
STRIDEはMicrosoftが定義した脅威分類フレームワークで、なりすまし(Spoofing)・改ざん(Tampering)・否認(Repudiation)・情報漏洩(Information Disclosure)・サービス妨害(Denial of Service)・権限昇格(Elevation of Privilege)の6カテゴリで脅威を体系化する。データフロー図(DFD)を描いてシステムの信頼境界(Trust Boundary)を明示し、各境界を越えるデータフローに対してSTRIDEの各項目を検討することが基本的な手順となる。
脅威の優先順位付けにはCVSS(Common Vulnerability Scoring System)やDREAD(Damage・Reproducibility・Exploitability・Affected users・Discoverability)が使われる。CVSSは業界標準の数値スコアとして広く採用されており、脆弱性の深刻度を0〜10の範囲で評価する。PASTA・LINDDUN・MITRE ATT&CKなど代替フレームワークも目的に応じて使い分けられるが、どのフレームワークを選ぶかよりも「継続的に実施できる」かどうかの方が実用上重要である。
コードレビューで着目するポイント
- 設計変更(新エンドポイント・外部連携・認証フロー変更)に対して脅威モデリングが実施されているか
- データフロー図で信頼境界が明示されており、境界を越えるデータが検証されているか
- STRIDEの各カテゴリに対して少なくとも一つの対策が検討されているか
- 特定された脅威に対して、リスク受容・軽減・転嫁・回避のいずれかの方針が明確になっているか
- 脅威モデルがドキュメントとして残っており、システム変更時に更新される仕組みがあるか
- Elevation of Privilege(権限昇格)に対する対策として最小権限の原則が適用されているか
典型的なアンチパターン
実装後の脅威モデリング: システムが完成した後にセキュリティレビューとして脅威モデリングを行う。設計を変更するコストが高く、技術的負債として先送りされやすい。脅威モデリングは設計フェーズで行うことで最大の効果を得られる。
「攻撃者は外部のみ」という前提: 内部ネットワークや認証済みユーザーからの脅威(Insider Threat・Elevation of Privilege)を対象外にした脅威モデル。実際の侵害の多くは認証後の権限昇格や横移動(Lateral Movement)によって発生する。
形式的な実施と未追跡の残存リスク: 脅威モデリングを実施したものの、対策されなかった脅威のリスクが記録されず追跡されない。残存リスクをリスク受容として明示的に記録し、レビュー時に再評価できる状態にしておくことが重要。
参考リソース
- Microsoft Threat Modeling Tool — STRIDEベースの脅威モデリングを支援する無料ツール
- OWASP Threat Dragon — オープンソースの脅威モデリングツール(DFD作成・脅威記録に対応)
- Threat Modeling: Designing for Security (Adam Shostack) — 実践的な脅威モデリング手法の決定版書籍
- MITRE ATT&CK Framework (https://attack.mitre.org/) — 実際の攻撃者の戦術・技術を体系化したナレッジベース
- CVSS Calculator (https://www.first.org/cvss/) — 脆弱性スコアリングの公式ツール
- 1. 📄アーキテクチャスタイル
- 2. 📄ドメインモデリング
- 3. 📄モジュール分割と依存管理
- 4. 📄データモデリング
- 5. 📄API設計
- 6. 📄整合性とトランザクション
- 7. 📄非同期処理(Queue/Event)
- 8. 📄キャッシング
- 9. 📄ユーザーリサーチ
- 10. 📄情報アーキテクチャ
- 11. 📄インタラクションデザイン
- 12. 📄UX原則とヒューリスティクス
- 13. 📄アクセシビリティ(UX観点)
- 14. 📄UXメトリクス
- 15. 📄スケーラビリティ
- 16. 📄可用性とレジリエンス
- 17. 📄オブザーバビリティ
- 18. 📄環境・インフラ設計
- 19. 📄データマイグレーション
- 20. 📄セキュリティ設計原則
- 21. 📄設計原則
- 22. 📄デザインパターン(GoF)
- 23. 📄エンタープライズパターン
- 24. 📄クリーンコード
- 25. 📄リファクタリング
- 26. 📄型設計とコントラクト
- 27. 📄並行処理・マルチスレッド
- 28. 📄パフォーマンス最適化
- 29. 📄ドキュメント管理
- 30. 📄バージョン管理と開発プロセス
- 31. 📄脅威モデリング
- 32. 📄通信保護(TLS)
- 33. 📄正規化(データベース正規化)