Введение
Чем больше мы полагаемся на цифровые системы, тем дороже обходятся сбои в их работе.
Обеспечить безопасность — ключевая задача при разработке и эксплуатации таких систем.
Чтобы сделать что-то безопасным, сначала нужно понять: какие в принципе угрозы могут возникнуть, откуда они могут появиться, и какие последствия они несут.
После этого можно построить эффективную стратегию защиты. Процесс определения угроз и способов защиты называется Моделированием угроз.
Что такое модель угроз в информационной безопасности?
Под словом «угроза» подразумевается воздействие на систему, которое вызывает нарушение информационной безопасности.
Формальное определение модели угроз звучит так:
«Моделирование угроз – это процесс, с помощью которого потенциальные угрозы могут быть идентифицированы, перечислены и расставлены по приоритетам с точки зрения гипотетического злоумышленника. Цель моделирования угроз состоит в том, чтобы предоставить систематический анализ профиля вероятного неприятеля, наиболее востребованных и вероятных векторов атаки и активов.»
Более просто можно сформулировать следующим образом:
Модель угроз — это структурированный способ выявления и снижения рисков безопасности в программном обеспечении.
По сути, это взгляд на приложение и его контекст через призму кибербезопасности.
Модель угроз можно построить для любых типов информационных и компьютерных систем:
- Корпоративные информационные системы
- Веб и мобильные приложения
- Прикладное и системное ПО
- Сетевые инфраструктуры
- Промышленные и IoT устройства
- Операционные системы
Конечно, каждому типу присуща своя специфика. Но существуют универсальные подходы, направленные на систематизацию моделирования угроз для любых информационных систем. Одним из наиболее популярных подходов является STRIDE.
Методология STRIDE и примеры угроз
STRIDE — это методология моделирования угроз. Она была разработана Microsoft в 1999 году и предназначалась для учёта атак в среде разработки Windows. Несмотря на солидный возраст, актуальности она не потеряла. Это связано с тем, что угрозы описываются достаточно верхнеуровнево и не завязываются на конкретные технологии.
STRIDE создавалась с целью структурировать процесс определения угроз. Дело в том, что в этом процессе должны участвовать не только специалисты по безопасности, но и разработчики, архитекторы и аналитики. STRIDE удобно использовать для получения общего понимания и упрощения взаимодействия в команде.
При идентификации угроз специалист задаёт вопрос: «Что может пойти не так в системе над которой мы работаем?».
Вопрос может показаться слишком общим. И STRIDE даёт ответ на этот вопрос, представляя универсальный список угроз. И остаётся определить, как именно угроза может проявиться в системе и как от неё можно защититься.
В методологию входит 6 категорий, к которым могут относиться угрозы:
- Spoofing
- Tampering
- Repudiation
- Information Disclosure
- Denial of service
- Elevation of privelege
Разберем подробнее каждую из них и приведем конкретные примеры.
Spoofing (Подмена личности)
Это тип угрозы, при котором злоумышленник выдаёт себя за другого пользователя или систему, чтобы получить несанкционированный доступ и действовать от чужого имени. Под спуфингом понимается довольно широкий спектр возможных атак. Общий смысл в том, что каким-либо образом будут происходить попытки обмануть или подделать свою идентичность и представиться легитимным субъектом.

Примеры:
- Атакующий подбирает пароль администратора сайта путем перебора. Если пароль недостаточно сложный и на сайте не внедрена защита от брутфорса, то атака может быть успешной. Так хакер сможет совершать любые действия, а для системы они будут выглядеть легитимными, так как совершаются «администратором».
- Злоумышленник рассылает фишинговые письма, в которых выдает себя за Налоговую службу и просит оплатить фальшивую задолженность. Он может создать ощущение подлинности: использует домен, похожий на оригинальный, создаст схожее на официальное оформление письма и так далее.
- Маскироваться можно не только под пользователя или организацию. Вредоносная программа может представляться легитимным системным процессом, чтобы не вызвать подозрений у антивируса или пользователя.
Главный метод защиты от спуфинга — это корректно реализованная аутентификация. Для информационных систем это может быть многофакторная аутентификация, строгий контроль доступа и использование токенов безопасности.
Tampering (Модификация данных)
Это преднамеренное изменение данных злоумышленником с целью обмана системы или пользователей. Подделка может осуществляться при передаче, хранении или обработке данных. При успешной атаке нарушается целостность информации.
Примеры:

