Виртуальные патчи¶
Виртуальный патч позволяет заблокировать вредоносные запросы даже при работе в режиме мониторинга, мягкой блокировки или когда в запросе не обнаружен какой-либо из известных векторов атак. Исключение — запросы, отправленные с IP‑адресов из белого списка.
Виртуальные патчи особенно полезны, когда нет возможности быстро исправить критическую уязвимость в коде или установить необходимые обновления безопасности.
Если выбраны типы атак, то запрос будет заблокирован только в том случае, если WAF‑нода обнаружит в соответствующем параметре атаку одного из перечисленных типов.
Если выбран параметр Все запросы, то запрос будет заблокирован, если в нем присутствует выбранный параметр, даже если в нем не обнаружен вектор атаки.
Создание и применение правила¶
Вы можете создать и применить правило как в секции События в Консоли управления, так и в секции Правила:
-
В секции События правила создаются с предзаполненным описанием приложения или части приложения, к которой они применяются. Описание соответствует запросу, рядом с которым вы нажали кнопку Правило при анализе запроса.
Чтобы завершить создание правила, достаточно настроить тип действия правила и убедиться, что все части правила описаны корректно.
-
В секции Правила все части правила необходимо заполнить вручную.
Пример — блокировка SQLi-атаки в параметре URL id
¶
Если выполняются следующие условия:
-
приложение доступно на домене example.com;
-
в приложении есть SQL‑инъекция в параметре id;
-
WAF‑нода работает в режиме мониторинга;
-
необходимо блокировать эту уязвимость.
Тогда для создания виртуального патча:
-
Зайдите во вкладку Правила;
-
Найдите ветку
example.com/**/*.*
и нажмите Добавить правило; -
Выберите Создать виртуальный патч;
-
Выберите тип атаки SQLi;
-
Выберите параметр QUERY и введите его значение
id
после в этой части запроса; -
Нажмите Создать.
Пример - блокировать все запросы с параметром URL refresh
¶
Если выполняются следующие условия
-
приложение доступно на домене example.com;
-
приложение падает при передаче параметра URL
refresh
; -
необходимо блокировать эту уязвимость.
То для создания виртуального патча
-
Зайдите во вкладку Правила;
-
Найдите ветку
example.com/**/*.*
и нажмите Добавить правило; -
Выберите Создать виртуальный патч;
-
Выберите Все запросы;
-
Выберите параметр QUERY и введите его значение
refresh
после в этой части запроса; -
Нажмите Создать.
Запрос к 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\"}"