threat-modeling-techniques について
threat-modeling-techniquesは、システム設計に取り組む開発者、アーキテクト、セキュリティチーム向けの脅威モデリングスキルです。STRIDE、攻撃ツリー、DREADによるリスク評価を軸に、脅威の特定から緩和までを体系化します。
主な機能
- 015段階の脅威モデリングプロセス
- 02STRIDEによる脅威分類
- 03攻撃ツリーによる攻撃経路の整理
- 04DREADによるリスク評価
- 05信頼境界と対策の確認
- 06緩和策とセキュリティ要件の計画
活用シーン
- 01新システムや機能の脅威特定
- 02アーキテクチャと外部連携のレビュー
- 03リスクに基づくセキュリティ対策の優先付け
- 04セキュリティ判断の記録とテスト計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ nickcrew/ claude-cortex --skill threat-modeling-techniquesインストール後、Claude Code で/threat-modeling-techniquesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/attack-trees.mddata-flow-diagrams.mddread-scoring.mdmitigation-strategies.mdstride-disclosure.mdstride-dos.mdstride-elevation.mdstride-repudiation.mdstride-spoofing.mdstride-tampering.mdtools-and-process.md詳細
脅威モデリングの手法
STRIDE、攻撃ツリー、リスク評価フレームワークなど、実績のある方法論を使用して、システムの設計・アーキテクチャ段階でセキュリティ脅威を特定、分析、軽減するための体系的なフレームワークです。
このスキルを使用する場面
- セキュリティ要件を伴う新しいシステムや機能を設計するとき
- セキュリティアーキテクチャレビューを実施するとき
- 攻撃経路や脅威シナリオを特定するとき
- 実装前にセキュリティリスクを評価するとき
- セキュリティ要件や対策を作成するとき
- サードパーティとの統合によるセキュリティへの影響を評価するとき
- セキュリティテスト戦略を計画するとき
- セキュリティ設計の決定事項を文書化するとき
- チームに先を見越したセキュリティ思考を教育するとき
- セキュリティコンプライアンスの取り組み(SOC 2、ISO 27001)を支援するとき
中核となるプロセス
5段階の脅威モデリングプロセス:
- 定義 - システムを理解し、アーキテクチャ図を作成します
- 特定 - 構造化された方法論(STRIDE、攻撃ツリー)を使用して脅威を列挙します
- 評価 - リスクの重大度と発生可能性を評価します(DREAD スコアリング)
- 軽減 - 対策と防御策を設計します
- 検証 - セキュリティ対策をレビューし、テストします
クイックリファレンス
| タスク | リファレンスを読み込む |
|---|---|
| STRIDE:なりすまし | skills/threat-modeling-techniques/references/stride-spoofing.md |
| STRIDE:データの改ざん | skills/threat-modeling-techniques/references/stride-tampering.md |
| STRIDE:否認 | skills/threat-modeling-techniques/references/stride-repudiation.md |
| STRIDE:情報漏えい | skills/threat-modeling-techniques/references/stride-disclosure.md |
| STRIDE:サービス拒否 | skills/threat-modeling-techniques/references/stride-dos.md |
| STRIDE:権限昇格 | skills/threat-modeling-techniques/references/stride-elevation.md |
| 攻撃ツリー | skills/threat-modeling-techniques/references/attack-trees.md |
| データフロー図(DFD) | skills/threat-modeling-techniques/references/data-flow-diagrams.md |
| DREAD リスクスコアリング | skills/threat-modeling-techniques/references/dread-scoring.md |
| 軽減策 | skills/threat-modeling-techniques/references/mitigation-strategies.md |
| ツールとプロセス | skills/threat-modeling-techniques/references/tools-and-process.md |
中核となる概念
STRIDE 方法論
STRIDEは脅威を次の6種類に分類します。
- Spoofing(なりすまし):他者や別のものになりすますこと(認証の回避、認証情報の窃取)
- Tampering(改ざん):データを悪意を持って変更すること(中間者攻撃、データ破損)
- Repudiation(否認):証拠なしに行為を否定すること(監査証跡の欠如)
- Information Disclosure(情報漏えい):機密データを露出させること(データ漏えい、詳細すぎるエラー)
- Denial of Service(サービス拒否):システムを利用不能にすること(リソース枯渇、DDoS)
- Elevation of Privilege(権限昇格):許可されていない機能を得ること(権限昇格、IDOR)
STRIDE の適用対象:
- データフロー図内の各コンポーネント
- 信頼境界を越えるすべての箇所
- すべてのデータストアとプロセス
- 外部との統合および API
攻撃ツリー
目標から手法に至る攻撃経路を示す階層図です。
[Root: Attack Goal]
|
+-- [OR] Method 1 (alternative paths)
| |
| +-- [AND] Required Step 1.1
| +-- [AND] Required Step 1.2
|
+-- [OR] Method 2 (alternative paths)
攻撃ツリーの用途:
- 攻撃シナリオを可視化する
- 最も容易な攻撃経路を特定する
- 属性(コスト、スキル、検知可能性)を割り当てる
- リスクの高い経路に対する軽減策の優先順位を決める
DREAD リスクスコアリング
DREADは脅威の重大度を定量化します(各基準を0~10で採点し、その平均をリスクスコアとします)。
- Damage Potential(潜在的な被害):悪用された場合、どの程度の被害が生じますか?
- Reproducibility(再現性):どの程度容易に再現できますか?
- Exploitability(悪用可能性):どの程度容易に悪用できますか?
- Affected Users(影響を受けるユーザー):何人のユーザーが影響を受けますか?
- Discoverability(発見可能性):どの程度容易に発見できますか?
リスクレベル:
- 7.1~10.0:重大(直ちに対応)
- 5.1~7.0:高(次のスプリントで対応)
- 3.1~5.0:中(今後のリリースで対応)
- 0.0~3.0:低(バックログ)
信頼境界
異なる信頼レベルを分ける線です。
- ネットワーク:インターネット → DMZ → 内部
- プロセス:ユーザーモード → カーネル、コンテナー → ホスト
- ユーザー:匿名 → 認証済み → 管理者
各境界で確認する項目:
- 認証が必要ですか?
- 認可チェックが適用されていますか?
- データは暗号化されていますか?
- 入力は検証されていますか?
- 操作はログに記録されていますか?
実践的なワークフロー
1. スコープの定義(30 分)
- 対象範囲に含めるシステムコンポーネントを特定します
- 信頼境界を定義します
- 保護が必要な資産をリストアップします
- コンプライアンス要件を特定します
2. アーキテクチャの分解(1 時間)
- データフロー図(DFD)を作成します
- 外部依存関係を文書化します
- 認証/認可の適用箇所を特定します
- データの保存場所をマッピングします
3. 脅威の特定(1~2 時間)
- 各 DFD 要素に STRIDE を適用します
- 価値の高い資産について攻撃ツリーを作成します
- チームで脅威シナリオをブレインストーミングします
- 脅威モデリングツールを使って提案を得ます
4. リスク評価(1 時間)
- 各脅威に DREAD スコアリングを適用します
- リスクスコアに基づいて脅威に優先順位を付けます
- ビジネスコンテキストとコンプライアンスを考慮します
- 早急に実施できる対策と長期的な取り組みを特定します
5. 緩和計画(1 時間)
- セキュリティコントロールを設計します(排除、低減、移転、受容)
- 緩和策を文書化します
- セキュリティ要件を作成します(SEC-### 形式)
- 実装の責任者を割り当てます
6. 文書化(30 分)
- 脅威モデルの図をエクスポートします
- セキュリティ要件文書を作成します
- リスク受容に関する判断を文書化します
- ステークホルダーと共有します
よくある間違い
避けるべきこと:
- 脅威モデリングを実施するのが遅すぎる(実装完了後に行う)
- 外部の脅威だけに注目する(内部関係者による脅威を無視する)
- 静的な脅威モデルを作成する(一度も更新しない)
- 図を過度に複雑にする(詳細を詰め込みすぎる)
- 発生可能性は低いが影響の大きい脅威を無視する
- 前提や判断を文書化しない
- 緩和策を最後まで実施しない
ベストプラクティス
チームの関与:
- 開発者:実装の詳細、コードレベルの脅威
- アーキテクト:システム設計、統合ポイント
- セキュリティチーム:脅威に関する専門知識、攻撃シナリオ
- 運用チーム:デプロイ、監視、インシデント対応
- プロダクトオーナー:ビジネスへの影響、リスク受容に関する判断
プロセスへの統合:
- 設計フェーズ:実装前に脅威モデルを作成します
- 開発:コントロールを実装し、セキュリティテストを作成します
- デプロイ:コントロールを検証し、監視を有効にします
- 保守:機能が変更されたらモデルを更新します
ツール
Microsoft Threat Modeling Tool:ビジュアル DFD エディター、自動 STRIDE 脅威生成 OWASP Threat Dragon:オープンソース、クロスプラットフォーム、ウェブ版とデスクトップ版 IriusRisk:商用プラットフォーム、DevSecOps 統合、コンプライアンスマッピング ThreatModeler:共同作業に対応、クラウドアーキテクチャをサポート
リソース
- Microsoft Threat Modeling Tool:https://aka.ms/threatmodelingtool
- OWASP Threat Dragon:https://owasp.org/www-project-threat-dragon/
- STRIDE Documentation:https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats
- Threat Modeling Manifesto:https://www.threatmodelingmanifesto.org/
- NIST Threat Modeling:https://csrc.nist.gov/projects/threat-modeling
コメント
Markdown 対応