Модель угроз и культура безопасности

Прежде чем защищаться, полезно спросить: что мы защищаем, от кого и что может пойти не так.

Моделирование угроз — структурированный способ заранее перечислить, что в системе может быть атаковано и как, чтобы расставить приоритеты в защите.

Четыре вопроса модели угроз

Простую модель угроз можно построить, ответив на четыре вопроса:

  1. Что мы строим? Опишите систему: где данные, где границы доверия, кто с кем общается.
  2. Что может пойти не так? Перечислите потенциальные атаки.
  3. Что мы с этим сделаем? Для каждой угрозы — мера защиты.
  4. Хорошо ли мы справились? Проверьте, не осталось ли непокрытых угроз.

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 помогает не забыть категории угроз.
  • Принцип наименьших привилегий ограничивает ущерб от взлома.
  • Культура «не доверяй вводу» и «защита по умолчанию» важнее любого отдельного инструмента.
Проверьте себя
1. Что описывает принцип наименьших привилегий?
AДавать всем максимум прав для удобства
BДавать каждому ровно столько прав, сколько нужно для работы, и не больше
CЗапрещать любой доступ ко всему
DРаздавать права только администраторам
2. Для чего нужна мнемоника STRIDE?
AДля шифрования паролей
BЧтобы не забыть основные категории угроз при моделировании
CДля ускорения работы базы данных
DДля генерации случайных чисел
3. Какая привычка лучше всего описывает безопасную культуру?
AДоверять любому вводу от пользователя
BНе доверять вводу и закрывать функции по умолчанию
CСкрывать инциденты, чтобы не пугать команду
DДавать сервисам максимум прав на всякий случай
Поддержать проект