- Классическая атака «Человек посередине». Если между клиентом и сервером не установлено зашифрованное соединение, то злоумышленник может перехватывать сообщения и подменять в них данные.
- Хакер, пользуясь уязвимостями веб-приложений, может изменять файлы на сервере или записи в базе данных. Например, пользуясь SQL-инъекцией, он установит произвольный баланс своего аккаунта. Или же подменит содержимое сайта и внедрит туда вредоносный код.
Для темперинга нет универасльного метода защиты. При передаче данных рекомендуется контролировать целостность, например с помощью цифровой подписи. При хранении и обработке нужно контролировать возможность пользователей вносить и менять данные.
Repudiation (Отказ от ответственности)
Repudiation, или отказ от ответственности, означает возможность пользователя отрицать факт выполнения определенных действий. Это представляет угрозу, если система не ведет надлежащего учета операций и не может доказать, кто и когда их совершил. Данная угроза особенно актуальна для финансовых и правовых систем.
Примеры:
- Пользователь отрицает, что совершил перевод денежных средств через онлайн-банкинг и просит вернуть ему средства.
- Сотрудник злоупотребляет корпоративной программой лояльности. Если не отслеживать её применение, то факт злоупотребления невозможно доказать и он будет находиться вне поля зрения.
Основной метод защиты — ведение журналов событий (логирование). Важно выделить те операции, для которых логирование критично. Для них нужно делать подробные логи и хранить их достаточно долгое время в надежном месте. При этом, запись журнала должна быть понятной, а ее интерпретация — однозначной.
Другие механизмы защиты: цифровые подписи, аудит действий пользователей, надежные механизмы аутентификации.
Information Disclosure (Разглашение информации)

Раскрытие информации — это утечка конфиденциальных данных из-за недостаточной защиты системы. Это может произойти в результате слабых механизмов контроля доступа, утечек через логи или случайного раскрытия информации в коде.
К чувствительной информации можно отнести:
- персональные данные клиентов и сотрудников компании
- интеллектуальную собственность, коммерческую информацию
- Учётные данные от внутренних систем, API-ключи от сторонних приложений.
Примеры угроз:
- Отсутствие разделения доступа внутри компании, в следствие чего любой сотрудник имеет возможность выгрузить произвольный документ
- В коде мобильного приложении хранятся ключи от внешних API. Если злоумышленник декомпилирует приложение, то он сможет воспользоваться ими или продать в даркнете.
Методы защиты: Шифрование данных при хранении и передаче, строгий контроль доступа, мониторинг возможных утечек информации.
Denial of Service (Отказ в обслуживании)

Denial of Service — это угроза при которой система становится недоступной для всех или части пользователей. DoS-атаки представляют серьёзную проблему для организаций, зависящих от бесперебойного функционирования онлайн-сервисов.
Примеры атак:
- DDoS-атака, перегружающая сервер тысячами запросов каждую секунду, что приводит к его недоступности. Это может быть L3 атаки на сетевом уровне, или на L7 — как правило через HTTP. Такие атаки просты с технической точки зрения, но их достаточно тяжело отражать и они требуют значительных ресурсов от атакующего.
- DoS через уязвимости в приложениях. Существует виды уязвимостей, при которых «уронить» сервис можно, отправив всего один или несколько запросов. Например, zip-бомба — архив, при распаковке которого система затратит все доступные ресурсы и перестанет работать.
- Небезопасная логика приложения. Например, после определенного количества неудачных попыток входа аккаунт пользователя блокируется. Тогда злоумышленник может блокировать аккаунты и легитимные клиенты не смогут воспользоваться сервисом.
Методы защиты: Использование анти-DDoS решений, балансировка нагрузки, ограничение числа запросов (rate limiting), уменьшение поверхности атак
Elevation of Privilege (Повышение привилегий)

