# THREAT_MODEL.md の書式

## 脅威の分類

6分類で見ます。入口ごとに、当てはまるものを挙げます。

| 分類 | 何を疑うか | 本題材での例 |
|---|---|---|
| なりすまし | 誰が操作したかを確かめられるか | 認証が無く、誰でも貸出操作ができる |
| 改ざん | データを勝手に変えられないか | 貸出数のパラメータを直接送ると在庫を任意に変えられる |
| 否認 | 誰が何をしたかの記録が残るか | 操作ログが無く、在庫が減った理由を追えない |
| 情報の露出 | 見えてはいけないものが見えないか | エラー画面にスタックトレースが出て内部構造がわかる |
| サービス妨害 | 止められないか | 検索条件に極端な値を入れて処理が返らなくなる |
| 権限の昇格 | できないはずの操作ができないか | 開発用の H2 コンソールから直接データを操作できる |

## 出力の書式

```markdown
# 脅威モデル: <対象名>

作成日: <YYYY-MM-DD> ／ 対象: <パス> ／ 方法: 静的解析のみ（コードは実行していません）

## 1. 守るべきもの

| # | 守るもの | なぜ守るか | 失われたときの影響 |
|---|---|---|---|

## 2. 入口

| # | 入口 | 場所（ファイル・行） | 受け取るもの | 誰が使えるか |
|---|---|---|---|---|

## 3. 信頼の境目

（どこから先が「信用できない入力」になるかを、2行から3行で書く）

## 4. 脅威

| # | 分類 | 何が起きるか | 入口 | 場所（ファイル・行） | 欠けている対策 | 起こりやすさ | 影響 | 優先度 |
|---|---|---|---|---|---|---|---|---|

優先度は、起こりやすさと影響の組み合わせで決めます。

| | 影響 高 | 影響 中 | 影響 低 |
|---|---|---|---|
| **起こりやすさ 高** | 1 | 2 | 3 |
| **起こりやすさ 中** | 2 | 3 | 4 |
| **起こりやすさ 低** | 3 | 4 | 5 |

表は優先度の小さい順に並べます。

## 5. 置いた前提

| 項目 | 置いた前提 | 出どころ |
|---|---|---|

（`interview.md` の既定値を使った項目は、出どころに「既定値」と書きます）

## 6. 人に確認してほしいこと

- <コードからは判断できず、運用の実態を知る人でないと決められないもの>

## 7. 範囲外

- 対象コードの実行を伴う確認（隔離環境が必要なため実施していません）
- <その他、見なかった範囲>
```

## 書き方の決まり

- 脅威は「〜が心配です」ではなく、「何が起きるか」を具体的に書きます
- 攻撃の手順や、動く悪用コードは書きません。どこが守られていないかまでに留めます
- 場所はファイルと行まで書きます。特定できないものは「特定できず」と書き、推測で行を書きません
