Сравнение WAF: NAXSI vs Nemesida WAF Free

Если у Вас урезанный бюджет, либо Вы сомневаетесь в выборе WAF для Ваших веб-сервисов, то компания Pentestit приготовила для Вас материал по обзору 2-х бесплатных WAF.

Сегодня мы хотим протестировать и сравнить работу двух бесплатных WAF: NAXSI и Nemesida WAF Free.

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

NAXSI расшифровывается как Nginx Anti XSS & SQL Injection. Работает по принципу: всё, что не разрешено — запрещено. Каждый HTTP-запрос (GET|PUT|POST) проверяется на соответствие шаблонам запрещающих правил, заданных по умолчанию в файле naxsi_core.rules. Эти правила охватывают 99% всех возможных вариантов зловредных запросов. Например, по умолчанию запрещены все запросы, в URI которых содержится символ двойной кавычки. Если для нормальной работы приложения такой символ необходим, то вручную нужно внести соответствующие исключения в белый список. Но есть и обратная сторона медали — если разрешающие правила будут проработаны плохо, то NAXSI будет блокировать еще и часть легитимных запросов. Поэтому ответственность за конечный результат разработчики модуля целиком и полностью возлагают на администратора системы. Как и большинство модулей для Nginx, NAXSI из репозитория недоступен, поэтому его придется вручную скачивать и компилировать.

Nemesida WAF Free — бесплатная версия Nemesida WAF, представляющая собой динамический модуль для Nginx и обеспечивающая базовую защиту веб-приложения от атак класса OWASP на основе сигнатурного метода.

Отличительной особенностью Nemesida WAF Free является собственная база сигнатур, выявляющая атаки на веб-приложения при минимальном количестве ложных срабатываний, а также:
— минимальные требования к аппаратным ресурсам;
— обновление из репозитория;
— установка и настройка за несколько минут;
— обработка содержимого всех типов HTTP-запроса;
— простота в обслуживании.

Подготовка

NAXSI

Перед началом тестирования NAXSI необходимо сначала потратить время на создание правил WL (whitelist, белый список) для работы с легитимным трафиком. Для того, чтобы легитимные запросы не блокировались, мы добавили несколько правил в белый список (над правилом указывается паттерн, по которому легитимный запрос был заблокирован).

NAXSI rules:

Сравнение WAF: NAXSI vs Nemesida WAF Free

Коротко о правилах:
Первые 5 правил нам пришлось добавить в белый список только для того, чтобы загрузился сайт. Правила, касающиеся символов () <> , были также добавлены в белый список, так как они используются при составлении контента на сайте (некоторые уточнения можно написать в скобках, а при редактировании текста поста — использовать html-теги). В общем, если надумаете использовать NAXSI — будьте готовы тратить много времени на составлении WL. Кроме этого, с каждым WL увеличивается шанс пропуска атак.

Nemesida WAF Free

После установки Nemesida WAF Free предварительная настройка не потребовалась, ложных срабатываний не обнаружено.

Файл конфигурации Nemesida WAF Rules остался неизменным:

Сравнение WAF: NAXSI vs Nemesida WAF Free

Счет: 0:1

SQLi

NAXSI

Первым пунктом тестирования-сравнения будет проверка правил для блокирования атак SQL injection с учетом белого списка. В ходе тестирования NAXSI был выявлен один неприятный момент — он совершенно не распознает URL encode в параметре cookie, вследствие чего большинство его дефолтных правил оказываются бесполезными, если передавать пейлоад в виде URL encode.

Атака вида [“1807182982’)) uni”,”on sel”,”ect 1,2,3,4,5,6,7,8,9,’0’,11#”] будет заблокирована:

Сравнение WAF: NAXSI vs Nemesida WAF Free

Но если применить URL-encode, то запрос изменится на %5B%221807182982%27%29%29%20uni%22%2C%22on
%20sel%22%2C%22ect%201%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C%2pentestit%27%2C11%23%22%5D
 и не будет заблокирован:

Сравнение WAF: NAXSI vs Nemesida WAF Free

При этом URL encode происходит в BODY/ARGS — NAXSI выполнит предварительное URL-декодирование запроса. Для примера мы попытались проэксплуатировать инъекцию на странице логина, чтобы обойти авторизацию, но, в отличие от предыдущего примера, NAXSI сразу понял наши намерения:

Сравнение WAF: NAXSI vs Nemesida WAF Free

Nemesida WAF Free
Nemesida WAF Free использует двойное декодирование всех зон, поэтому все запросы были заблокированы..

Сравнение WAF: NAXSI vs Nemesida WAF Free

Счет: 0:2

LFI

Далее была протестирована возможность блокировки запросов с атакой типа LFI или Local File Inclusion.

Для примера рассмотрим запрос, в котором попробуем получить доступ к файлу /etc/passwd (RCE). Такой запрос был заблокирован каждым из WAF:

Сравнение WAF: NAXSI vs Nemesida WAF Free

Но расщепление запроса cat /etc/pas?wd не позволит выявить сигнатуру и атака пройдет:

Сравнение WAF: NAXSI vs Nemesida WAF Free

