Информационная безопасность

Модели угроз и STRIDE

Цели урока

  • Применять STRIDE для систематического поиска угроз в любой системе
  • Определять и минимизировать attack surface приложения
  • Строить DFD и применять STRIDE per element к каждому компоненту
  • Приоритизировать угрозы с помощью DREAD

2017. WannaCry зашифровал 230 000 серверов в 150 странах за 4 дня. Ущерб - 4 млрд долларов. Использовал уязвимость в SMBv1 - протоколу 30 лет. Знание attack surface не опциональная надстройка - это survival skill.

  • **Microsoft SDL** - обязательный threat modeling перед каждым релизом снизил критические уязвимости на 50% (данные MS Security Response Center)
  • **Equifax 2017** - 147M записей через CVE-2017-5638: STRIDE-анализ выявил бы Elevation + Info Disclosure через незапатченный Apache Struts
  • **SolarWinds 2020** - Spoofing через подписанные обновления: attack surface включал цепочку поставок ПО, которую не рассматривали в threat model
  • **Log4Shell (CVE-2021-44228)** - JNDI-инъекция через поле лога, затронула 93% корпоративных сетей: hidden attack surface в транзитивной зависимости
  • **GitHub DDoS 2018** - 1.3 Тбит/с через memcached amplification: DoS через открытый порт 11211 - минимизация сетевой поверхности закрыла бы вектор

Clifford Stoll и первое задокументированное государственное кибершпионажное дело

1986 год. Администратор Lawrence Berkeley National Laboratory замечает расхождение в 75 центов в биллинговых логах. Начав расследование, Clifford Stoll обнаруживает хакера - немецкого гражданина, работавшего на КГБ, продававшего украденные данные о военных проектах США. Книга «The Cuckoo's Egg» (1988) - первая документация state-sponsored кибератаки. Атакующий использовал классические STRIDE-векторы: Spoofing (чужие учётные данные), Information Disclosure (доступ к секретным данным), Elevation (получение root-привилегий). Современные APT-группы используют те же категории - только инструменты сложнее.

Предварительные знания

  • Что такое информационная безопасность

STRIDE: шесть категорий угроз

1999 год. Два инженера Microsoft - **Loren Kohnfelder** и **Praerit Garg** - задались вопросом: как перестать гадать об угрозах и начать искать их системно? Ответ стал моделью **STRIDE** - шесть категорий, покрывающих все возможные атаки. Без STRIDE охотятся на угрозы наугад. С STRIDE - проверяют чеклист для каждого компонента.

КатегорияНарушает (CIA)Реальная атакаКонтрмера
**Spoofing**AuthenticationSolarWinds 2020: подписанные обновления от имени легитимного вендораMFA, code signing, сертификаты
**Tampering**IntegritySQL injection: атака на Heartland Payment, 130M карт (2008)Подписи, хеширование, parameterized queries
**Repudiation**Non-repudiationТрейдер отрицает несанкционированные транзакцииAudit log, цифровые подписи, HSM
**Info Disclosure**ConfidentialityEquifax 2017: 147M записей через CVE-2017-5638 (Apache Struts)Шифрование, ACL, минимальные права
**DoS**AvailabilityGitHub DDoS 2018: 1.3 Тбит/с через memcached amplificationRate limiting, CDN, anycast
**Elevation**AuthorizationEternalBlue (WannaCry): повышение привилегий через SMBv1RBAC, sandboxing, принцип наименьших привилегий

**STRIDE per Element** - продвинутый подход: для каждого типа компонента проверяются только релевантные категории. **Process** - все 6. **Data Store** - Tampering, Info Disclosure, DoS. **Data Flow** - Tampering, Info Disclosure. **External Entity** - Spoofing, Repudiation. Не каждый компонент уязвим ко всем шести.

STRIDE - **мнемоника для полноты**, не замена экспертизы. Без неё легко пропустить Repudiation (кто проверяет логи?) или Elevation (а если обычный пользователь подменит JWT-роль на admin?). С ней - системная проверка вместо интуитивного «кажется безопасно».

