STRIDE脅威モデリング

英語名 Threat Modeling (STRIDE)
読み方 ストライド スレット モデリング
難易度
所要時間 30分〜1時間
提唱者 Microsoft (1999) — Loren Kohnfelder & Praerit Garg
目次

ひとことで言うと
#

システムに対する脅威を Spoofing(なりすまし)・Tampering(改ざん)・Repudiation(否認)・Information Disclosure(情報漏洩)・Denial of Service(サービス拒否)・Elevation of Privilege(権限昇格)の6分類で網羅的に洗い出し、対策の優先順位を決めるセキュリティ設計手法。

押さえておきたい用語
#

押さえておきたい用語
Spoofing(スプーフィング)
正規ユーザーやシステムになりすましてアクセスする脅威のこと。認証の突破や偽装が典型例。
Tampering(タンペリング)
データや通信内容を不正に改ざんする脅威を指す。リクエストの書き換えやDB直接操作が該当する。
Repudiation(リピュディエーション)
操作を行ったにもかかわらず**「やっていない」と否認できてしまう脅威**である。監査ログの不備が原因になる。
Information Disclosure(インフォメーション ディスクロージャー)
機密データが意図しない相手に漏洩する脅威のこと。暗号化不備やアクセス制御の欠陥が典型例。
Denial of Service(サービス拒否)
大量リクエストやリソース枯渇によりサービスを利用不能にする脅威。可用性を直接脅かす攻撃手法。
Elevation of Privilege(権限昇格)
一般ユーザーが管理者権限を不正に取得する脅威を指す。認可ロジックの不備が主な原因となる。

STRIDE脅威モデリングの全体像
#

STRIDE:6つの脅威分類とセキュリティ特性の対応
S: Spoofingなりすまし脅かす特性:認証 (Authentication)対策例:多要素認証OAuth / OIDC証明書認証T: Tampering改ざん脅かす特性:完全性 (Integrity)対策例:入力バリデーションデジタル署名HMAC検証R: Repudiation否認脅かす特性:否認防止 (Non-repudiation)対策例:監査ログタイムスタンプ署名改ざん検知ログ基盤I: Info Disclosure情報漏洩脅かす特性:機密性 (Confidentiality)対策例:暗号化(TLS/AES)アクセス制御データマスキングD: Denial of Serviceサービス拒否脅かす特性:可用性 (Availability)対策例:レート制限CDN / WAFオートスケーリングE: Elev. of Privilege権限昇格脅かす特性:認可 (Authorization)対策例:最小権限の原則RBAC / ABAC入力サニタイズ
STRIDE脅威モデリングの進め方フロー
1
DFD作成
システムのデータフロー図を描く
2
脅威の列挙
各コンポーネントにSTRIDE6分類を適用
3
リスク評価
影響度×発生可能性で優先度を判定
対策実装
優先度の高い脅威から緩和策を実装

こんな悩みに効く
#

  • セキュリティレビューが「思いつきベース」で網羅性に自信がない
  • 開発チームがセキュリティを後回しにし、リリース直前に問題が見つかる
  • 脅威の洗い出し方法がわからず、外部のペネトレーションテストに頼りきり

基本の使い方
#

システムのデータフロー図(DFD)を作成する
外部エンティティ、プロセス、データストア、データフローの4要素でシステムを図示する。信頼境界線(Trust Boundary)を引き、異なる信頼レベルの間の通信を明示する。
各コンポーネントにSTRIDE6分類を適用する
DFD上の各要素に対して6つの脅威カテゴリを順に確認する。プロセスはSTRIDE全6つ、データストアはTID(Tampering/Information Disclosure/Denial of Service)、データフローはTIDが主な対象となる。
リスク評価で対策の優先順位を決める
洗い出した脅威を「影響度(High/Medium/Low)」×「発生可能性(High/Medium/Low)」で評価する。DREAD(Damage/Reproducibility/Exploitability/Affected users/Discoverability)を補助的に使うと精度が上がる。

具体例
#

例1:ECプラットフォームが決済フローの脅威を洗い出す

エンジニア45名のECプラットフォーム。PCI DSS準拠の更新審査を控え、決済フロー全体のセキュリティレビューが必要だった。従来は「経験者の勘」で脅威を列挙していたが、審査員から「網羅性の根拠がない」と指摘されていた。

決済フローのDFDを作成し、STRIDEを適用。38件 の脅威が洗い出され、そのうち 7件 が既存の対策でカバーされていなかった。特に「決済APIへのリプレイ攻撃(Tampering)」と「管理画面の権限昇格(Elevation of Privilege)」が高リスクと判定された。

対策実装後、PCI DSS審査を 1回 で通過。以前は平均 2.5回 の再審査が必要だった。

例2:医療SaaSが患者データ保護の設計を体系化する

エンジニア20名の医療SaaS。HIPAA準拠が求められる中、セキュリティ設計が各チームの裁量に任されており、API 120本 のうちセキュリティレビュー済みは 35本 にとどまっていた。

新機能開発プロセスにSTRIDE脅威モデリングを組み込み、Design Doc段階で必須化。チーム全員が参加するワークショップ形式で実施し、1機能あたり 90分 で完了するテンプレートを整備した。

6ヶ月で全APIのレビューが完了。Information Disclosure関連の脆弱性 12件 を本番デプロイ前に発見・修正し、セキュリティインシデントの発生件数は四半期 5件 → 0件 になった。

例3:自治体向けシステムベンダーがSTRIDEで提案力を差別化する

エンジニア30名の自治体向けシステムベンダー。入札時のセキュリティ提案がチェックリスト形式で競合と差別化できず、価格勝負に陥っていた。

提案段階でSTRIDE脅威モデリングの結果を添付する方式に変更。自治体側のシステム構成からDFDを起こし、想定脅威と対策を可視化して提案書に含めた。

セキュリティ提案の説得力が「具体的な脅威と対策のマッピング」として評価され、受注率が 28% → 52% に向上。単価も平均 15% 上昇した。

やりがちな失敗パターン
#

  1. DFDなしで脅威を列挙する — システムの全体像なしにSTRIDEを適用しても漏れが出る。まずデータフロー図を描くことが出発点
  2. すべての脅威に同じ優先度で対策する — 脅威の数は膨大になる。リスク評価で優先度を付け、高リスクから順に対策する
  3. 開発完了後にSTRIDEを実施する — 設計段階で行うから効果がある。実装後の変更はコストが 10〜100倍 になる
  4. 1回だけ実施して終わり — システムは変化する。新機能追加やアーキテクチャ変更のたびに差分のSTRIDEを実施する

まとめ
#

STRIDE脅威モデリングは、Microsoftが開発した6分類(Spoofing・Tampering・Repudiation・Information Disclosure・Denial of Service・Elevation of Privilege)でセキュリティ脅威を網羅的に洗い出す手法。DFDによるシステム可視化からSTRIDE適用、リスク評価、対策実装までの一連のプロセスにより、「思いつきベース」 から「体系的」なセキュリティ設計への転換を実現する。設計段階で実施することが最も費用対効果が高い。