Модель угроз и культура безопасности
Прежде чем защищаться, полезно спросить: что мы защищаем, от кого и что может пойти не так.
Моделирование угроз — структурированный способ заранее перечислить, что в системе может быть атаковано и как, чтобы расставить приоритеты в защите.
Четыре вопроса модели угроз
Простую модель угроз можно построить, ответив на четыре вопроса:
- Что мы строим? Опишите систему: где данные, где границы доверия, кто с кем общается.
- Что может пойти не так? Перечислите потенциальные атаки.
- Что мы с этим сделаем? Для каждой угрозы — мера защиты.
- Хорошо ли мы справились? Проверьте, не осталось ли непокрытых угроз.
STRIDE — памятка по типам угроз
Чтобы не забыть категории угроз, используют мнемонику STRIDE:
| Буква | Угроза | Нарушает |
| S — Spoofing | выдача себя за другого | аутентичность |
| T — Tampering | подмена данных | целостность |
| R — Repudiation | отрицание действий | неотказуемость |
| I — Information disclosure | утечка информации | конфиденциальность |
| D — Denial of service | отказ в обслуживании | доступность |
| E — Elevation of privilege | повышение прав | авторизацию |
Прогоняя каждый компонент системы через STRIDE, легче заметить пропущенные риски. Например, форма входа: может ли кто-то выдать себя за другого (S)? Подобрать пароль перебором (D — заваливая систему попытками)? Получить чужие права (E)?
Принцип наименьших привилегий
Один из главных принципов: каждый компонент и каждый пользователь должны иметь ровно столько прав, сколько нужно для работы, и ни капли больше. Сервису, который только читает данные, не нужен доступ на запись. Если такой сервис взломают, ущерб будет ограничен.
Культура «безопасно по умолчанию»
Технические меры работают только вместе с правильными привычками команды:
- Не доверяй вводу. Любые данные извне — потенциально враждебны, пока не проверены.
- Защита по умолчанию. Новая функция должна быть закрытой, пока явно не открыта, а не наоборот.
- Прозрачность. Об инцидентах и подозрениях говорят сразу, без страха наказания — иначе их прячут.
- Безопасность — часть ревью. На код-ревью смотрят не только на логику, но и на безопасность.
Здоровое отношение к ошибкам
Ни одна система не безопасна на 100%. Цель — не достичь идеала, а сделать атаку достаточно дорогой и сложной, чтобы она была невыгодной, и быстро заметить и остановить то, что всё-таки случилось. Команда, которая открыто разбирает инциденты и учится на них, защищена лучше команды, которая делает вид, что проблем не бывает.
Итог
- Модель угроз отвечает на 4 вопроса: что строим, что не так, что делаем, как проверим.
- STRIDE помогает не забыть категории угроз.
- Принцип наименьших привилегий ограничивает ущерб от взлома.
- Культура «не доверяй вводу» и «защита по умолчанию» важнее любого отдельного инструмента.