---
name: threat-model
description: コードベースの脅威モデルを作ります。「脅威モデルを作って」「セキュリティ上の危険を洗い出して」「攻撃されるとしたらどこか」「脅威モデリングして」のときに使います。ソースを読むだけの静的な調査で、対象のコードは実行しません。結果は THREAT_MODEL.md に出します。
allowed-tools: Read, Glob, Grep, Bash(python3 .claude/skills/_lib/checkpoint.py:*), Bash(python .claude/skills/_lib/checkpoint.py:*)
---

# 脅威モデリング（静的解析のみ）

対象のコードベースについて、守るべきもの・入口・信頼の境目・脅威を洗い出し、`THREAT_MODEL.md` にまとめます。

最初の応答の冒頭で、次の1行を必ず出してください。

> この Skill は静的解析のみを行います。対象コードの実行、外部への通信、ファイルの変更（THREAT_MODEL.md の作成を除く）は行いません。

## 前提

- 対象は依頼で指定されたフォルダです（例: `@kadaiB`）。指定が無ければ、対象をどこにするか1度だけ確認します。
- 対象のソースが100ファイルを超える場合は、入口（コントローラ・エンドポイント）とデータアクセスに絞って調べ、その旨を報告に書きます。
- 所要は3分から5分です。逐次で進めます。並列のサブエージェントは起動しません。

## 手順

### 1. 棚卸し

`bootstrap.md` の手順に従って、対象の形を掴みます。ここで拾うのは次の4つです。

1. 入口（HTTP のエンドポイント、フォーム、ファイル読み込み、コンソール）
2. データの置き場所（DB、ファイル、メモリ）
3. 外部との接続（外部API、メール送信、ファイル出力）
4. 認証・認可の有無

終わったら記録を残します。

```
# Windows で python3 が使えない場合は python に読み替えてください
python3 .claude/skills/_lib/checkpoint.py bootstrap "入口N件・データM件を棚卸し"
```

### 2. 前提の確認

`interview.md` の質問リストのうち、コードから読み取れないものだけを依頼者に聞きます。研修中は時間が限られるため、**聞くのは3問まで**にし、残りは既定値（`interview.md` に記載）を採用して、その旨を報告に明記します。

### 3. 脅威の洗い出し

`schema.md` の分類に沿って、入口ごとに脅威を挙げます。1つの入口につき最低1件は挙げます。

各脅威には次を付けます。

- 何が起きるか（被害の形）
- どこから入るか（ファイルと行）
- 何が守られていないか（欠けている対策）
- 起こりやすさ（高 / 中 / 低）と影響の大きさ（高 / 中 / 低）

記録を残します。

```
python3 .claude/skills/_lib/checkpoint.py threats "脅威N件を抽出"
```

### 4. 並べ替えと出力

起こりやすさと影響の組み合わせで並べ替え、`<対象>/THREAT_MODEL.md` に書き出します。書式は `schema.md` のとおりです。

書き出したら記録を残します。

```
python3 .claude/skills/_lib/checkpoint.py report "THREAT_MODEL.md を出力"
```

### 5. 報告

会話では次の3点だけを述べます。詳細はファイルに書いてあるので繰り返しません。

1. 脅威を何件挙げたか
2. 一番上に来た脅威は何か、その理由
3. コードから読み取れず、人に確認が必要なもの

最後に、CLAUDE.md の `## 応答の最後に必ず出すもの` に従って実行サマリーを出します。

## 脅威と脆弱性の違い

報告の中で言葉を混ぜないでください。

- 脅威: 設計と露出の性質から生じるもの。1行直しても消えません（例: 認証が無いので誰でも貸出操作ができる）
- 脆弱性: 個別の不具合。1行直せば消えます（例: null チェックが無くて500エラーになる）

演習で直したバグが `THREAT_MODEL.md` に出てこないことがあります。それは正常です。

## やらないこと

- 対象コードの実行、アプリの起動、テストの実行
- 外部への通信、脆弱性データベースへの問い合わせ
- 攻撃コードや実際に動く悪用手順の記述
- `THREAT_MODEL.md` 以外のファイルの作成・変更

## 同梱ファイル

- `bootstrap.md`: 棚卸しの手順
- `interview.md`: 前提を確認する質問と既定値
- `schema.md`: `THREAT_MODEL.md` の書式と脅威の分類
- `README.md`: 元にした実装と、配らなかった部分の説明

---

ハーネス種別: 分析系 Skill（静的解析のみ。対象コードを実行しません）
Givery 講師 安田によるセキュリティチェック済み
引用元URL: https://github.com/anthropics/defending-code-reference-harness （threat-model、Apache-2.0）。公式版のうち Docker と隔離実行を必要とする `harness/` `targets/` `bin/` は同梱していません。研修環境では読み取り専用の部分だけを配っています。