Для таких атаки довольно сложно составить сигнатуры, поскольку существует большая вариация таких запросов. Выявлять такие атаки (их вариации, атаки «нулевого дня» и т.д.) может модуль машинного обучения, доступный в полноценной версии Nemesida WAF.

XSS

Последним этапом сравнительного тестирования будет попытка обхода WAF для эксплуатации XSS уязвимости.

NAXSI

Ранее уже упоминалось, что при создании или редактировании текстового контента на сайте можно использовать скобки или HTML-теги. Необходимость добавления этих символов в белый список для корректного использования сайта повлекла за собой возможность выполнить XSS:

Сравнение WAF: NAXSI vs Nemesida WAF Free

Nemesida WAF Free

Запрос был заблокирован:

Сравнение WAF: NAXSI vs Nemesida WAF Free

Счет: 0:3

Заключение

Функционал NAXSI немного схож с Nemesida WAF Free, но последний гораздо проще устанавливать, обновлять и настраивать. Единственное преимущество NAXSI перед Nemesida WAF Free — полностью открытый исходный код. При этом NAXSI имеет как минимум 2 серьезных недостатка:

  • предустановленные сигнатуры, которые не позволяют работать с веб-приложением, а создание белого списка способствует обходу NAXSI;
  • уязвимости в коде, позволяющие выполнять обход (отсутствие URL декодирования в Cookie и т.д.).

Качественно созданная база сигнатур Nemesida WAF Free (находится в открытом доступе) позволяет в использовать модуль с настройками из коробки без ложных срабатываний. Кроме этого, Nemesida WAF Freе имеет функционал добавления пользовательских правил, просто устанавливается из репозитория и не требует для базовой работы дополнительной настройки. Если вы используете NAXSI — обязательно попробуйте Nemesida WAF Free. Вот как это можно сделать в Debian 9:

1. Подключите репозиторий Nemesida WAF:

2. Подключите репозиторий «nginx» и произведите установку пакетов:

Сравнение WAF: NAXSI vs Nemesida WAF Free

На самом деле в заключении могу сказать, что использование только бесплатной версии в полной мере не убережет Вас от всей массы ухищрений, которыми в настоящее время пользуются злоумышленники и даже автоматизированные системы. Вам придеться ставить и Fail2Ban, тонко настраивать конфигурцию Веб-сервисов типа nginx.conf, .htaccess и еще множесво дополнительных настроек. В полной же версии в отличии от free в Nemesida WAF наряду с модулями защиты от брутфорса присутствует так называемый бучающийся механизм Nemesida AI. Для демонстрации различий предоставим сравнительную таблицу.

Nemesida WAF Free

Бесплатная версия Nemesida WAF представляет собой динамический модуль для ПО «nginx» и обеспечивает базовую защиты веб-приложения от атак класса OWASP на основе сигнатурного метода.

Отличительной особенностью Nemesida WAF Free является собственная база сигнатур, выявляющая атаки на веб-приложения при минимальном количестве ложных срабатываний, а также:
— минимальные требования к аппаратным ресурсам;
— обновление из репозитория;
— установка и настройка за несколько минут;
— простота в обслуживании (создание белых списков для сигнатур, IP-адресов и виртуальных хостов);

Динамический модуль «Nemesida WAF Free» доступен для популярных дистрибутивов (Debian, Ubuntu, CentOS).

Сравнительная таблица особенностей версий Nemesida WAF

ВозможностиПлатнаяБесплатная
Выявление атак сигнатурным методом++
Автоматическая блокировка атакующего по IP-адресу++
Возможность работы в режиме IDS++
Анализ запросов средствами антивирусного ПО+
Выявление атак на основе машинного обучения+
Выявление атак перебора пароля+
Поиск уязвимостей в защищаемых веб-приложениях+
Создание правил виртуального патчинга+
Возможность интеграции с системами класса SIEM+
Вывод информации об атакахВ журнал работы
В личный кабинет
На эл. почту
В журнал работы
Вывод информации об обнаруженных уязвимостяхВ журнал работы
В личный кабинет
Функционал отчета и статистики работы+

Основное ограничение Nemesida WAF Free затрагивает работу подсистемы искусственного интеллекта Nemesida AI, которая позволяет более точно и с минимальным количеством ложных срабатываний выявлять атаки на веб-приложения. Кроме этого, модуль «Nemesida AI» успешно выявляет атаки «нулевого дня». В бесплатной версии функционал искусственного интеллекта не задействован.

Сравнительная таблица особенностей модулей Nemesida WAF

СравненияСигнатурный анализNemesida AI
Количество ложных срабатываний≈ 3%≈ 0.01%
Точность выявления атакNemesida AI на ≈ 30% эффективнее сигнатурного анализа
Выявление аномалий+
Оценка уровня аномалий+
Выявление новых признаков атак+
Выявление атак «нулевого дня»+
Выявление brute-force атак+
Требования к аппаратным ресурсамминимальноеNemesida WAF:
Core i3, 2GB RAM


Nemesida AI MLC:
Core i3, 32GB RAM

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

Tagged with: