Nemesida WAF 2021: защита сайтов и API от хакерских атак
Активное применение WAF началось более 10 лет назад. Пытаясь решить проблему защищенности веб-приложений, администраторы WAF сталкивались с побочными последствиями - большим количеством ложных срабатываний, сложностью настроек и пропусками (хотя о последнем чаще можно было узнать после успешной атаки). Время шло, в арсенале разработчиков появлялись новые инструменты (например, возможность применения машинного обучения), недостатки устранялись, повышалось удобство пользования, но все равно многие не торопятся использовать WAF.
Несмотря на рекомендации лучших практик, есть 2 основных проблемы, по которым использование WAF затрудняется - блокирование легитимных запросов и затраты на обслуживание (установка/настройка/обновление/масштабирование). Ниже расскажу, как Nemesida WAF решает эти проблемы, ровно как и другие: пропуски атак, поиск уязвимостей и блокирование продвинутых ботов.
На старт, внимание, фолс!
Ложные срабатывая - главная причина, почему администраторы отказываются использовать WAF. В попытках найти компромис между ложными срабатываниями (FP) и пропусками атак (FN), разработчики WAF старались более точно описывать правила блокировок или увеличивать порог, необходимый для блокирования запроса, повышая шанс пропустить атаку. Наступило время задействовать машинное обучение для решение этой проблемы.
В 2018, используя различные научные работы и, конечно же, эмпирический путь, нам удалось интегрировать алгоритмы машинного обучения в Nemesida WAF, которые показали высокую точность выявления атак. Вместе с тем мы столкнулись с другой проблемой - анализ запросов с использованием ML кратно повышал требования к аппаратному обеспечению и значительно уступал по времени обработки сигнатурному анализу.
Решением проблемы стал комбинированный анализ - запросы с явными признаками атаки отсекались сразу сигнатурами, а неявными - поступали на анализ в модуль машинного обучения Nemesida AI. Сегодня мы практически не имеем ложных срабатываний, при этом анализ запросов почти не увеличивает время обработки запроса и не требует больших вычислительных мощностей. Для обработки боевого трафика 1200-1500 RPS процессор типа Xeon CPU E3-1245 3.40GHz будет загружен на 30-50%.
В редких случаях возникновения ложных срабатываний их всегда можно экспортировать в один клик, после чего схожие запросы не будут блокироваться и войдут в обучающую выборку модуля машинного обучения. Кроме этого, применение классических алгоритмов машинного обучения позволило нам снизить до минимума требования к аппаратному обеспечению. Таким образом, построение моделей и анализ запросов происходит на стороне клиента, не передавая трафик за периметр его инфраструктуры.
Назойливые хитрые боты
Помимо атак, связанных с попытками поиска и эксплуатаций уязвимостей, боты приносят не меньше проблем. Одни перегружают сервер избытком запросов, другие - сливают бюджет за счет злоупотребления функционалом авторизации или восстановления пароля по СМС. Для блокирования подобных атак в Nemesida WAF используется 3 механизма:
выявление попыток перебора значений (подбор логина/пароля и т.д.)
выявление попыток злоупотребления СМС-функционалом
выявление DDoS Layer 7
Независимо от того, на что направлена атака ботов, Nemesida WAF довольно точно определит ее признаки и заблокирует практически всех участников.
Интеграция с GeoIP-сервисами
Наличие GeoIP-данных источника запроса часто помогает правильно реагировать на сомнительные запросы, поэтому в процессе работы модули Nemesida WAF активно используют такой функционал: библиотеку libmaxminddb0
для получения базовой информации по IP, и онлайн GeoIP-базу для получения расширенной информации (является ли IP-адрес прокси-сервером/TOR, используется ли он мобильными операторами или закреплен за дата-центром, его страну, город, провайдера и т.д). Расширенная информация используется при автоматическом анализе модулями Nemesida WAF, а также при визуализации событий в Личном кабинете.
Демонстрационный стенд Личного кабинета: https://demo.lk.nemesida-waf.com/ (demo@pentestit.ru / pentestit)
Использование функционала CAPTCHA для отмены временной блокировки IP
В Nemesida WAF есть функционал временного блокирования атакующего по IP-адресу, позволяя ограничить доступ к ресурсу. Используя функционал управления Nemesida WAF Management API в сочетании с CAPTCHA, пользователь может снять временный бан, успешно пройдя проверку.
Nemesida WAF Scanner
Использование динамического сканера уязвимостей в составе Nemesida WAF позволяет повысить уровень защищенности веб-приложений - вы можете активировать периодический обход веб-ресурса сканером, а также выполнять проверки уязвимостей "на лету" через заблокированные запросы. В последнем случае, используя Личный кабинет, при клике на кнопке Recheck (R) в строке с заблокированных запросом, сканер попытается проверить наличие уязвимостей в рамках этого запроса собственным набором пейлоадов, после чего сообщит, найдена ли уязвимость или нет.
Продвинутые техники декодирования запросов
Помимо привычного многим UTF-8 Basic Latin существует множество различных кодировок и наборов символов, многие из которых применяют для обхода WAF.
Данные запроса, использующие набор символов, отличный от Basic Latin, как правило, игнорируются сигнатурным анализом, но могут успешно "собираться" на стороне конечного веб-приложения и отрабатывать: всевозможные HTTP Entity Encode, Base64, UTF-8 Halfwidth and Fullwidth Forms, множественные URL Encode и т. д.
Кроме этого, механизмы анализа некоторых WAF могут удалять "плохую последовательность", позволяя выолнять обход. Например, если WAF удаляет последовательность UNION
, используемую при проведении SQLi, атакующий может обойти механизм, используя последовательность uniUNIONon.
Не стоит забывать и про особенности обработки кода браузером. Вероятно, Safari умеет обрабатывать нестандартное представление UTF-16: \u{22}
как "
(\u0022
):
Многие способы обхода WAF основаны на использовании кодировок, отличных от UTF-8 text. Например, последовательность alert()
можно частично или полностью передаться в UTF-8 (\x61\x6c\x65\x72\x74\x28\x29
), UTF-16 (\u0061\u006c\u0065\u0072\u0074\u0028\u002
9) или UTF-32 (u+00000061u+0000006c...
). Также встречаются и смешанные кодировки.
В качестве другого примера я люблю использовать особенность обработки данных Bash-интерпретатором. В случае, когда веб-приложение содержит OS Command Injection, мы можем прочитать содержимое файла, например, /etc/passwd
, выполнив расщепление данных с помощью кавычки: ca't /et'c'/pas's'wd
. Также можно использовать символ ?
, который будет преобразован до нужной буквы: /bi?/ca? /et?/pa??wd
(/bin/cat /etc/passwd).
Перекрыть такие техники без увеличения ложных срабатываний невозможно сигнатурным методом, но модуль машинного обучения вкупе с различными механизмами нормализации выявляет очень точно такие и другие методы обхода.
Вилкой в глаз или WAF baypass?
В начале года команда Vulners выпустила исследование, в котором анализировала различные популярные WAF с помощью байпасера (инструмент, проверяющий устойчивость WAF к пропускам атак и ложным срабатываниям), после чего мы, используя тот же инструмент, проверили его на Nemesida WAF и получили более высокую оценку. Если интересно, со статьей можно ознакомиться по ссылке.
На Github мы опубликовали собственный waf-bypass, с помощью которого можно оценить используемый WAF. Это бесплатный инструмент содержит почти 1500 полезных нагрузок для SQLi, XSS, SSI, SSTI, RCE, LFI/RFI и т.д., написан на Python3 и доступен в виде Docker-образа.
Используя waf-bypass от Nemesida Security Team, вы проверяете WAF, в том числе, на возможность его обхода, используя техники, о которых я писал в предыдущем блоке.
Программа обучения WebSecOps от Pentestit
Для эффективного применения WAF одних технологий недостаточно, в некоторых случаях администратору необходимо понимать архитектуру веб-приложений, угрозы и признаки атаки, поэтому мы разработали программу WebSecOps, программу, направленную на практическую подготовку в области безопасности веб-приложений.
Состав программы:
- Архитектура веб-приложений;
- Разведка и сбор информации;
- Уязвимости веб-приложений: SQLi; NoSQLi; XSS; XXE; RCE; OSCI; SSTI; CSRF и другие;
- Инструменты анализа защищенности веб-приложений;
- Атаки методом перебора; WAF и техники обхода;
- Выявление атак и анализ инцидентов с использованием Nemesida WAF.
На WebSecOps вам предстоит производить поиск и эксплуатацию веб-уязвимостей с использованием специализированного инструментария, узнать архитектуру веб-приложений, научиться предотвращать атаки и анализировать инциденты с использованием WAF, изучить техники обхода. Программа разработана для специалистов в области информационной безопасности, пентестеров, разработчиков, системных администраторов, DevOps-инженеров и всех, кто только планирует погрузиться в мир веб-безопасности. Более подробная информация доступна по ссылке.
Формат поставки и стоимость
Все модули Nemesida WAF представлены в виде установочных дистрибутивов для Ubuntu/Debian/CentOS и разворачиваются в инфраструктуре клиента (on-premises software). Анализ запросов и обучение поведенческих моделей происходит также в инфраструктуре клиента, не передавая запросы за периметр.
Стоимость в 2021 г. коммерческой версии Nemesida WAF начинается от 99.000 р. в год и зависит от используемых опций - наличие модуля машинного обучения, количества используемых экземпляров и поведенческих моделей, сканера уязвимостей. Но если пока не готовы к полноценной версии - можно попробовать бесплатную Nemesida WAF Free, использующую только сигнатурный анализ и содержащую некоторые ограничения.
Свыше 400 клиентов по всему миру используют Nemesida WAF. Множественные механизмы парсинга и нормализации данных позволяют выявлять атаки практически в любом HTTP-трафике: от личных кабинетов и интернет-магазинов до маркетплейсов и API. Nemesida WAF работает "из коробки", базовый запуск для опытных пользователей занимает примерно 15 минут. Заблокированные запросы хранятся в PostgreSQL, позволяя провести интеграцию с SIEM-системами, а отсутствие механизмов изменения запросов позволяет не "ломать" логику веб-приложения. Протестируйте Nemesida WAF бесплатно в течение 2-х недель и узнайте, как часто вас атакуют. Оставайтесь здоровыми и защищенными.