Elevation of Privilege — это угроза, при которой злоумышленник получает более высокий уровень доступа, чем ему полагалось. Обычно атакующий стремится получить права администратора, чтобы получить максимальный контроль над системой.
Примеры угроз:
- Злоумышленник может получить права локального администратора, используя уязвимость Active Directory;
- Получив доступ внутри docker-контейнера, атакующий может применять атаку docker escape для получения root-прав в виртуальной машине;
Методы защиты: Принцип наименьших привилегий, регулярное обновление ПО, сегментация сети, строгая политика контроля доступа.
Как применять STRIDE на практике
- Для начала нужно перечислить, какие компоненты есть в вашей системе. Определите их верхнеуровнево, не углубляясь в каждую подсистему детально. Если компонент большой и комплексный, то рассматривайте его как отдельную систему и отдельно создайте детальную модель угроз этой подсистемы позже.
- Определите, какие данные хранятся и обрабатываются в каждом компоненте. Обозначьте, как компоненты обмениваются друг с другом этими данными. В этом может помочь составление Data Flow Diagram — граф потоков данных.
- Можно приступать к идентификации угроз. Угрозы нужно искать для каждого компонента системы. Не пытайтесь охватить всё сразу, для начала выберете один компонент.
Теперь нужно представить, как угрозы из категорий STRIDE могут быть реализованы для исследуемого компонента. Оцените, какие данные хранятся и обрабатываются, как и откуда они поступают. Учитывайте логику работы компонента и контекст в котором он существует. Задайте вопрос: «Что может пойти не так?» или «Как злоумышленник может реализовать угрозу X», где X — одна из категорий STRIDE.
Вы можете определять угрозы в одиночку, но более эффективно делать это совместно в формате мозгового штурма. Участниками такой сессии могут быть лидеры команд, разработчики, аналитики или любые стейкхолддеры системы. Причём вы, как ведущий, не должны сами проговаривать все возможные угозы. Задавайте наводящие вопросы и мотивируйте команду вовлекаться в этот процесс.
При таком подходе модель угроз будет более точной, так как на систему смотрят с разных точек зрения. - Собрав угрозы, определите, какими методами можно минимизировать их появление. Не всегда возможно устранить угрозу полностью, поэтому придумайте несколько способов нейтрализации риска. Также обозначьте, какими методами можно проверить — действительно ли угроза будет нейтрализована при реализации мер защиты.
- Далее нужно проделать те же действия для всех компонентов системы. Лучше всего будет внедрить моделирование угроз как процесс. Например, каждую неделю команда собирается и обсуждает угрозы согласно намеченному плану. Этот процесс хорошо сочетается с agile практиками. Также нужно просматривать и корректировать уже существующие угрозы: при обновлении системы или по заданному интервалу (например, 6 месяцев).
Ограничения и недостатки STRIDE
Несмотря на свою эффективность, STRIDE имеет ряд ограничений:
- Фокус только на технических угрозах. Методология не учитывает социальную инженерию и организационные риски, такие как инсайдерские угрозы.
- Не оценивает вероятность угроз. STRIDE помогает идентифицировать угрозы, но не даёт количественной оценки их вероятности или потенциального ущерба. Для этого рекомендуется использовать такие методики, как CVSS или DREAD.
- Мышление в рамках заданных категорий. Список STRIDE охватывает не все типы реальных угроз. И некоторые угрозы можно отнести к какой-либо категории с большой натяжкой. Например, вы используете сторонний сервис по отправке СМС клиентам. И существует риск того, что злоумышленник будет запрашивать слишком большое количество СМС и компания будет терпеть прямые финансовые потери. При этом эту угрозу сложно напрямую отнести к какой-либо категории STRIDE.
Можно рекомендовать не ограничиваться одним STRIDE и включать другие методологии, такие как OWASP Top 10 или раздел угроз БДУ ФСТЭК, а также пользоваться интуицией и здравым смыслом.
Мы разрабатываем продукт для моделирования угроз, в который входит и методология STRIDE. Мы помогаем ускорить процесс, сделав его удобным и простым.
Качественная модель угроз помогает сделать продукт безопаснее и обеспечивает соответствие государственным стандартам
Заключение
Методология STRIDE является мощным инструментом для моделирования угроз, она помогает выявлять потенциальные векторы атак и разрабатывать эффективные механизмы защиты. Одним из ключевых преимуществ является структурированный подход, позволяющий выстроить систему анализа угроз.
Однако её следует использовать в сочетании с другими методами анализа рисков для получения более полного представления о безопасности системы. Применение STRIDE способствует снижению рисков и повышению защищенности приложений, но важно учитывать ограничения и адаптировать под конкретные бизнес-задачи.