threat-model
セキュリティに関する重要な機能を実装する前に、STRIDE脅威モデリングを実施します。このアプローチにより、潜在的なセキュリティリスクを体系的に特定・評価することができます。STRIDEは、詐称(Spoofing)、改ざん(Tampering)、否認(Repudiation)、情報漏露(Information Disclosure)、サービス拒否(Denial of Service)、権限昇格(Elevation of Privilege)の6つの脅威カテゴリを対象としています。実装前の早期段階でこの分析を行うことで、設計段階での脆弱性を発見し、本番環境での問題発生を予防できます。
description の原文を見る
STRIDE threat modeling before implementing security-sensitive features
SKILL.md 本文
脅威モデル スキル
目的
セキュリティに関連する機能を実装する「前に」STRIDE 脅威モデルを作成します。設計時(修正コストが最小)でセキュリティ問題を防ぎ、実装後(高コスト)や本番環境(致命的)での対応を回避できます。
実行時期
- 実装前:認証、認可、ユーザー登録、ファイルアップロード
- 実装前:決済処理、データストレージ、API エンドポイント、管理機能
- 以下を扱う機能の前:個人識別情報、金融データ、健康データ、シークレット、ファイル
ステップ
-
システムコンポーネントと信頼境界を特定
- C4 コンポーネント図がある場合は参照(
docs/architecture/) - データフローを描画:ユーザー → エントリーポイント → 処理 → ストレージ → レスポンス
- 信頼境界をマーク(権限やプリビレッジが変わる場所)
- アクター を特定:認証ユーザー、匿名ユーザー、管理者、外部サービス、攻撃者
- C4 コンポーネント図がある場合は参照(
-
各コンポーネントに STRIDE を適用
各コンポーネント(API エンドポイント、サービス、データストア)について、体系的に以下を確認します:
S — なりすまし(Spoofing)
- 攻撃者が別のユーザーやサービスになりすまされる可能性はないか?
- 脅威例:盗まれた JWT トークン、偽造 API キー、セッションハイジャック
T — 改ざん(Tampering)
- 攻撃者がデータを転送中または保存中に変更できる可能性はないか?
- 脅威例:中間者攻撃、SQL インジェクション、パラメータ改ざん、大量割り当て
R — 否認(Repudiation)
- 攻撃者がアクションの実行を否定できる可能性はないか?
- 脅威例:監査ログなし、金融取引のデジタル署名なし
I — 情報開示(Information Disclosure)
- 攻撃者が見るべきでないデータにアクセスできる可能性はないか?
- 脅威例:IDOR、詳細なエラーメッセージ、ログインジェクション、SSRF
D — サービス拒否(Denial of Service)
- 攻撃者がサービスの可用性を低下または遮断できる可能性はないか?
- 脅威例:レート制限なし、リソース枯渇、大きなファイルアップロード
E — 権限昇格(Elevation of Privilege)
- 攻撃者が想定以上の権限を得られる可能性はないか?
- 脅威例:JWT アルゴリズム混同、管理エンドポイント への IDOR、ビジネスロジックバイパス
-
各脅威をスコア化
要因 低 中 高 可能性 攻撃者が特殊なアクセスやスキルが必要 既知の悪用パターンが存在 簡単に悪用可能 影響 マイナーなデータ露出 ユーザーデータが侵害 すべてのデータ、システム侵害 優先度 = 可能性 × 影響(高×高 = 重大)
-
高および重大な脅威の軽減策を提案
| 脅威 | STRIDE | 可能性 | 影響 | 優先度 | 軽減策 | |---|---|---|---|---|---| | 盗まれた JWT によるなりすまし | S | 高 | 高 | 重大 | 短い有効期限(15分)、リフレッシュトークンローテーション、トークン失効リスト | | /users/{id} エンドポイント への IDOR | I | 中 | 高 | 高 | 所有権確認:返却前に user.id === session.userId を検証 | | /auth/login へのレート制限なし | D | 高 | 中 | 高 | IP ごと 1 分間に 5 回、アカウント当たり 3 回、指数バックオフ | -
THREAT_MODEL_TEMPLATE.md を記入
- 保存先:
docs/security/threat-models/[feature-name]-threat-model.md
- 保存先:
-
新しいセキュリティ不変量が出現した場合、CONSTITUTION.md を更新
- 例:「ユーザーが /api/users/{id} にアクセスする場合、システムはリクエストユーザーがそのリソースを所有していることを確認すること」
-
軽減策のタスクを作成
- 各高/重大な軽減策を project/tasks.md に追加
- これらはブロッキングタスク — 機能完成前に実装必須
-
人間によるレビューが必須
- 機能実装前に脅威モデルを人間に提示
- すべての重大および高リスク軽減策が実装されることを確認
STRIDE クイックリファレンス
| 文字 | カテゴリ | 確認すべき質問 |
|---|---|---|
| S | なりすまし | 誰が誰であると主張し、どうやって検証するのか? |
| T | 改ざん | 権限のない者によってどのようなデータが変更される可能性があるか? |
| R | 否認 | アクションを否定できるか?不変的にログされているか? |
| I | 情報開示 | 何が、誰に漏らされる可能性があるか? |
| D | サービス拒否 | 何が枯渇、フラッド、またはブロックされる可能性があるか? |
| E | 権限昇格 | 誰かが意図した以上のアクセスを得るにはどうするか? |
制約
- 脅威モデリングは以下の実装前に「必須」:認証、決済、ファイルストレージ、管理機能
- すべての重大な脅威は、機能リリース前に実装された軽減策が必須
- 高リスクの脅威は軽減策または人間によるリスク受け入れドキュメント化が必須
- セキュリティ制御は、特定の脅威に対処する理由をドキュメント化せずに実装しない
出力フォーマット
docs/security/threat-models/[name]-threat-model.md での完成した脅威モデルファイル + 軽減策のタスク追加
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- majiayu000
- ライセンス
- MIT
- 最終更新
- 2026/5/4
Source: https://github.com/majiayu000/claude-skill-registry / ライセンス: MIT