---
name: threat-model
description: Моделирование угроз портала Лидерра по STRIDE — карта точек входа, что меняется при выходе в интернет, приоритизация защиты. Используй при «смоделируй угрозы», «откуда могут атаковать», «что защищать в первую очередь перед публикацией», «карта точек входа», «threat model / STRIDE». НЕ для аудита ПДн/152-ФЗ (pdn-152fz-audit #71), статического security-аудита кода (D3/Semgrep/Trail of Bits), generic архитектурных паттернов (architecture-patterns), go-live прогона (security-go-live #73).
---

# Threat Model — моделирование угроз портала Лидерра

Проектный скил раздела A8 карты «Информационная безопасность». Применяет методологию
**STRIDE** к реальным точкам входа портала и отвечает на главный вопрос перед
публикацией: **что именно меняется, когда в систему может зайти любой из интернета**.

## Когда использовать

- «Смоделируй угрозы» / «откуда могут атаковать» / «что защищать в первую очередь»
- Подготовка к go-live — составление модели угроз как артефакта (отдельно от
  чек-листа запуска, который — в `security-go-live #73`)
- Анализ конкретного эндпоинта: «насколько опасен открытый `/api/webhook/{token}`?»
- Ответ на вопрос заказчика / регулятора «покажи модель угроз»

## Процедура STRIDE для Лидерры

Полный разбор точек входа и таблица угроз — `references/stride-portal.md`.

### Шаги

1. **Определить периметр** — что сейчас открыто наружу vs что будет открыто после
   публикации. Основа: список точек входа в `references/stride-portal.md`.
2. **Пройти по STRIDE для каждой точки** — заполнить 6 строк (S/T/R/I/D/E).
   Опираться на таблицу в `references/stride-portal.md`; при новых эндпоинтах
   добавлять строки по тому же шаблону.
3. **Оценить вероятность × ущерб** — приоритизировать по матрице из `references/stride-portal.md`.
4. **Сформировать список контрмер** — что уже есть (RLS, HMAC, Sanctum, rate-limit),
   чего не хватает (rate-limit на login, WAF, 2FA enforcement, и т.д.).
5. **Сохранить результат** в `docs/security/threat-model-YYYY-MM-DD.md`.

## Выход

Файл `docs/security/threat-model-<дата>.md` со структурой:

- Область действия (дата, версия схемы, commit)
- Карта точек входа (таблица)
- STRIDE по каждой точке
- Дельта «был закрытый круг → стал интернет»
- Приоритизированный список рисков с контрмерами

## Границы

- ≠ `pdn-152fz-audit` #71 — тот про *персональные данные и 152-ФЗ* (конкретные
  таблицы, согласия, права субъекта); threat-model про *вектора атак и защиту
  эндпоинтов*.
- ≠ D3 audit-security (#39/#40 Trail of Bits / Semgrep) — те про *статический
  анализ кода на уязвимости*; threat-model про *архитектурную карту угроз*.
- ≠ `architecture-patterns` #38 — тот generic-паттерны; threat-model — конкретный
  портал, конкретные маршруты.
- ≠ `security-go-live` #73 — тот *прогоняет конкретный чек-лист* перед релизом
  (Nmap, заголовки, CVE, gitleaks, DAST); threat-model *строит модель угроз как
  документ* (вход для чек-листа и приоритизации работ).

## Связано

- `references/stride-portal.md` — детальная карта точек входа и STRIDE-таблица.
- `pdn-152fz-audit` #71 — смежный аудит ПДн; часто запускается вместе с threat-model.
- `security-go-live` #73 — операционный прогон после threat-model завершён.
- D3 / Semgrep #25 / Trail of Bits #39 — статический анализ; дополняет threat-model
  на уровне кода.
- ADR-013 (infosec-tooling A8).
