Что такое модель угроз и зачем её строить до покупки SIEM

За последние пару лет я участвовал примерно в десятке разборов «почему наш ИБ работает не так, как обещал вендор». Сценарий почти всегда один: компания приходит с запросом «нам нужен SIEM», «нам нужен WAF», «нам нужен EDR». На вопрос, от кого и от чего защищаемся, звучит «ну, от хакеров». Дальше — тендер, внедрение по мануалу, 40 тысяч событий в сутки и тихое отключение через год, потому что «слишком шумно». Деньги потрачены, уровень защищённости не изменился. Причина одна: команда начала с инструмента, а не с модели угроз.

Ниже — что это такое, из чего состоит, какие методологии действительно применяются и как встроить процесс так, чтобы он не превратился в очередной мёртвый документ.

Что такое модель угроз

Модель угроз (threat model) — это структурированное описание того, что вы защищаете, от кого, каким способом это можно сломать и что вы с этим собираетесь делать. Не артефакт для аудитора, а рабочая схема, по которой принимаются инженерные решения: где ставить аутентификацию, что логировать, какую фичу выпускать без дополнительных контролей, а какую — нет.

Классическая формулировка Адама Шостака сводит всё к четырём вопросам:

  • Что мы создаём? — архитектура, данные, границы доверия.
  • Что может пойти не так? — сценарии злоупотребления.
  • Что мы собираемся с этим делать? — контроли и их приоритет.
  • Хорошо ли мы это сделали? — проверка модели и её актуальности.

Чем модель угроз не является

  • Это не список всех CVE в вашем стеке — этим занимается сканер уязвимостей и работа с зависимостями.
  • Это не 200-страничный том, который достают раз в год перед проверкой. Если документ никто не открывает при проектировании спринта, он бесполезен.
  • Это не замена пентесту. Модель отвечает на вопрос «что нас волнует», пентест — «получилось ли у нас это закрыть на практике».
  • Это не одноразовое мероприятие. Архитектура меняется каждые две недели, модель должна ехать вместе с ней.

Зачем это бизнесу: три эффекта, за которые платят

1. Приоритизация. Без модели все уязвимости выглядят одинаково важными, и команда кидается закрывать то, что первым попалось в отчёте сканера. С моделью вы знаете, что публичный API с платежами и внутренний сервис отчётов имеют разную цену ошибки, — и чините по порядку.

2. Сдвиг влево. Найти проблему на этапе RFC (Request for Comments, документ с описанием архитектурного решения) стоит час обсуждения. Переделать аутентификацию в проде после инцидента — недели работы и репутационные потери. Разница в стоимости исправления обычно измеряется порядками.

3. Аргумент в разговоре о бюджете. «Купите WAF» — это разговор про цену. «У нас три сценария с высоким риском на публичном контуре, WAF закрывает два из них, вот что остаётся» — это разговор про риск. Второй вариант гораздо чаще заканчивается согласованием.

Из чего состоит модель: пять блоков

  1. Активы. Данные, сервисы, деньги, репутация, доступы. Начните с того, утечка или простой чего действительно больно бьёт по бизнесу, а не с «у нас есть серверы».
  2. Архитектура и границы доверия. Потоки данных, точки входа, места, где трафик переходит из недоверенной зоны в доверенную (интернет → DMZ → внутренняя сеть → база). Именно на границах происходит большинство интересного.
  3. Нарушители. Внешний атакующий без доступа, внешний с доступом к чужой учётной записи, инсайдер, подрядчик, автоматический сканер, шифровальщик. Для каждого — свои мотивация, возможности и цена входа.
  4. Сценарии. «Что может пойти не так» в формате «нарушитель + способ + последствие». Формулируйте на уровне механики, а не пошаговой инструкции.
  5. Контроли и остаточный риск. На каждый значимый сценарий — либо мера защиты или обнаружения, либо осознанно принятый риск с подписью владельца. Третьего не дано.

Мини-пример для интернет-магазина

  • Актив: база заказов с персональными данными покупателей.
  • Граница доверия: публичный API корзины → внутренний сервис заказов.
  • Сценарий: нарушитель перебирает чужие идентификаторы заказов и получает доступ к данным других покупателей (broken object level authorization).
  • Контроли: проверка владельца объекта на уровне сервиса, а не клиента; лимиты на перебор; логирование аномальных обращений одного пользователя к разным объектам; алерт в SIEM.
  • Остаточный риск: низкий, принят владельцем продукта.

Такой блок на одну страницу полезнее, чем сто страниц общих слов про «комплексную систему информационной безопасности».

Методологии: что реально работает

Методологий много, но в ежедневной работе приживаются три-четыре. Не пытайтесь внедрить всё сразу.

STRIDE

Самая практичная отправная точка для разработки. Шесть категорий угроз: подмена идентичности (Spoofing), изменение данных (Tampering), отказ от авторства (Repudiation), раскрытие информации (Information disclosure), отказ в обслуживании (Denial of service), повышение привилегий (Elevation of privilege). Проходите по каждому элементу диаграммы потоков данных и спрашиваете: «может ли здесь случиться S, T, R, I, D, E?» Работает быстро, не требует экзамена по ИБ и хорошо ложится на ревью архитектуры.

PASTA и LINDDUN

PASTA (Process for Attack Simulation and Threat Analysis) — семишаговый процесс, который стартует от бизнес-целей и заканчивается симуляцией атак. Хорош для критичных систем, где цена ошибки высока, но требует заметно больше времени и участия бизнеса. LINDDUN — специализация под приватность: полезно, если вы обрабатываете персональные данные по 152-ФЗ и вам нужно обосновать минимизацию и защиту данных, а не только «закрыть периметр».

