Перейти к содержанию

Обнаружение уязвимостей

Что такое уязвимость?

Уязвимость — ошибка, допущенная при проектировании, разработке или внедрении вашего веб‑приложения, которая может привести к реализации риска информационной безопасности. К таким рискам относятся:

  • Несанкционированный доступ к данным, например: чтение или модификация данных пользователей

  • Отказ в обслуживании

  • Нарушение целостности данных и другие

Методы обнаружения уязвимостей

Для поиска уязвимостей Валарм WAF отправляет на адрес защищаемого приложения запросы с атаками и анализирует ответы на запросы. Если в ответе на запрос есть признаки уязвимости, Валарм WAF записывает открытую уязвимость.

Например: если ответ на запрос на чтение файла /etc/passwd включает содержимое /etc/passwd, защищаемое приложение считается уязвимым для атак типа Path Traversal и Валарм WAF записывает соответствующую уязвимость в приложении.

Валарм WAF использует следующие методы для отправки на адреса защищаемых приложений запросов с атаками:

  • Пассивное детектирование: уязвимость обнаруживается в ходе реальной атаки.

  • Перепроверка атак: модуль Активной проверки атак автоматически воспроизводит атаки из реального трафика, обработанного WAF‑нодой, и ищет уязвимости в соответствующих частях приложения. По умолчанию этот метод выключен.

  • Сканер уязвимостей: все элементы сетевого периметра проверяются на наличие типовых уязвимостей.

Пассивное детектирование

При пассивном детектировании уязвимость обнаруживается в ходе реальной атаки. Если в ходе атаки удалось проэксплуатировать уязвимость приложения, система Валарм WAF записывает инцидент безопасности и проэксплуатированную уязвимость.

Пассивное детектирование уязвимостей работает по умолчанию.

Перепроверка атак

Как работает

При активной проверке атак генерируется набор тестовых запросов с разными векторами атак, направленными на один адрес приложения. Каждый ответ приложения на запрос анализируется на наличие признаков активной уязвимостей:

  • Если в ответе нет признаков уязвимостей, которые могут быть проэксплуатированы отправленными векторами атак, модуль считает приложение не уязвимым для этих векторов.

  • Если в ответе есть признаки уязвимостей, которые могут быть проэксплуатированы отправленными векторами атак, модуль регистрирует активные уязвимости и инцидент безопасности.

Список уязвимостей, которые может обнаружить модуль

Модуль активной проверки атак использует следующий механизм для проверки приложений и API на наличие активных уязвимостей:

  1. Для каждый группы вредоносных запросов (атаки), Валарм WAF определяет атакуемый элемент запроса (например: URL, объект JSON, поле XML) и тип уязвимости, которую злоумышленник пытался эксплуатировать (например: SQLi, RCE, XSS). Например, следующий GET-запрос имеет характеристики:

    https://example.com/login?token=IyEvYmluL3NoCg&user=UNION SELECT username, password
    
    • Атакуемый URL: https://example.com/login.
    • Тип отправленной атаки: SQLi. Тип определен на основе вектора атаки UNION SELECT username, password.
    • Атакуемый GET-параметр: user.
    • Дополнительная информация, отправленная для авторизации запроса: token=IyEvYmluL3NoCg.
  2. На основе определенных данных, модуль активной проверки атак генерирует набор из 100-150 тестовых запросов с разными векторами атаки одного типа (SQLi) и с одинаковым адресом, на который запрос был отправлен изначально. Например:

    https://example.com/login?token=IyEvYmluL3NoCg&user=1')+WAITFOR+DELAY+'0 indexpt'+AND+('wlrm'='wlrm
    https://example.com/login?token=IyEvYmluL3NoCg&user=1+AND+SLEEP(10)--+wlrm
    https://example.com/login?token=IyEvYmluL3NoCg&user=1);SELECT+PG_SLEEP(10)--
    https://example.com/login?token=IyEvYmluL3NoCg&user=1'+OR+SLEEP(10)+AND+'wlrm'='wlrm
    https://example.com/login?token=IyEvYmluL3NoCg&user=1+AND+1=(SELECT+1+FROM+PG_SLEEP(10))
    https://example.com/login?token=IyEvYmluL3NoCg&user=%23'%23\x22%0a-sleep(10)%23
    https://example.com/login?token=IyEvYmluL3NoCg&user=1';+WAITFOR+DELAY+'0code:10'--
    https://example.com/login?token=IyEvYmluL3NoCg&user=1%27%29+OR+SLEEP%280%29+AND+%28%27wlrm%27%3D%27wlrm
    https://example.com/login?token=IyEvYmluL3NoCg&user=SLEEP(10)/*'XOR(SLEEP(10))OR'|\x22XOR(SLEEP(10))OR\x22*/
    
  3. Модуль активной проверки атак отправляет сгенерированные запросы приложению и определяет уязвимость приложения по указанному адресу к отправленному типу атаки. Если приложение уязвимо, модуль регистрирует соответствующее событие с типом инцидент.

    При этом запросы не должны проверяться WAF-нодой на наличие атак, для этого необходимо добавить IP-адреса Сканера Валарм в белый список.

    Значение HTTPS-заголовка User-Agent в запросах

    Заголовок User-Agent в запросах модуля активной проверки атак имеет значение Wallarm attack-rechecker (v1.x).

  4. Обнаруженные инциденты безопасности отображаются в Консоли управления Валарм. Чтобы отправить информацию об инцидентах вашей команде, вы можете настроить интеграции со сторонними приложениями и Триггеры.

