Уязвимости, атаки и модели угроз
Как эта тема связана с предыдущей статьей
В статье
«Ландшафт угроз и базовые принципы ИБ» мы разобрали, кто атакует, что защищаем, и почему защита строится вокруг рисков, многоуровневости и принципа наименьших привилегий.
Теперь сфокусируемся на трех практических вопросах:
где именно возникают уязвимости
как уязвимости превращаются в атаки
как заранее системно выявлять слабые места с помощью модели угрозУязвимость, эксплойт, атака, инцидент
Чтобы одинаково понимать процесс, разделим термины.
Уязвимость: слабое место в системе, которое можно использовать (например, отсутствие проверки прав доступа).
Эксплойт: способ или код, который использует уязвимость (например, последовательность запросов, позволяющая обойти авторизацию).
Атака: действия нарушителя для достижения цели (например, кража данных через найденный обход авторизации).
Инцидент: событие, которое привело или могло привести к нарушению безопасности (например, реальная утечка клиентской базы).Важно: уязвимость может существовать, но атаки может не быть, если нет доступа, мотивации или подходящих условий. И наоборот, атака может быть успешной даже без «классической» уязвимости, например через социальную инженерию.
Откуда берутся уязвимости
Уязвимости появляются не только из-за «ошибок программистов». Чаще всего причины системные.
Основные источники
ошибки проектирования: небезопасная архитектура, неверные допущения о доверии
ошибки реализации: баги в коде и логике
уязвимые зависимости: библиотеки и компоненты с известными проблемами
неверная конфигурация: открытые доступы, дефолтные пароли, лишние права
ошибки процессов: отсутствие ревью, тестирования, управления изменениями
человеческий фактор: фишинг, повторное использование паролей, игнорирование процедурКлассификация уязвимостей
Для веб-приложений и API полезно ориентироваться на
OWASP Top 10:
OWASP Top 10.
Примеры категорий (упрощенно):
сломанная авторизация: доступ к чужим данным
инъекции: выполнение непредусмотренных команд или запросов
утечки данных: отсутствие шифрования, неправильные права
уязвимости конфигурации: открытые панели администрирования
уязвимые компоненты: использование библиотек с известными CVEКак уязвимости находят и описывают
Идентификаторы CVE и базы уязвимостей
Во многих случаях уязвимость получает идентификатор
CVE (Common Vulnerabilities and Exposures). Это удобный способ ссылаться на проблему однозначно.
Полезные источники:
CVE Program
NIST National Vulnerability DatabaseОценка критичности: CVSS
Часто уязвимости сопровождаются оценкой
CVSS (Common Vulnerability Scoring System), которая помогает приоритизировать исправления.
Важная оговорка: высокий балл CVSS не всегда означает высокий риск именно для вас. Риск зависит от контекста: есть ли уязвимый компонент у вас, доступен ли он извне, какие данные затрагиваются, какие есть компенсирующие меры.
Как уязвимость превращается в атаку
Переход от «слабого места» к ущербу обычно проходит через цепочку шагов.
!Иллюстрация показывает, как уязвимость через вектор и эксплойт приводит к последствиям
Вектор атаки
Вектор атаки — путь, по которому атакующий добирается до уязвимости.
Типовые векторы:
интернет-доступные сервисы и API
фишинг через почту и мессенджеры
удаленный доступ (VPN, RDP, SSH)
цепочка поставок (компоненты, обновления, подрядчики)
физический доступ к устройствамУсловия эксплуатации
Даже при наличии уязвимости атакующему часто нужны условия:
сетевой доступ к компоненту
учетная запись определенного уровня
знание внутренней структуры (эндпоинты, форматы)
возможность обойти мониторингЧасть этих условий снижается многоуровневой защитой: сегментацией, принципом наименьших привилегий, MFA, ограничением админ-панелей.
Zero-day и n-day
Zero-day: уязвимость, для которой нет общедоступного патча или она неизвестна защитникам.
n-day: уязвимость уже известна и обычно есть обновление, но система не пропатчена.На практике многие массовые инциденты связаны именно с n-day: исправление есть, но не установлено.
Риск как связующее звено между уязвимостями и мерами
Риск удобнее всего объяснять как сочетание вероятности и ущерба.
Часто используют простую модель:
Где:
— итоговый риск (насколько проблема важна)
— вероятность (насколько реально, что уязвимость будет использована именно у вас)
— последствия (что вы потеряете при успешной атаке)Это не «точная математика», а способ структурировать обсуждение и приоритизацию. Две одинаковые уязвимости по CVE могут иметь разный риск в разных системах.
Модель угроз: зачем и когда нужна
Модель угроз — это структурированный способ заранее ответить на вопросы:
какие активы и сценарии использования нужно защитить
кто может атаковать и какими путями
какие угрозы реалистичны в рамках архитектуры
какие меры снизят риск до приемлемого уровняМодель угроз особенно полезна:
на этапе проектирования новой системы
при существенных изменениях архитектуры (новый сервис, внешняя интеграция)
при подключении подрядчиков и поставщиков
после серьезного инцидента, чтобы закрыть системные причиныБазовый процесс моделирования угроз
Процесс можно сделать легким и регулярным, без «больших документов».
Определить границы
- что входит в систему, а что считается внешним
Составить инвентаризацию активов
- данные, учетные записи, ключи, критичные функции
Нарисовать поток данных
- кто кому и какие данные передает, где хранятся, где шифруются
Определить границы доверия
- где меняется уровень доверия, например между интернетом и внутренней сетью
Выявить угрозы и сценарии атак
- «что может пойти не так» на каждом шаге потока
Оценить риск и выбрать контрмеры
- что исправляем сразу, что откладываем, что принимаем
Зафиксировать решения и допущения
- что считаем допустимым риском и почему
STRIDE как удобная шпаргалка
Один из распространенных подходов к перечислению угроз —
STRIDE от Microsoft:
Spoofing: подмена личности
Tampering: подмена данных
Repudiation: отказ от совершенных действий
Information Disclosure: раскрытие информации
Denial of Service: отказ в обслуживании
Elevation of Privilege: повышение привилегийИсточник: Microsoft STRIDE threat model).
STRIDE удобно использовать как чек-лист: пройтись по компонентам и спросить, возможен ли каждый тип угроз.
Пример: мини-модель угроз для веб-сервиса
Представим сервис: пользователь заходит в личный кабинет, сервис хранит профиль и историю заказов, есть админ-панель.
Активы
персональные данные профиля
учетные записи пользователей и администраторов
база заказов
токены сессий и API-ключиТиповые угрозы (по смыслу STRIDE)
подмена личности: кража сессии, фишинг, подбор пароля
раскрытие информации: неправильные права доступа в API, утечка резервных копий
подмена данных: изменение адреса доставки или статуса заказа
отказ в обслуживании: перегрузка публичных эндпоинтов
повышение привилегий: ошибка в ролях, доступ к админ-функциямКонтрмеры
MFA для админов и сотрудников, защита от подбора паролей
принцип наименьших привилегий и строгие проверки авторизации на уровне API
шифрование данных и секретов, безопасное хранение ключей
журналирование действий и мониторинг аномалий
лимиты запросов и базовая DDoS-защита
регулярные обновления и проверка зависимостейЗдесь видно связь с базовыми принципами из предыдущей статьи: многоуровневая защита и управление рисками превращают модель угроз в конкретный план работ.
Связка «уязвимость → атака → контроль»
| Уязвимость или слабость | Какой атакой обычно пользуются | Что помогает защититься |
|---|---|---|
| слабые пароли, нет MFA | захват аккаунта через утечку или подбор | MFA, политики паролей, защита от перебора |
| ошибка авторизации в API | чтение или изменение чужих данных | проверки прав на каждом запросе, тесты, ревью |
| уязвимая библиотека | удаленное выполнение кода, утечки | обновления, SCA-сканирование зависимостей |
| публичное хранилище в облаке | скачивание базы или бэкапов | безопасная конфигурация, IAM, аудит |
| нет сегментации сети | боковое перемещение после проникновения | сегментация, ограничение east-west трафика |
Итоги
Уязвимость — слабое место, эксплойт — способ его использовать, атака — действия для достижения цели, инцидент — факт или риск нарушения безопасности.
Важен контекст: критичность уязвимости по CVSS не равна риску для конкретной организации.
Модель угроз позволяет заранее увидеть реалистичные сценарии атак и привязать их к мерам защиты.
Практичный подход: регулярно обновлять модель угроз при изменениях системы и использовать ее как основу для приоритизации работ по ИБ.