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

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

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

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

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

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

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

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

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

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

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

Пассивное обнаружение

Валарм API Security непрерывно анализирует трафик на наличие вредоносных запросов и ответы приложения на вредоносные запросы. Если реальный ответ на вредоносный запрос из реального трафика указывает на наличие уязвимости в приложении, Валарм API Security фиксирует инцидент безопасности и обнаруженную уязвимость.

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

Активная проверка атак

Как работает

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

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

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

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

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

  1. Для каждый группы вредоносных запросов (атаки), Валарм API Security определяет атакуемый элемент запроса (например: 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.
    • Атакуемый параметр URL: 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. Модуль активной проверки атак отправляет сгенерированные запросы приложению и определяет уязвимость приложения по указанному адресу к отправленному типу атаки. Если приложение уязвимо, модуль регистрирует соответствующее событие с типом инцидент.

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

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

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

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

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

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

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

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

Настройка

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

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

Как работает

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

Настройка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Уведомления об уязвимостях

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

Чтобы получать уведомления об уязвимостях, необходимо настроить соответствующие интеграции с системами, в которые необходимо отправлять уведомления. Например: PagerDuty, Opsgenie, Splunk, Slack, Telegram или другими.

Пример уведомления о новой уязвимости в Splunk в формате JSON:

{
    summary:"[Тестовое сообщение] [Wallarm] Обнаружена новая уязвимость",
    description:"Тип события: vuln

                В вашей системе обнаружена новая уязвимость.

                ID: 
                Название: Test
                Домен: example.com
                Путь: 
                Метод: 
                Источник: 
                Параметры: 
                Тип: Info
                Уровень риска: Medium

                Подробнее: https://my.wallarm.com/object/555


                Клиент: TestCompany
                Облако: EU
                ",
    details:{
        client_name:"TestCompany",
        cloud:"EU",
        notification_type:"vuln",
        vuln_link:"https://my.wallarm.com/object/555",
        vuln:{
            domain:"example.com",
            id:null,
            method:null,
            parameter:null,
            path:null,
            title:"Test",
            discovered_by:null,
            threat:"Medium",
            type:"Info"
        }
    }
}