При code review: пройтись по STRIDE для каждого нового endpoint. Может ли кто-то Spoof вызов? Tampering с данными? Это занимает 2 минуты, но находит уязвимости до продакшена.

Злоумышленник отправляет 100 000 запросов в секунду на API-сервер, который падает под нагрузкой. Какая категория STRIDE?

Attack Surface: поверхность атаки

**Attack Surface** - совокупность всех точек, через которые атакующий может воздействовать на систему. Чем больше поверхность - тем больше вероятность найти незащищённую точку. WannaCry использовал SMB - протокол 30-летней давности, открытый на тысячах серверов просто потому что «так сложилось». Знание attack surface - это выживание.

КатегорияПримерыКак уменьшить
**Сетевая**Открытые порты, публичные API, DNSЗакрыть неиспользуемые порты, VPN, firewall rules, network segmentation
**Программная**Endpoints, зависимости, file upload, GraphQL introspectionУбрать неиспользуемые routes, обновлять deps, input validation, disable introspection
**Человеческая**Фишинг, social engineering, слабые пароли, подрядчикиSecurity awareness, MFA, принцип наименьших привилегий, PAM

**Supply chain - скрытая поверхность.** Средний Node.js-проект: 200-400 транзитивных зависимостей. Каждая - потенциальная точка входа. ua-parser-js (78M загрузок/неделю) взломан в 2021: криптомайнер встроен в обновление. event-stream (2M загрузок/день) - скрытый стил Bitcoin-кошельков (2018). log4shell (CVE-2021-44228) - JNDI-инъекция через поле лога, затронуто 93% корпоративных сетей.

**Принцип минимальной поверхности:** каждый endpoint, каждый открытый порт, каждая зависимость - потенциальный вектор. Не используется - убрать. Сервис аутентификации не должен иметь доступ к сервису биллинга без явной необходимости.

В продакшне оставлен debug-endpoint /api/debug/users, показывающий всех пользователей без аутентификации. Что это?

Threat Modeling: процесс

**Threat Modeling** - структурированный поиск угроз **до** продакшена. Инструмент - **DFD (Data Flow Diagram)**: визуализация потоков данных между компонентами. Затем STRIDE к каждому элементу. Microsoft SDL: threat modeling снизил количество критических уязвимостей на 50%. Не потому что сложный процесс, а потому что любая система - это компоненты, связи и данные. DFD делает это видимым.

**Элементы DFD и применимые STRIDE-категории:** - **External Entity** (клиент) - Spoofing, Repudiation - **Process** (Web API) - все 6 категорий STRIDE - **Data Store** (DB) - Tampering, Info Disclosure, DoS - **Data Flow** (HTTPS/SQL) - Tampering, Info Disclosure

После составления списка угроз - **приоритизация**. SQL injection на странице оплаты - критично. Timing attack на странице «О нас» - теоретична. STRIDE находит угрозы, DREAD расставляет приоритеты.

**Когда проводить threat modeling?** В идеале - на этапе проектирования, до кода. Ретроспективный анализ существующей системы тоже ценен. Microsoft рекомендует обновлять threat model при каждом значительном изменении архитектуры.

DFD показывает Data Flow между браузером и API через HTTP (не HTTPS). Какие STRIDE-категории под угрозой?

DREAD: оценка рисков

Threat modeling даёт список угроз. Ресурсы ограничены. **DREAD** - система скоринга для приоритизации: что чинить первым. Пять критериев, каждый от 1 до 10. Субъективность минимальна - команда договаривается по числам, а не по интуиции.

КритерийSQL Injection на /loginXSS в комментариях
**D**amage10 - полный доступ к БД, дамп всех данных6 - кража cookies активного пользователя
**R**eproducibility10 - sqlmap автоматизирует, каждый раз работает8 - нужен активный пользователь на странице
**E**xploitability8 - sqlmap, автоматизированный сканер5 - нужен crafted payload
**A**ffected users10 - все пользователи в БД4 - только кто видит комментарий
**D**iscoverability9 - легко найти Burp Suite / scanner7 - видно в HTML-коде
**DREAD Score****(10+10+8+10+9)/5 = 9.4****(6+8+5+4+7)/5 = 6.0**

