threat-modeling について
設計段階で脅威を洗い出し、緩和策を計画するセキュリティスキルです。STRIDE、PASTA、LINDDUN、攻撃ツリーに加え、ワークフロー、事例、管理策カタログを参照します。
主な機能
- 01STRIDEなどの手法に対応
- 02OpenAPIとアーキテクチャ分析
- 03データフロー図と攻撃ツリーの指針
- 04脅威のスコアリングと優先順位付け
- 05緩和策と管理策の対応付け
- 06構造化されたJSONL出力
活用シーン
- 01新しいシステム構成のレビュー
- 02API仕様に対する脅威分析
- 03データ処理のプライバシーリスク評価
- 04緩和策とセキュリティ管理策の対応付け
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hardw00t/ ai-security-arsenal --skill threat-modelingインストール後、Claude Code で/threat-modelingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples/attack_tree_banking.mdbounty_patterns_2024_2026.mdmermaid_dfd_templates.mdstride_threat_library.mdmethodology/attack_trees.mddread.mdlinddun.mdoctave.mdpasta.mdstride.mdreferences/control_catalogs.mdframework_comparison.mdtrust_boundary_patterns.mdschemas/finding.jsontemplates/stride_table.mdthreat_model_report.mdworkflows/attack_tree_from_threat.mddfd_creation.mdstride_from_arch_docs.mdstride_from_openapi.mdthreat_to_mitigation.md詳細
脅威モデリング
設計時に実施する敵対的分析です。システムに対する脅威を列挙し、緩和策を定めます。このスキルでは、手法に関するファイル、ワークフローの手順書、事例ライブラリ、管理策カタログの参考資料を案内します。敵対的な推論を深く行うことが、このスキルの中核的な価値です。脅威の列挙に思考リソースを割いてください。
使用する場面
- 新しいシステムや大規模なアーキテクチャ変更について、セキュリティレビューが必要な場合。
- OpenAPI / AsyncAPI の仕様があり、インタラクションごとの STRIDE 分析を自動的に行いたい場合。
- アーキテクチャのドキュメントや図の脅威分析が必要な場合。
- 影響の大きい特定の脅威について、攻撃ツリーを用いた詳細分析が必要な場合。
- プライバシーや個人データの取り扱いについて、脅威分析が必要な場合(LINDDUN)。
- 緩和策を NIST CSF / NIST 800-53 / CIS / OWASP ASVS に対応付ける必要がある場合。
- ステークホルダーや監査担当者向けに脅威モデルのレポートを作成する場合。
- 既存の脅威リストをリスクスコアで優先順位付けする場合。
トリガーフレーズ
- 「このアプリケーション/サービス/APIの脅威モデルを作成して」
- 「STRIDE / PASTA / LINDDUN を使って脅威を特定して」
- 「データフロー図 / DFD を作成して」
- 「攻撃対象領域を分析して」
- 「X の攻撃ツリーを作成して」
- 「これらの脅威を NIST / ASVS / CIS の管理策に対応付けて」
このスキルを使用しない場面
- 稼働中のエンドポイントに対する実行時 API テスト/悪用 →
api-securityを使用してください(このスキルは脅威を特定し、api-securityは悪用可能性を確認します)。 - リポジトリ内のコードレベルの脆弱性発見(SAST/DAST/SCA)→
sast-orchestrationを使用してください。 - コンテナイメージの CVE スキャン →
container-securityを使用してください。 - クラウド構成の誤り →
iac-security/ cloud-security スキルを使用してください。 - 進行中の侵入に対するインシデント対応 → これは設計時の分析です。代わりに IR プレイブックを使用してください。
- 脅威の列挙を伴わないコンプライアンスギャップ分析のみ → コンプライアンススキルを使用し、設計変更に反映するため、分析結果をここに戻してください。
意思決定ツリー
1. Have an OpenAPI / AsyncAPI spec?
→ workflows/stride_from_openapi.md (highest-leverage entry point)
2. Have architecture docs or diagrams (or diagram images)?
→ workflows/stride_from_arch_docs.md
(if diagrams only, first workflows/dfd_creation.md)
3. Need a DFD from scratch?
→ workflows/dfd_creation.md (emit Mermaid)
4. Already have a high-level threat; need deep path analysis?
→ workflows/attack_tree_from_threat.md
5. Have threats; need mitigations + catalog mappings?
→ workflows/threat_to_mitigation.md
6. Privacy-specific modeling?
→ methodology/linddun.md
7. Enterprise-wide risk?
→ methodology/octave.md
8. Unsure which methodology?
→ references/framework_comparison.md
並列化のヒント
並列化可能:
- 要素ごとの STRIDE 分析:DFD 全体の各要素にサブエージェントを 1 つずつ割り当てます。
- カテゴリーごとの STRIDE 分析:システム全体を対象に、STRIDE の各文字(S、T、R、I、D、E)ごとにサブエージェントを 1 つずつ割り当てます。
- 攻撃ツリーのサブブランチ:最上位の各 OR 分岐を個別に分析できます。
- 信頼境界の詳細分析:境界ごとにサブエージェントを 1 つずつ割り当てます。
- OpenAPI オペレーション分析:オペレーションをサブエージェントに分担させます(例:タグごと)。
- 管理策カタログへの対応付け:検出事項ごとに行います。
逐次実行(並列化しない):
- DFD の作成 → 脅威の列挙(最初に DFD が必要です)。
- 脅威の列挙 → 優先順位付け(順位付けには脅威の完全なリストが必要です)。
- 緩和策の設計 → 残留リスクの評価。
- 主要な脅威の選定 → 攻撃ツリーの作成。
サブエージェントへの委任
推奨パターン:
| パターン | サブエージェント | 使用する場面 |
|---|---|---|
| STRIDE カテゴリーごと | 6(S、T、R、I、D、E) | システム全体を網羅的に列挙する場合。各サブエージェントは、すべての要素について 1 つのカテゴリーに絞って敵対的な推論を行います。 |
| 信頼境界ごと | 境界ごとに 1 つ | 複数ゾーンから成るシステムの詳細分析。各サブエージェントは、担当する境界をまたぐ脅威を分析します。 |
| サブシステムごと | サービス/コンポーネントごとに 1 つ | マイクロサービスアーキテクチャ。各サブエージェントが担当サービスの脅威モデルを作成し、その後の統合ステップで重複を排除します。 |
| 攻撃ツリーの分岐ごと | 最上位の OR 子ノードごとに 1 つ | ツリーの展開を並列化する場合。 |
| OpenAPI タググループごと | タグごとに 1 つ | 大規模な仕様で、タグごとにオペレーションを分割する場合。 |
検出事項の重複(複数のサブエージェントが同じ脅威を特定した場合)を排除し、食い違うリスクスコアを調整する統合エージェントを必ず定義してください。
推論バジェット
拡張思考こそ、このスキルの要です。 脅威の特定は、敵対的な創造性を要する作業です。モデルは拡張思考なしで実行すると、脅威を見落としがちです。
拡張思考を有効にする項目:
- 初期の脅威の列挙(要素ごと、および相互作用ごと)
- 信頼境界を越える際の分析
- 攻撃ツリーの分岐の生成(
workflows/attack_tree_from_threat.mdのステップ 2) - リーフへの注釈付け — 確率とコストの正確な推定
- ドキュメントに記載されていない新たな悪用事例の発見
- アーキテクチャが曖昧か、断定可能かの判断
拡張思考を無効にする項目:
- 調査結果の
schemas/finding.jsonへの整形 - 既知の DFD 構造からの Mermaid の出力
- コントロール ID の検索(
references/control_catalogs.mdは決定論的です) - テンプレートからのレポートの組み立て
予算の目安:拡張思考のトークンの約 70% を列挙、約 20% を攻撃ツリーの深掘り、約 10% を優先順位付けとコントロールギャップ分析に割り当てます。
マルチモーダルフック
- 図を入力 → Mermaid を出力:アーキテクチャ図の画像が提供された場合、分析の前に Mermaid として再出力します(曖昧さを検出し、再利用可能な成果物を作成できます)。
- DFD を出力 → Mermaid:デフォルトの描画形式です。多くのチャット画面でインライン表示されます。
- 複雑な図(デプロイメントビュー、多数のコンポーネント):PlantUML(
@startuml)または Graphviz DOT を使用します。 - 攻撃ツリー:Graphviz または Mermaid の
flowchart TDを使用します。 - テンプレートギャラリー:すぐにカスタマイズできる図については、
examples/mermaid_dfd_templates.mdを参照してください。
構造化出力
すべての脅威は schemas/finding.json に準拠します。主なフィールド:
threat_id、title、descriptionstride_category(6 つの列挙値の配列)element(名前、種類、テクノロジー)trust_boundaryattack_vector、attacker_profilelikelihood、impact、risk_scoredread_score(D/R/E/A/D と平均値を含むオブジェクト)cwe、capec、mitre_attackmitigations(コントロール/種類/ステータスを含む配列)control_mappings(NIST/CIS/ASVS/ISO/PCI へのマッピング配列)residual_risk、status
一括調査結果は JSONL として出力し、人によるレビュー用の調査結果はレポートテンプレートに出力します。
ワークフロー一覧
| ワークフロー | 目的 |
|---|---|
| workflows/dfd_creation.md | Mermaid としてレベル 0/レベル 1 の DFD を作成し、信頼境界を特定します。 |
| workflows/stride_from_openapi.md | 主要なワークフロー。 OpenAPI/AsyncAPI 仕様 → STRIDE による相互作用ごとの表。 |
| workflows/stride_from_arch_docs.md | アーキテクチャドキュメント(任意の図の画像を含む)→ 完全な脅威モデル。 |
| workflows/attack_tree_from_threat.md | 高レベルの脅威 → 具体的な攻撃ツリー、最小コスト経路の分析。 |
| workflows/threat_to_mitigation.md | 調査結果 → 緩和策 + NIST/CIS/ASVS コントロール ID。 |
手法一覧
| ファイル | 使用場面 |
|---|---|
| methodology/stride.md | デフォルト。要素ごと、および相互作用ごとに分析します。 |
| methodology/pasta.md | 規制対象/ビジネス整合型。7 段階です。 |
| methodology/attack_trees.md | 単一目標の詳細分析。AND/OR 分解を行います。 |
| methodology/dread.md | 迅速なスコアリング。批判と代替手法を含みます。 |
| methodology/linddun.md | プライバシー重視(GDPR/CCPA/HIPAA)。 |
| methodology/octave.md | エンタープライズ全体を対象とした、アセット主導型です。 |
参照資料一覧
| ファイル | 内容 |
|---|---|
| references/control_catalogs.md | NIST CSF 2.0、800-53 Rev 5、CIS v8、OWASP ASVS v5、ISO 27001、PCI DSS v4。 |
| references/trust_boundary_patterns.md | 12 種類の一般的な境界パターンと弱点。 |
| references/framework_comparison.md | 手法を選ぶための意思決定マトリックス。 |
例の一覧
| ファイル | 内容 |
|---|---|
| examples/mermaid_dfd_templates.md | すぐに調整して使える DFD テンプレート 6 件以上。 |
| examples/stride_threat_library.md | STRIDE × 要素タイプ別の事前作成済み脅威。 |
| examples/attack_tree_banking.md | 不正な送金を題材にした、詳細な攻撃ツリー。 |
| examples/bounty_patterns_2024_2026.md | 2023 年以降に公開されたバグバウンティのパターン 38 件をまとめた、STRIDE の要素別補足資料。 |
テンプレートの一覧
| ファイル | 内容 |
|---|---|
| templates/threat_model_report.md | レポート全体のひな型。 |
| templates/stride_table.md | STRIDE の要素別およびインタラクション別の表。 |
ツール
| ツール | 目的 | インストール |
|---|---|---|
| OWASP Threat Dragon | DFD + STRIDE の自動提案 | npm install -g owasp-threat-dragon |
| Microsoft Threat Modeling Tool | Windows ネイティブの STRIDE + DFD | MS からダウンロード |
| Threagile | コードとしての脅威モデリング(YAML) | Docker イメージ threagile/threagile |
| draw.io / diagrams.net | DFD の手動編集 | ウェブアプリまたはデスクトップ |
Mermaid CLI (mmdc) | Mermaid を SVG/PNG にレンダリング | npm install -g @mermaid-js/mermaid-cli |
| Graphviz | 攻撃ツリー、DOT のレンダリング | apt install graphviz / brew install graphviz |
| PlantUML | 複雑な図 | apt install plantuml |
最終検証日
2026-04。参照カタログ:NIST CSF 2.0、NIST 800-53 Rev 5、CIS Controls v8、OWASP ASVS v5、PCI DSS v4.0、ISO/IEC 27001:2022。