Skip to content
PПромтбук
RUEN
04Безопасность

Threat modeling (STRIDE)

Систематически перечислить угрозы прежде чем строить защиту.

Threat-моделирование для {{system}} через STRIDE.

STRIDE — 6 категорий угроз

БукваУгрозаКонтрмеры
SpoofingПоддельная identityAuth, MFA, сильные creds
TamperingИзменение данныхПодпись, integrity checks, immutable
Repudiation"Я этого не делал"Audit logs, non-repudiable signatures
Info disclosureУтечка данныхEncryption, ACL, минимизация
Denial of ServiceСделать недоступнымRate limit, capacity, throttling
Elevation of PrivilegeПолучить больше правLeast privilege, sandboxing

Шаги

1. Опиши систему

Data flow diagram (DFD):

  • Внешние entities (пользователи, third-party)
  • Процессы (твои сервисы)
  • Data stores (БД, файлы)
  • Data flows (как данные ходят между ними)
  • Trust boundaries (где доверие меняется)
[User] ──HTTP──→ [Web Server] ──SQL──→ [Database]
                       │
                       └──HTTP──→ [Stripe API]

2. Для каждого элемента — прогон STRIDE

ElementSTRIDE
User → Websession hijackMITMnothing loggedsniff credsflood requestsimpersonate admin
Web → DBfake connSQL injectionno auditdump DBhammer DBprivilege escalation
Web → Stripespoof StripeMITMnothing loggedleak amountsrate limitabuse webhook

Не каждая угроза применима — отметь N/A с обоснованием.

3. Оцени severity (DREAD)

Для каждой угрозы:

  • Damage (вред если случится) 1-10
  • Reproducibility (легко повторить?) 1-10
  • Exploitability (нужны ли скиллы?) 1-10
  • Affected users (% пользователей) 1-10
  • Discoverability (легко найти?) 1-10

Score = avg. > 7 = критично, надо фиксить.

4. Mitigation

Для каждой high-severity угрозы:

  • Контрмера (что делать)
  • Стоимость (время / деньги)
  • Эффективность (закрывает полностью / частично)
  • Owner (кто отвечает)

5. Acceptance

Что-то может остаться не митигированным:

  • Слишком дорого
  • Слишком редко
  • Защита создаёт другие риски

Документируй "accepted risk" с обоснованием.

Пример

Threat: User credentials stuffing
STRIDE: S (Spoofing)
DREAD: D=8, R=10, E=4, A=3, D=8 → avg 6.6

Mitigation:
- Rate limiting on /login (5 attempts / 15 min / IP)
- 2FA available for users
- CAPTCHA after 2 failed
- haveibeenpwned check at signup

Status: Mitigated
Owner: Backend team

Когда делать threat modeling

  • В начале проекта (high-level)
  • При значимых изменениях (новая интеграция, фича)
  • После security incident (что мы пропустили?)
  • Раз в год — full review

Анти-паттерны

  • ❌ "У нас маленький стартап, нас не атакуют" — атакуют ботами всех
  • ❌ Threat model на 200 страниц — никто не читает
  • ❌ Не пересматривать (система меняется)
  • ❌ Только разработчики (бизнес-логика — отдельный класс угроз)

В конце

  • DFD с trust boundaries
  • Таблица threat × element × STRIDE
  • Топ-5 угроз с DREAD score
  • Mitigation plan
  • Accepted risks с обоснованием
К подразделу «Безопасность»
Похожие промты