**Вывод:** SQL Injection (9.4) - чинить немедленно, до следующего релиза. XSS (6.0) - следующий приоритет. DREAD превращает субъективное «вроде опасно» в числовой рейтинг для команды.

ScoreПриоритетДействие
8.0-10.0КритическийИсправить немедленно, до следующего релиза
5.0-7.9ВысокийЗапланировать на ближайший спринт
2.0-4.9СреднийВключить в бэклог
0.0-1.9НизкийДокументировать, мониторить

**Критика DREAD:** Microsoft отказался от него в 2008 году - Discoverability оценивался субъективно (если уязвимость уже опубликована, discoverability всегда 10). Индустриальный стандарт сегодня: **CVSS v3.1** (NVD, CVE-базы), **Bug Bar** (Microsoft), **Risk Rating Methodology** (OWASP). DREAD - хорош для быстрой внутрикомандной приоритизации.

На практике комбинируют: STRIDE для **поиска** угроз, DREAD/CVSS для **приоритизации**. Threat model без приоритизации - просто список страшилок.

Threat modeling - только для больших компаний. Для стартапа или pet-project это overkill

Даже 30 минут threat modeling для pet-project находит критичные уязвимости: незащищённые endpoints, plain text пароли, отсутствие rate limiting

Ключевые идеи

  • **STRIDE** - 6 категорий угроз (Spoofing, Tampering, Repudiation, Info Disclosure, DoS, Elevation). Системный чеклист вместо интуитивного поиска. WannaCry - Elevation через SMBv1, Equifax - Info Disclosure через незапатченный Struts
  • **Attack Surface** - сетевая + программная + человеческая поверхность. Supply chain - скрытый вектор: Log4Shell затронул 93% корпоративных сетей через транзитивную зависимость
  • **Threat Modeling** - DFD -> STRIDE per element -> приоритизация -> контрмеры. Microsoft SDL: -50% критических уязвимостей. Работает для проектов любого размера
  • **DREAD** - скоринг 1-10 по 5 критериям для приоритизации: SQL injection 9.4 чинится до XSS 6.0. Индустриальный стандарт сегодня - CVSS v3.1
  • **Survival skill, не академия:** 80% критичных уязвимостей находятся за первые 20% времени threat modeling

Связанные темы

Threat modeling - это ЧТО защищать. Следующие темы - КАК:

  • Аутентификация и авторизация — Прямые контрмеры для Spoofing и Elevation of Privilege из STRIDE
  • Что такое информационная безопасность — CIA Triad - основа, на которой строится STRIDE
  • Backend security — Threat modeling для транспортного стека: HTTP/gRPC/WebSocket attack surface

Вопросы для размышления

  • Нарисуйте DFD текущего проекта (даже на бумаге). Сколько элементов? Применили STRIDE хотя бы к одному?
  • Какой элемент attack surface наиболее уязвим: сетевой, программный или человеческий? Почему?
  • Если бы было 2 часа на security review - на какие STRIDE-категории потратить время в первую очередь?

Связанные уроки

  • sec-03 — Аутентификация и авторизация - прямые контрмеры STRIDE Spoofing/Elevation
  • sec-01 — CIA Triad - основа, на которой строится STRIDE
  • bt-28-security — Threat modeling для backend-транспортного стека
  • aie-34-prompt-injection-deep — Prompt injection - Spoofing/Tampering через LLM: та же STRIDE-логика, новый вектор
  • sec-04 — Криптографические контрмеры для угроз из STRIDE
  • bc-39-security-reentrancy — Smart contract vulnerabilities как подмножество STRIDE Elevation/Tampering
  • alg-01-big-o
Модели угроз и STRIDE

0

1

Войти

Масштаб threat modeling масштабируется с проектом. Для стартапа не нужен формальный DFD - достаточно нарисовать архитектуру и пройтись по STRIDE. 80% критичных уязвимостей за первые 20% времени анализа. Маленькие проекты - лёгкая цель именно потому что пренебрегают безопасностью.

Уязвимость позволяет любому читать /logs.txt. Лог содержит email пользователей, но не пароли. Какой примерный DREAD-балл Damage?