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

Виртуальные патчи

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

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

Если выбраны типы атак, то запрос будет заблокирован только в том случае, если WAF‑нода обнаружит в соответствующем параметре атаку одного из перечисленных типов.

Если выбран параметр Все запросы, то запрос будет заблокирован, если в нем присутствует выбранный параметр, даже если в нем не обнаружен вектор атаки.

Создание и применение правила

Вы можете создать и применить правило как в секции События в Консоли управления, так и в секции Правила:

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

    Чтобы завершить создание правила, достаточно настроить тип действия правила и убедиться, что все части правила описаны корректно.

  • В секции Правила все части правила необходимо заполнить вручную.

Пример — блокировка SQLi-атаки в параметре URL id

Если выполняются следующие условия:

  • приложение доступно на домене example.com;

  • в приложении есть SQL‑инъекция в параметре id;

  • WAF‑нода работает в режиме мониторинга;

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

Тогда для создания виртуального патча:

  1. Зайдите во вкладку Правила;

  2. Найдите ветку example.com/**/*.* и нажмите Добавить правило;

  3. Выберите Создать виртуальный патч;

  4. Выберите тип атаки SQLi;

  5. Выберите параметр QUERY и введите его значение id после в этой части запроса;

  6. Нажмите Создать.

Виртуальный патч для конкретного типа запроса

Пример - блокировать все запросы с параметром URL refresh

Если выполняются следующие условия

  • приложение доступно на домене example.com;

  • приложение падает при передаче параметра URL refresh;

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

То для создания виртуального патча

  1. Зайдите во вкладку Правила;

  2. Найдите ветку example.com/**/*.* и нажмите Добавить правило;

  3. Выберите Создать виртуальный патч;

  4. Выберите Все запросы;

  5. Выберите параметр QUERY и введите его значение refresh после в этой части запроса;

  6. Нажмите Создать.

Виртуальный патч для любого типа запроса

Запрос к API на создание правила

Чтобы создать виртуальный патч, вы можете отправить запрос к Вебмониторэкс API напрямую, вместо использования интерфейса Консоли управления. Примеры запросов приведены ниже.

Создание виртуального патча для блокировки всех запросов к /my/api/*

curl -v -X POST "https://api.wallarm.ru/v1/objects/hint/create" -H "accept: application/json" -H "Content-Type: application/json" -H "X-WallarmApi-Token: {ВАШ API ТОКЕН}" -d "{ \"clientid\": YOUR_CLIENT_ID, \"type\": \"vpatch\", \"action\": [ {\"type\":\"equal\",\"value\":\"my\",\"point\":[\"path\",0]}, {\"type\":\"equal\",\"value\":\"api\",\"point\":[\"path\",1]}], \"validated\": false, \"point\": [ [ \"header\", \"HOST\" ] ], \"attack_type\": \"any\"}"

Создание виртуального патча для блокировки всех запросов к /my/api/* для ID отдельного приложения

ID приложения указывается в параметре action.point[instance].value.

curl -v -X POST "https://api.wallarm.ru/v1/objects/hint/create" -H "accept: application/json" -H "Content-Type: application/json" -H "X-WallarmApi-Token: {ВАШ API ТОКЕН}" -d "{\"type\":\"vpatch\",\"action\":[{\"point\":[\"instance\"],\"type\":\"equal\",\"value\":\"-1\"},{\"point\":[\"path\",0],\"type\":\"equal\",\"value\":\"my\"},{\"point\":[\"path\",1],\"type\":\"equal\",\"value\":\"api\"}],\"clientid\":YOUR_CLIENT_ID,\"validated\":false,\"point\":[[\"header\",\"HOST\"]],\"attack_type\":\"any\"}"