БДУ ФСТЭК и российская специфика

Для компаний, работающих под требованиями регулятора, отправной точкой часто становится Банк данных угроз безопасности информации ФСТЭК России (БДУ) и методический документ «Методология оценки угроз безопасности информации» 2021 года. Практический смысл: если вы попадаете под 152-ФЗ или отраслевые требования, модель угроз — это не «хорошая практика», а документ, который у вас спросят. Хорошая новость в том, что его можно сделать рабочим инструментом, а не формальностью: структура «объект воздействия → источник угрозы → способ реализации → последствия» вполне годится как основа для инженерной работы. Плохая — в том, что переписывать модель под каждое изменение архитектуры мало кто выдерживает, поэтому на практике её обновляют перед проверками, а инженерные решения принимают по более лёгкой рабочей версии.

MITRE ATT&CK

ATT&CK — это не совсем методология моделирования, а база техник атакующих. Её удобно применять на выходе: когда модель угроз уже описывает, что для вас критично, посмотрите, какие техники из ATT&CK соответствуют вашим сценариям, и проверьте, есть ли у вас детект хотя бы на часть из них.

Рабочая связка, к которой я прихожу чаще всего: STRIDE для дизайна → ATT&CK для детекта → БДУ ФСТЭК для документа, который устроит регулятора.

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

  1. Соберите правильных людей на 90 минут. Архитектор, тимлид сервиса, DevSecOps или ИБ, владелец продукта. Без владельца продукта вы не сможете принимать риски, только жаловаться на них.
  2. Нарисуйте диаграмму потоков данных. Пять-десять прямоугольников и стрелок достаточно. Цель — не документация, а общее понимание.
  3. Отметьте границы доверия. Где заканчивается зона, которой вы управляете, и начинается что-то чужое: интернет, внешняя интеграция, ноутбук сотрудника, контейнер без сетевых политик.
  4. Выпишите активы, которые реально важны. Данные, доступы, деньги, возможность остановить сервис.
  5. Пройдите по элементам с чек-листом STRIDE. Пятнадцать минут на компонент, не больше. Всё, что «может быть», записывайте; всё, что «точно нет», тоже — с обоснованием.
  6. Отранжируйте сценарии. Простая матрица «вероятность × ущерб» на три уровня работает лучше любой экселевской модели с восемью параметрами.
  7. Назначьте меры и владельцев. Каждая мера — это задача или тикет, а не строчка «рекомендуется усилить». Каждый принятый риск — с фамилией того, кто его принял.
  8. Поставьте дату пересмотра. Триггеры: новый внешний интерфейс, новая интеграция, смена модели доступа, крупный инцидент в вашей отрасли.

Как встроить это в разработку, а не в ежегодный отчёт

  • Практика «threat modeling as code». Инструменты вроде OWASP Threat Dragon или pytm позволяют держать модель в репозитории рядом с кодом и обновлять её в том же pull request, что и архитектуру.
  • Чек-лист в шаблоне RFC. Пять вопросов про границы доверия, аутентификацию, данные, логирование и отказоустойчивость, на которые автор обязан ответить до обсуждения.
  • Угрозы как часть Definition of Done. Не «мы подумали о безопасности», а «сценарий X закрыт контролем Y, подтверждено тестом».
  • Обновление по триггерам. Модель — живой артефакт. Если её не трогали полгода, а релизы шли каждую неделю, она уже врёт.
  • Связка с детектом. У каждого сценария с высоким риском должен быть хоть какой-то признак в логах, по которому его можно заметить. Иначе вы обнаружите атаку на этапе звонка из банка.

Частые ошибки

  1. Начать с продукта. «Купим X, он и будет нашей моделью угроз» — так не работает. Инструмент не заменяет решение о том, что для вас важно.
  2. Сделать документ вместо процесса. Модель, которую нельзя применить на ревью дизайна, — это отчёт, а не защита.
  3. Моделировать всё. Если у вас 40 сервисов, не начинайте с 40. Возьмите три самых критичных по деньгам и данным.
  4. Забыть про инсайдера и подрядчика. Большинство моделей уходят в защиту от внешнего атакующего, хотя доступ подрядчика к инфраструктуре — часто куда более короткий путь.
  5. Не назначить владельца риска. Риск без владельца не «принят», он просто забыт до инцидента.
  6. Игнорировать остаточный риск. Идеально закрытых систем не бывает; важно честно ответить, что осталось и почему это приемлемо.

Чек-лист: с чего начать на этой неделе

  • Выберите одну систему — ту, где деньги, персональные данные или публичный доступ.
  • Соберите диаграмму потоков данных на один лист и отметьте границы доверия.
  • Выпишите пять-семь активов, простой или утечка которых действительно больно бьёт.
  • Пройдите по компонентам с вопросами STRIDE и запишите все сценарии, включая спорные.
  • Отранжируйте по вероятности и ущербу, оставьте верхние пять-семь.
  • На каждый сценарий — мера защиты или обнаружения, срок и ответственный.
  • Для каждого принятого риска — фамилия владельца и дата пересмотра.
  • Проверьте, что для двух верхних сценариев есть сигнал в логах и алерт.
  • Добавьте пять вопросов о безопасности в шаблон RFC, чтобы процесс не умер после первого раза.

Модель угроз не сделает вашу систему неуязвимой и не заменит ни сканер, ни пентест, ни дежурного в SOC. Она делает другое — превращает «мы что-то купили и что-то настроили» в понятный список того, от чего вы защищаетесь, что уже закрыто и что вы осознанно не закрываете. Это редкий случай, когда полтора часа у белой доски экономят месяцы работы и стоимость одного инцидента.

guest

0 Комментарий