Обновления Немезида ВАФ: Websocket, противодействие паразитным ботам и другое | Немезида ВАФ

24.02.2025

С 2017 года мы разрабатываем Немезида ВАФ, в работу которой закладываем современные механизмы защиты веб-приложений и API. В этой заметке мы коротко поделимся результатами улучшений продукта за последние пол года.

Анализ запросов по протоколу Websocket

Websocket — клиент-серверный протокол, позволяющий обмениваться данными поверх протокола TCP в реальном времени. Для работы по протоколу Websocket клиент формирует специальный HTTP-запрос, на который сервер отвечает определенным образом, т.е. происходит переключение с протокола HTTP на Websocket, где взаимодействие происходит в рамках одного соединения, позволяя и клиенту, и серверу отправлять данные в любое время в рамках одного соединения. Такой механизм очень удобен, например, при реализации чат-приложений.

Websocket является популярным протоколом и позволяет проводить различные атаки (SQLi, XSS, RCE, DDoS и т.д.) внутри туннеля. Ранее анализ ограничивался выявлением атак на этапе установки соединения/туннеля — до момента ответа сервера с кодом 101 Switching Protocols об изменении протокола взаимодействия. Начиная с версии 5.1.4724 функционал Немезида ВАФ расширен и позволят анализировать запросы внутри Websocket-туннеля. Для активации функционала потребуется:

  • подключить модуль ngx_http_waf_ws_module.so для анализа содержимого по протоколу Websocket;
  • подключить опцию nwaf_ws_proxy_pass в секции location файла конфигурации виртуального хоста.

Улучшения для персональных правил блокировки

Начиная с версии 5.1.3544 в фильтрующей ноде расширен список поддерживаемых опций для персональных правил блокировки (ERL). Теперь к условиям можно добавить проверку принадлежности IP-адреса источника запроса к спискам выходных нод сети Tor или Proxy/VPN-серверов, а также блокировать запросы, в которых отсутствуют заголовки User-Agent или Referer.

Обновлен функционал выявления атак методом перебор и флуда

Функционал выявления атак методом перебора и флуда долгое время оставался без изменений, но со временем мы поняли, что для некоторых приложений и технологий способ его настройки был недостаточно гибок и требовал доработки. Начиная с версии 6.1.1451 Nemesida AI MLC позволяет использовать дополнительные условия передачи запросов на анализ.

Например, если выбрать для URL-адреса example.com/auth.php зону выявления атаки BODY, то анализ будет проводиться только для зоны BODY.

Пример запроса на API:

# curl http://api.example.com:8080/nw-api/v2/set_mlc_settings --header 'Content-type: application/json' --data '{
  "key": "%Лицензионный ключ%",
  "set": {
    "active": true,
    "brute__bf_detect": [{"url": "example.com/auth.php", "brute": true, "flood": false, "zone": ["body"]}, ...], 
  }
}'

Условия активации механизма анализа можно настроить более гибко — по наличию произвольных значений в зонах BODY или ARGS.

Пример запроса на API:

# curl http://api.example.com:8080/nw-api/v2/set_mlc_settings --header 'Content-type: application/json' --data '{
  "key": "%Лицензионный ключ%",
  "set": {
    "active": true,
    "brute__bf_detect": [{"url": "example.com", "brute": true, "flood": false, "zone": ["body"], "condition": {"args": ["user_login"]}}, ...], 
  }
}'

Таким образом если указать для домена example.com зону выявления атаки BODY, то анализ будет проводиться только для зоны BODY, при этом анализироваться будут только те запросы, в которых значение user_login присутствует в зоне ARGS (например, example.com/?user_login).

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

Противодействие паразитным ботам и веб-скрейпингу

Модуль выявления DDoS L7 в Немезида ВАФ расширился. Теперь наравне с обнаружением паразитных ботов функционал позволяет выявлять и атаки типа веб-скрейпинг (парсинг сайта).

GeoCC: обновленная база определения страны по IP-адресу

В своей работе компоненты Немезида ВАФ используют геолокационную IP-базу, которая входит в состав поставки в виде:

  • GeoCC — Geo County Code, принадлежность IP-адресов к стране;
  • Privacy IP DB — база IP-адресов, которые являются выходными нодами Tor, VPN и Proxy.

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

Недавно мы выпустили более точную GeoCCv2 базу, которая уже доступна компонентам Немезида ВАФ после их обновления. Чем точнее база — тем меньше шансов допустить ошибку при определении страны по IP-адресу.

Оптимизация потребления ресурсов фильтрующей ноды

Основная задача фильтрующей ноды — выявление и блокирование поступающих на веб-сервер паразитных запросов. Для этого они проходят через несколько подсистем анализа: сигнатурный анализ (обязательно), дополнительный анализ машинным обучением (при необходимости), анализ модулем API Firewall (при необходимости) и т.д.

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

Помимо анализа сигнатурным методом на фильтрующей ноде происходит множественная нормализация и декодирование запроса, чтобы исключить попытки обойти механизмы защиты (о техниках обхода мы рассказывали на конференции Positive Hack Days).

При декодировании запроса происходит повторный поиск сигнатур, и если они были обнаружены, то считалось, что в запросе есть аномалия и необходим дополнительный анализ модулем машинного обучения. Например, при обращении по адресу example.com/request/public/sell.php при Base64-декодировании URL-адреса /request/public/sell.php динамический модуль получал строку -'?e, в которой при повторном анализе обнаруживалась сигнатура '. Этого было достаточно для отправки запроса на дополнительный анализ.

Из-за особенности работы модуля машинного обучения при интенсивном трафике такое поведение вызывало повышенное потребление аппаратных ресурсов фильтрующей ноды. Начиная с версии 5.1.3544 фильтрующей ноды этот недостаток был устранен.

Изменения позволили сократить нагрузку на фильтрующую ноду и довести до минимума вероятность избыточной отправки легитимных запросов на дополнительный анализ.

Расследование инцидентов

В последнем обновлении фильтрующей ноды Немезида ВАФ и Nemesida WAF API появилась возможность фиксации всех поступающих на фильтрующую ноду запросов. Такой функционал позволяет ретроспективно расследовать инциденты безопасности в случае необходимости.

Дорожная карта ближайших релизов

Настройка веб-сервера Nginx/Angie на фильтрующей ноде, используя функционал Личного кабинета. В настоящий момент функционал настройки доступен через вызовы API, но в ближайших релизах Личного кабинета настраивать веб-сервер можно будет и через веб-интерфейс.

Следите за новостями в Telegram