Потенциальные риски использования модуля активной проверки атак

  • Легитимные запросы, распознанные WAF-нодой как атака (ложные срабатывания), также воспроизводятся модулем активной проверки атак. Если запросы меняют поведение приложения и в них переданы авторизационные данные, модуль активной проверки атак может выполнить нежелательные операции с приложением. Например: при активной проверке авторизованного запроса для создания нового объекта в приложении, модуль может создать набор нежелательных объектов в приложении.

    Чтобы минимизировать описанный риск, модуль активной проверки атак автоматически вырезает следующие HTTP-заголовки из запросов:

    • Cookie
    • Authorization: Basic
    • Viewstate
  • Если в приложении используется нестандартный способ авторизации запросов или авторизация запросов не требуется, модуль активной проверки атак может воспроизвести любой запрос из трафика 100 и более раз и вызвать непредвиденное поведение системы. Например: повторить 100 и более транзакций или заказов. Чтобы минимизировать описанный риск, мы рекомендуем использовать тестовую или staging-среду для активной проверки атак и маскировать нестандартные параметры авторизации.

Настройка

По умолчанию модуль активной проверки атак выключен. Для корректной настройки модуля следуйте рекомендациям по управлению активной проверкой атак.

Сканер уязвимостей

Как работает

Сканер уязвимостей выполняет проверку всех элементов сетевого периметра на наличие типовых уязвимостей. Для этого сканер отправляет запросы на адреса приложений с фиксированного списка IP‑адресов и с заголовком X-Wallarm-Scanner-Info.

Настройка

  • Включение / отключение сканера выполняется в Консоли управления Валарм → секция Сканер. По умолчанию модуль включен.

  • Настройка списка уязвимостей, которые может обнаруживать сканер, выполняется в Консоли управления Валарм → секция Сканер. По умолчанию включено обнаружение всех уязвимостей из списка.

  • Установка ограничения на количество запросов от сканера выполняется в Консоли управления Валарм → секция Сканер.

  • Если вы используете дополнительные средства (программные или аппаратные) для автоматической фильтрации и блокировки трафика, необходимо добавить IP‑адреса Сканера Валарм в белый список соответствующего средства фильтрации. Это позволит компонентам Валарм беспрепятственно проверять ваши ресурсы на наличие уязвимостей.

    В остальных случаях не нужно вручную добавлять IP-адреса Сканера в белый список, так как для WAF-ноды версии 3.0 и выше они добавляются в белый список автоматически.

Ложные срабатывания

Ложное срабатывание — обнаружение признаков атаки в легитимном запросе или определение легитимной сущности как уязвимости (подробнее о ложных срабатываниях на атаки →).

Ложные срабатывания на уязвимости происходят из‑за особенностей защищаемых приложений. Один ответ на запрос может указывать на открытую уязвимость в одном защищаемом приложении и быть ожидаемым поведением в другом защищаемом приложении.

При обнаружении ложного срабатывания на уязвимость, вы можете самостоятельно добавить к уязвимости соответствующую отметку в Консоли управления Валарм. Уязвимость, отмеченная как ложное срабатывание, будет переведена в соответствующий статус и не будет перепроверяться. Подробнее об управлении ложными срабатываниями через Консоль управления Валарм →

Если обнаруженная уязвимость действительно существует в защищаемом приложении, но не может быть исправлена, рекомендуем настроить правило Применить виртуальный патч. Правило позволит блокировать атаки, направленные на обнаруженный тип уязвимости, и исключит риск инцидента.

Управление обнаруженными уязвимостями

Все обнаруженные уязвимости отображаются в Консоли управления Валарм → секция Уязвимости. Вы можете управлять уязвимостями через интерфейс следующим образом:

  • Просматривать и анализировать уязвимости

  • Запускать перепроверку статуса уязвимости: открыта или исправлена на стороне приложения

  • Самостоятельно закрывать уязвимости или отмечать их как ложное срабатывание

Более подробная информация об управлении уязвимостями приведена в инструкции по работе с уязвимостиями.

Секция уязвимостей