Threat modeling
Threat modeling — структурированный способ думать об угрозах заранее, до того как что-то взломано. Вопросы: что нужно защитить? От кого? Как могут атаковать? Как мы это обнаружим?
Самая простая схема — STRIDE (акроним по видам угроз):
| Угроза | Суть | Контрмера |
|---|---|---|
| Spoofing | Притвориться другим пользователем | Аутентификация |
| Tampering | Изменить данные в пути | HTTPS, подписи |
| Repudiation | «Я этого не делал» | Логирование, аудит |
| Information Disclosure | Утечка данных | Шифрование, авторизация |
| Denial of Service | Перегрузить систему | Rate limiting, резервирование |
| Elevation of Privilege | Получить права выше своих | Авторизация, least privilege |
Процесс (упрощённо):
- Нарисовать диаграмму потоков данных (кто с кем общается)
- Найти границы доверия (где данные переходят из одной зоны в другую)
- На каждой границе применить STRIDE — перечислить возможные угрозы
- Для каждой угрозы — контрмера или принятый риск
Копнуть глубже
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, среднее = приоритет угрозы. Помогает решить, что фиксить сначала.
• расшифровать STRIDE и привести пример угрозы из каждой категории (если дошёл до 2-го слоя).