performing-threat-modeling-with-owasp-threat-dragon について
このスキルは、OWASP Threat Dragonを使った脅威モデリングを支援し、図の作成から脅威の特定、レポート作成までを扱います。複数の手法と、デスクトップアプリおよびWebアプリの利用手順を紹介します。
主な機能
- 01データフロー図と脅威モデルの作成
- 02STRIDE、LINDDUNなどの手法の適用
- 03ルールエンジンによる脅威と対策の提案
- 04PDFレポートの生成
- 05JSONモデルファイルとTMBOMのエクスポート
活用シーン
- 01機能設計時の脅威評価
- 02アーキテクチャ変更後のモデル更新
- 03対策の記録と担当者の割り当て
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill performing-threat-modeling-with-owasp-threat-dragonインストール後、Claude Code で/performing-threat-modeling-with-owasp-threat-dragonを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py詳細
OWASP Threat Dragon を使用した脅威モデリング
概要
OWASP Threat Dragon は、セキュリティチームや開発者が脅威モデルの図を作成し、確立された手法(STRIDE、LINDDUN、CIA、DIE、PLOT4ai)を用いて脅威を特定し、包括的なレポートを生成できるオープンソースの脅威モデリングツールです。Threat Dragon はウェブアプリケーションとデスクトップアプリケーション(Windows、macOS、Linux)の両方で動作し、分散したチームが脅威モデルを共同で作成できます。バージョン 2.x では、ドラッグ&ドロップによる図の作成、脅威と緩和策の自動生成ルールエンジン、ドキュメント作成や GRC コンプライアンス対応のための PDF レポート出力を利用できます。
使用する場面
- owasp threat dragon を使用した脅威モデリングを伴うセキュリティ評価を実施する場合
- 関連するセキュリティインシデントに対するインシデント対応手順に従う場合
- 定期的なセキュリティテストや監査活動を実施する場合
- 実地テストを通じてセキュリティ制御を検証する場合
前提条件
- OWASP Threat Dragon のデスクトップアプリケーション、またはウェブインスタンス
- データフロー図(DFD)の表記法に関する理解
- STRIDE または LINDDUN による脅威分類の知識
- アプリケーションアーキテクチャのドキュメントとネットワーク図
- 設計レビューセッションに参加する関係者へのアクセス
脅威モデリングの手法
STRIDE
| カテゴリー | 脅威の種類 | 説明 | 例 |
|---|---|---|---|
| S | なりすまし | ユーザーまたはシステムになりすますこと | 盗まれたセッショントークン |
| T | 改ざん | 転送中または保存中のデータを変更すること | レコードを改変する SQL インジェクション |
| R | 否認 | ある操作が行われたことを否定すること | 監査ログの欠落 |
| I | 情報漏えい | 機密データを公開すること | API が過剰なフィールドを返す |
| D | サービス拒否 | サービスを利用不能にすること | リソース枯渇攻撃 |
| E | 権限昇格 | 不正なアクセス権を取得すること | アクセス制御の不備 |
LINDDUN(プライバシー重視)
| カテゴリー | 脅威の種類 | 説明 |
|---|---|---|
| L | リンカビリティ | 異なるコンテキスト間でデータ項目を関連付けること |
| I | 識別可能性 | データから個人を特定すること |
| N | 否認防止 | 操作を否定できないこと(プライバシーリスク) |
| D | 検知可能性 | 対象者に関するデータが存在するかを判定すること |
| D | 開示 | 個人情報を公開すること |
| U | 認識不足 | ユーザーがデータ収集を認識していないこと |
| N | コンプライアンス違反 | プライバシー規制に違反すること |
ワークフロー
ステップ 1 --- Threat Dragon をインストールする
デスクトップアプリケーション: Windows(.exe)、macOS(.dmg)、Linux(.AppImage/.deb/.rpm)向けのインストーラーを、OWASP Threat Dragon のリリースページからダウンロードします。
ウェブアプリケーション(Docker):
docker run -p 3000:3000 \
-e ENCRYPTION_JWT_SIGNING_KEY=$(openssl rand -hex 32) \
-e ENCRYPTION_JWT_REFRESH_SIGNING_KEY=$(openssl rand -hex 32) \
-e ENCRYPTION_KEYS='[{"isPrimary":true,"id":0,"value":"'$(openssl rand -hex 16)'"}]' \
-e NODE_ENV=production \
owasp/threat-dragon:latest
ステップ 2 --- スコープを定義する
図を作成する前に、次の項目を文書化します。
- システム名と説明
- 保護する資産(ユーザーデータ、認証情報、決済情報)
- 外部依存関係(サードパーティ API、クラウドサービス)
- コンプライアンス要件(GDPR、HIPAA、PCI DSS)
- 信頼境界(ネットワークセグメント、認証ゾーン)
ステップ 3 --- データフロー図を作成する
Threat Dragon で新しい脅威モデルを作成し、次の DFD 要素を使用して図を追加します。
プロセス:データを変換するアプリケーション、マイクロサービス、API エンドポイントです。円または角丸四角形で表します。
データストア:データを永続化するデータベース、ファイルシステム、キャッシュ、メッセージキューです。平行線で表します。
外部エンティティ:信頼境界の外部にあるユーザー、外部システム、サードパーティサービスです。四角形で表します。
データフロー:データの方向を示す、要素間の通信チャネルです。データの内容を説明するラベル付きの矢印で表します。
信頼境界:信頼レベルの異なるゾーン(インターネット/DMZ/内部ネットワーク、ユーザー/管理者)を分ける破線です。
ステップ 4 --- 脅威を特定する
各 DFD 要素に対して、STRIDE 手法を適用します。
| 要素の種類 | 適用される STRIDE カテゴリ |
|---|---|
| 外部エンティティ | なりすまし、否認 |
| プロセス | なりすまし、改ざん、否認、情報漏えい、DoS、権限昇格 |
| データストア | 改ざん、情報漏えい、DoS |
| データフロー | 改ざん、情報漏えい、DoS |
Threat Dragon のルールエンジンは、要素の種類に基づいて脅威を自動的に提案します。各提案を確認し、次のようにマークします。
- 軽減済み:既存のコントロールで脅威に対処できています
- 該当なし:この状況には脅威が当てはまりません
- 未対応:脅威への対処が必要です(優先度と担当者を割り当てます)
ステップ 5 --- 軽減策を定義する
未対応の脅威ごとに、次の内容を記録します。
- 軽減策(防止、検出、対応、移転)
- 具体的な技術的コントロール(暗号化、認証、レート制限)
- 実装を担当する責任者
- 修正の優先度とスケジュール
ステップ 6 --- レポートを生成する
Threat Dragon は、次の内容を含む PDF レポートを生成します。
- 脅威モデルのエグゼクティブサマリー
- 注釈付きデータフロー図
- 重大度評価付きの脅威一覧
- 軽減策の状況と推奨事項
- 該当する場合はコンプライアンスとのマッピング
ステップ 7 --- SDLC に統合する
- 新機能の設計段階で脅威モデリングを実施します
- アーキテクチャに変更があった場合は脅威モデルを更新します
- セキュリティ設計レビューで脅威モデルを確認します
- 脅威モデルのファイルをコードとともにバージョン管理に保存します
- セキュリティの受け入れ基準で脅威モデルの調査結果を参照します
脅威モデルのファイル形式
Threat Dragon は脅威モデルに JSON 形式を使用しており、バージョン管理やプログラムによる操作が可能です。
{
"version": "2.2.0",
"summary": {
"title": "E-Commerce Application",
"owner": "Security Team",
"description": "Threat model for the checkout flow"
},
"detail": {
"contributors": [
{"name": "Security Architect"}
],
"diagrams": [
{
"id": 0,
"title": "Checkout Flow",
"diagramType": "STRIDE",
"cells": []
}
]
}
}
CycloneDX TMBOM との統合
Threat Dragon は CycloneDX Threat Model Bill of Materials(TMBOM)の取り組みに参加しており、共通形式へのエクスポートを可能にします。この形式は他の脅威モデリングツールや GRC プラットフォームで利用でき、ベンダーロックインを防止します。
ベストプラクティス
- シンプルに始める:詳細な図に分解する前に、まず高レベルの DFD(レベル 0)から始めます
- 開発者を参加させる:現実的な脅威評価のため、脅威モデリングのセッションに開発チームのメンバーを参加させます
- セッションの時間を区切る:初回のセッションは 90 分に制限し、フォローアップのセッションで反復します
- リスクに応じて優先順位を付ける:重大度評価(Critical、High、Medium、Low)を使用して軽減策の優先順位を付けます
- 常に更新するドキュメントにする:脅威モデルを、システムとともに変化する更新可能なドキュメントとして扱います
- 可能な場合は自動化する:ルールエンジンを初期の脅威生成に使用し、その後手動で精緻化します