В прошлом году мы выпустили Nemesida WAF Free — динамический модуль для NGINX, блокирующий атаки на веб-приложения. В отличие от коммерческой версии, основанной на работе машинного обучения, бесплатная версия анализирует запросы только сигнатурным методом.
Особенности релиза Nemesida WAF 4.0.129
До текущего релиза динамический модуль Nemesida WAF поддерживал только Nginx Stable 1.12, 1.14 и 1.16. В новом релизе добавлена поддержка Nginx Mainline, начиная с 1.17, и Nginx Plus, начиная с 1.15.10 (R18).
Зачем делать еще один WAF?
NAXSI и mod_security, наверное, самые популярные бесплатные модули WAF, причем mod_security активно продвигается силами Nginx, хотя, изначально, использовался только в Apache2. Оба решения бесплатные, имеют открытый исходный код и множество пользователей во всем мире. Для mod_security доступен бесплатный и коммерческий, за $500 в год, наборы сигнатур, для NAXSI — бесплатный набор сигнатур «из коробки», также можно найти дополнительные наборы правил, такие как doxsi.
В этом году мы провели сравнение работы NAXSI и Nemesida WAF Free. Если коротко о результатах:
- NAXSI не выполняет двойной URL-decode в cookie
- NAXSI очень долго настраивать — по умолчанию дефолтные настройки правил будут блокировать большую часть обращений при работе с веб-приложением (авторизацию, редактирование профиля или материала, участие в опросах и т.д.) и необходимо генерировать списки исключений, что плохо сказывается на безопасности. Nemesida WAF Free с настройками по умолчанию в процессе работы с сайтом не выполнила ни одного ложного срабатывания.
- количество пропусков атак у NAXSI в разы выше и т.д.
Несмотря на недостатки, NAXSI и mod_security имеют, как минимум, два преимущества — открытый исходный код и большое количество пользователей. Мы поддерживаем идею раскрытия исходного кода, но пока не можем этого сделать из-за возможных проблем с «пиратством» коммерческой версии, но чтобы компенсировать этот недостаток — полностью раскрываем содержимое набора сигнатур. Мы ценим конфиденциальность и предлагаем в этом убедиться самостоятельно с помощью прокси-сервера.
Особенность Nemesida WAF Free:
- качественная база сигнатур с минимальным количеством False Positive и False Negative.
- установка и обновление из репозитория (это быстро и удобно);
- простые и понятные события об инцидентах, а не «каша», как у NAXSI;
- полностью бесплатный, не имеет ограничений по количеству трафика, виртуальных хостов и т.д.
В заключении приведу несколько запросов для оценки работы WAF (рекомендуется использовать в каждой из зон: URL, ARGS, Headers & Body):
')) un","ion se","lect 1,2,3,4,5,6,7,8,9,0,11#"]
')) union/**/select/**/1,/**/2,/**/3,/**/4,/**/5,/**/6,/**/7,/**/8,/**/9,/**/'some_text',/**/11#"]
union(select(1),2,3,4,5,6,7,8,9,0x70656e746573746974,11)#"]
')) union+/*!select*/ (1),(2),(3),(4),(5),(6),(7),(8),(9),(0x70656e746573746974),(11)#"]
')) /*!u%6eion*/ /*!se%6cect*/ (1),(2),(3),(4),(5),(6),(7),(8),(9.),(0x70656e746573746974),(11)#"]
')) %2f**%2funion%2f**%2fselect (1),(2),(3),(4),(5),(6),(7),(8),(9),(0x70656e746573746974),(11)#"]
%5B%221807182982%27%29%29%20uni%22%2C%22on
%20sel%22%2C%22ect%201%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C%2some_text%27%2C11%23%22%5D
cat /et?/pa?swd
cat /et'c/pa'ss'wd
cat /et*/pa**wd
e'c'ho 'swd test pentest' |awk '{print "cat /etc/pas"$1}' |bas'h
c\a\t \/\e\t\c/\p\a\s\sw\d
cat$u+/etc$u/passwd$u
<svg/onload=alert()//
Если запросы не будут заблокированы — то, скорее всего, WAF пропустит и реальную атаку. Перед использованием примеров убедитесь, что WAF не блокирует легитимные запросы.