Карта / Угрозы (OWASP) / Threat modeling

Threat modeling

Threat modeling — структурированный способ думать об угрозах заранее, до того как что-то взломано. Вопросы: что нужно защитить? От кого? Как могут атаковать? Как мы это обнаружим?

Самая простая схема — STRIDE (акроним по видам угроз):

УгрозаСутьКонтрмера
SpoofingПритвориться другим пользователемАутентификация
TamperingИзменить данные в путиHTTPS, подписи
Repudiation«Я этого не делал»Логирование, аудит
Information DisclosureУтечка данныхШифрование, авторизация
Denial of ServiceПерегрузить системуRate limiting, резервирование
Elevation of PrivilegeПолучить права выше своихАвторизация, least privilege

Процесс (упрощённо):

  1. Нарисовать диаграмму потоков данных (кто с кем общается)
  2. Найти границы доверия (где данные переходят из одной зоны в другую)
  3. На каждой границе применить STRIDE — перечислить возможные угрозы
  4. Для каждой угрозы — контрмера или принятый риск
Копнуть глубже

Threat modeling не только для security-команды. Лучший момент — при проектировании нового API или сервиса, до написания кода. 30-минутное обсуждение в команде по STRIDE найдёт больше проблем, чем ретроспективный аудит.

Attack Tree — альтернативный метод: начинаем с цели злоумышленника (получить данные пользователей) и разворачиваем дерево возможных путей её достижения. Каждый лист — конкретная атака. Помогает приоритизировать: какие ветки наиболее реалистичны и дорогостоящи для нас.

Least Privilege — принцип минимальных прав, прямо вытекающий из Elevation of Privilege:

  • Сервисный аккаунт БД имеет только SELECT/INSERT/UPDATE на нужные таблицы, не GRANT или DROP
  • API-ключ к S3 — только на нужный bucket и нужные операции (PutObject), не на весь аккаунт
  • Kubernetes Pod — только те Secrets, которые нужны конкретно этому сервису

DREAD — метод приоритизации угроз по шкале: Damage, Reproducibility, Exploitability, Affected Users, Discoverability. Каждый аспект оценивается 1–10, среднее = приоритет угрозы. Помогает решить, что фиксить сначала.

🎤 Закрыл тему, если можешь объяснить:
• что такое threat modeling и зачем это делать до начала разработки;
• расшифровать STRIDE и привести пример угрозы из каждой категории (если дошёл до 2-го слоя).