Тест и сравнение эффективности WAF (Web Application Firewall)

Тест и сравнение эффективности WAF (Web Application Firewall)

В статье опубликованы результаты сравнительного теста эффективности Web Application Firewall (WAF), в котором участвовали: Positive Techonologies Application Firewall, Imperva Securesphere Web Application Firewall, SolidWall WAF и Wallarm. В ходе теста проверялись возможности обнаруживать и блокировать атаки из OWASP Top-10 на защищаемое веб-приложение, а также противостоять методам обхода механизмов защиты WAF.

 

 

 

 

 

  1. Введение
  2. Описание методики тестирования WAF  
    1. 2.1. Методология теста WAF
    2. 2.2. Стенд и окружение для тестирования WAF
  3. Типы атак для сравнения эффективности WAF
  4. Результаты теста WAF 
  5. Выводы

 

Введение

На сегодняшний день тема защиты веб-приложений является одной из самых востребованных и популярных. И если раньше выбор решений, позволяющих обеспечить качественную защиту веб-приложений, был сравнительно небольшой, то сейчас на отечественном рынке появилось разнообразие решений как от западных производителей, так и от отечественных. Недавно на Anti-Malware.ru было опубликовано сравнение наиболее популярных на отечественном рынке решений класса Web Application Firewall (WAF) по большому количеству параметров.

Специалисты компании «Информзащита» решили выявить плюсы и минусы наиболее популярных на отечественном рынке решений в части самого главного — их эффективности по обнаружению различных типов атак на веб-приложения. 

В рамках проведения функционального тестирования WAF-средств были рассмотрены продукты следующих производителей:

  • Positive Techonologies Application Firewall — производства компании Positive Technologies.
  • Imperva Securesphere Web Application Firewall — производства компании Imperva Securesphere.
  • SolidWall WAF — производства компании SolidSoft.
  • Wallarm — производства компании Wallarm.

Первые три продукта являются классическими on-premises-решениями, их архитектура и логика работы предполагают обнаружение и предотвращение атак непосредственно тем комплексом программно-технических средств, которые располагаются на территории заказчика.

Wallarm же является гибридным решением: на территории заказчика размещается сенсор (Wallarm Node), который осуществляет блокировку атак на основе решения, принимаемого облачным сервисом Wallarm Cloud.

В данной статье описываются результаты оценки указанных WAF по следующим группам характеристик:

  • Эффективность WAF-средства, определяющая его способность обнаруживать, блокировать и регистрировать атаки из OWASP Top10 на защищаемое веб-приложение.
  • Эффективность WAF к распространенным методикам обхода механизмов защиты WAF.

 

Описание методики сравнительного теста WAF

Методология теста WAF

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

Стенд и окружение для тестирования WAF

Все тестируемые продукты были развернуты в среде виртуализации VMWare ESX версии 6.0. в режиме Reverse Proxy. Для каждой виртуальной машины были выделены следующие ресурсы:

  • CPU — 2
  • Memory — 8 Гб
  • Disk Space — 80 Гб

В качестве тестируемых веб-приложений использовались следующие продукты:

  • bWapp
  • Hackazon

 

Рисунок 1. Общая схема стенда для сравнительного теста WAF

 Общая схема стенда

 

Для реализации этой схемы было разработано программное обеспечение HTTP-proxy, реализованное в качестве прокси-сервера. Оно использовалось в стенде и позволяет провести тестирование всех решений WAF в одинаковых условиях. HTTP-proxy дублирует работу с основным веб-приложением (напрямую, без WAF) на все входные точки в приложение, защищенные различными решениями WAF. Для задания входных точек в приложения через каждый из WAF используется конфигурационный файл. После отправки запросов (на каждый из WAF и на оригинальную точку входа в приложение), прокси-сервер разбирает ответы от WAF и определяет, был ли запрос воспринят как опасный или был корректно обработан веб-приложением без вмешательства решения WAF. Ответ на запрос, переданный на оригинальную точку входа в приложение, возвращается специалисту без модификации и проверок. По результатам проверок HTTP-proxy генерирует сводную таблицу, содержащую наименование каждого тестируемого решения WAF и его реакцию на переданный запрос.

Для обучения всех WAF был разработан скрипт на jmeter ver 3.2, эмулирующий пользовательскую работу с приложением Hackazon (регистрация пользователей, просмотр продуктов, покупка продуктов и т. д.). Данный скрипт был запущен на все WAF с одинаковым профилем.

 

Типы атак для сравнения эффективности WAF

Оценка покрытия WAF-средством множества различных классов атак на веб-приложение отражает способность WAF успешно обнаруживать, блокировать и фиксировать в журнале разнообразные атаки на веб-приложение. При этом тестовое множество данных атак подбирается таким образом, чтобы они покрывали как можно более широкий набор различных классов возможных атак (например, различные виды атак для всех классов угроз по актуальной версии OWASP Top10).

В таблице ниже представлены результаты отображения классификации различных типов атак и основных классов атак из OWASP Top10 от 2013 года (актуальная версия на момент проведения тестирования). Список основных уязвимостей (и соответствующих им атак) по версии OWASP Top10 приведен ниже:

  • A1 Injection;
  • A2 Broken Authentication and Session Management;
  • A3 Cross-Site Scripting (XSS);
  • A4 Insecure Direct Object References;
  • A5 Security Misconfiguration;
  • A6 Sensitive Data Exposure;
  • A7 Missing Function Level Access Control;
  • A8 Cross-Site Request Forgery (CSRF);
  • A9 Using Components with Known Vulnerabilities;
  • A10 Unvalidated Redirects and Forwards.

 

Таблица 1. Сводная таблица по классам атак, используемым в тесте WAF

Класс и подкласс атаки

Виды атак

Комментарии

Протокольные аномалии

Явные нарушения спецификации протокола HTTP

Path-Traversal-уязвимости, связанные с различными видами атак (исполнение кода, кража критичной информации)

 

Использование запрещенных методов запроса

HTTP-Verb-Tampering-атаки

Может потребоваться модель, сопоставляющая различным группам или шаблонам URL-адресов разрешенные методы запроса

Различные нарушения политики безопасности

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

Само по себе не запрещено спецификацией HTTP и не является атакой, но может быть признаком атаки (особенно в случае использования техник защиты от обнаружения)

Структурные аномалии в запросах/ответах

Отсутствие или дублирование параметров запроса

Атаки класса HPP (HTTP Parameter Pollution)

Требуется построение моделей\профилей параметров для установление необходимых\уникальных параметров запроса в каждой группе шаблонов URL-адресов

Нарушение синтаксиса параметров (внедрение интерпретируемых конструкций)

Различные виды инъекций через параметры и заголовки запроса: SQLi-инъекции всех видов, инъекции PHP-кода, команд операционной системы, XML/XPath, LDAP- и SSI-инъекции, OWASP Top10 A1

Поиск характерных конструкций, нарушение синтаксиса параметра или заголовка

Различные виды отраженных и хранимых XSS-атак через параметры и заголовки запроса, OWASP Top10 A3

Поиск характерных конструкций, нарушение синтаксиса параметра или заголовка

Передача небезопасных данных в теле запроса

Различные виды хранимых XSS-атак в теле запроса, OWASP Top10 A3

Поиск в специфических частях HTML

Различные виды инъекций в интерпретаторы: SSRF- и XXE-атаки, OWASP Top10 A1

Поиск в специфических частях XML-данных

Различные атаки класса «отказ в обслуживании» на интерпретаторы (например, XML bomb)

Использование отдельных модулей WAF или скриптоподобных сценариев

Передача исполнимого кода в виде файлов, FileUpload-атаки

Требуется специальный модуль для идентификации типов передаваемых файлов

Передача по небезопасному соединению конфиденциальных данных

Некоторые виды утечек конфиденциальных данных, OWASP Top10 A6

Обнаружение на основе регулярных выражений

Передача доверительной информации, прохождение процедуры аутентификации без использования шифрования, OWASP Top10 A2, A6

Требуются модели, позволяющие идентифицировать передачу доверительной информации или процедуру аутентификации

Поведенческие аномалии в запросах/ответах

Переборные атаки

Подборы паролей или идентификатора пользовательской сессии, OWASP Top10 A2

Обнаружение с помощью оценки числа неудачных запросов за единицу времени

Различные попытки реализации атак «отказ в обслуживании» (Large Chunk Size, Slow HTTP DoS, SSL-Exhaustion)

Сочетание специфичных характеристик запросов и большого объема запросов

Нарушения политик безопасности в части парольных политик и генерации и хранения сессионных токенов

Атаки классов захвата или фиксации сессии (например, Session Fixation, Session ID in URL), OWASP Top10 A2, A5

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

Уязвимости класса использования дефолтных или простых паролей, OWASP Top10 A5

Требуется построение модели, позволяющей выявить процедуру аутентификации, и параметры, содержащие аутентифицирующую информацию, требуются правила для оценки качества используемых паролей

Аномалии в сценариях использования

Нарушение сценариев использования веб-приложения

Различные виды мошеннических атак на логику работы электронных магазинов, платежных сервисов и т. п., OWASP Top10 A4

Требуется построение модели, описывающей сценарии использования веб-приложения в терминах действий и объектов бизнес-логики

Нарушение прав доступа пользователя к ресурсам и объектам веб-приложения

Различные атаки в виде попыток доступа по объектам и функциям по прямым ссылкам, OWASP Top10 A4, A7

Требуется построение модели, описывающей права доступа пользователей (и ролей) к ресурсам веб-приложения. Некоторые виды данных атак также могут обнаруживаться на уровне поиска поведенческих аномалий в запросах\ответах веб-приложения

Отклонение наблюдаемого поведения пользователя от составленного профиля

Атаки класса CSRF, OWASP Top10 A8

 

Атаки, осуществляемые автоматизированными средствами

Обнаруживаются по отклонению поведения от профилей пользователей-людей

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

Обнаруживаются по отклонению поведения от составленного ранее профиля

Аномалии окружения веб-приложения

Использование старых версий ПО и протоколов шифрования

OWASP Top10 A9

Является нарушением политики безопасности, а не атакой само по себе. Однако использование старых версий ПО и протоколов шифрования делает веб-приложение уязвимым к многочисленным и как правило известным широкому кругу злоумышленников атакам. Обнаруживаются на основе анализа заголовков соответствующих бинарных протоколов

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

Атаки SSL BEAST/CRIME/BREACH, POODLE, DROWN

Обнаруживаются на основе анализа числа запросов и версий протоколов

Уязвимости в коде серверного и прикладного ПО

Атаки SSL Heartbleed, различные виды атак на веб-сервера и т.п.

Обнаруживаются отдельными модулями WAF с помощью сигнатурных правил обнаружения атак или скриптоподобных правил

Аномалии на стороне клиента

 

CSRF-атаки без использования Man-in-the-Browser, OWASP Top10 A8

Обнаружение посредством внедрения и проверки CSRF-токенов

 

Атаки вида Man-in-the-Middle и Man-in-the-Browser (XSRF, Clickjacking, DOMbased XSS)

Внедрение специального кода в отдаваемые клиенту HTML-страницы, проверка соответствия поведения клиента составленному профилю

 

Для каждого вида атак были разработаны сценарии атаки. Далее по каждому сценарию заполнялась скоринговая таблица.

В случае если атака была обнаружена и заблокирована, выставлялась оценка 1. Если атака обнаружена частично (например, если вектор использует 2 и более уязвимости) или атака была обнаружена, но не заблокирована, то выставляется оценка 0.5. Во всех остальных случаях выставляется оценка 0.

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

 

Результаты сравнительного теста  WAF

Результаты функционального тестирования представлены ниже. Некоторые WAF позволяют лучше обнаруживать один тип аномалий, некоторые — другие типы. В таблице представлены наилучшие результаты по каждому типу аномалий. При этом названия продуктов зашифрованы как WAF1, WAF2 и т.д.; порядок указания продуктов в таблице не соответствует порядку перечисления продуктов в начале статьи.


 Номер теста

 WAF #1

 WAF#2

 WAF#3

 WAF#4

Явные нарушения спецификации протокола HTTP
Тест 1. Атакующий сценарий, который пытается получить доступ к файлу /etc/passwd за пределами корневого каталога веб-приложения bWapp (27 тестов)  0,8  0,63  0,63  0,95
 Использование запрещенных методов запроса
Тест 2. Атакующий сценарий проверяет возможность обработки веб-приложением HTTP-запросов с методами запроса, отличными от GET и POST (8 тестов) 0,62
Ловит несуществующие методы и DEBUG 
0,88
Ловит несуществующие методы и TRACE, DEBUGСчитает атакой метод PUT, DELETE
0
Не обращает внимания на несуществующие методы и на метод DEBUG
0,75
Не обращает внимания на несуществующие методы и на метод DEBUGНа метод HEAD отвечает 405 Not AllowedСчитает атакой метод PUT, DELETE.Не стабильно реагирует на метод POST, выдает ошибку
 Различные нарушения политик безопасности
Тест 3. Атакующий сценарий проверяет возможность использования для параметров GET и POST запросов с фиксированными разрешенными способами кодирования (url encoding, x-www-form-urlencoded) и форматами представления данных (XML, JSON) иного способа кодирования или представления данных (base64, x-www-form-urlencoded, url encoding) (11 тестов) 0.27 
Не обнаруживает в base64 или если инъекция происходит напрямую в тег <script> Даже если это инъекция объекта XMLHTTPREQUEST
 0,68 0.45 
Не обнаруживает XSS, если инъекция происходит напрямую в тег <script> Даже если это инъекция объекта XMLHTTPREQUEST
0.63 
Не обнаруживает в base64 или если инъекция происходит напрямую в тег <script> Даже если это инъекция объекта XMLHTTPREQUEST
 Нарушение синтаксиса параметров (внедрение интерпретируемых конструкций)
Тест 4. Атакующий сценарий проверяет возможность реализации атаки типа HPP на тестовое веб-приложение bWapp (6 тестов)  0,66  0,5  0,5  0,66
Тест 5. Атакующий сценарий, реализующий атаку класса iFrame injection на тестовое веб-приложение bWapp (3 теста)
Стоит учитывать, что происходит не инъекция фрейма, а установление конкретной ссылки на внешний ресурс в src-параметре фрейма.
 0  0  0  0,66
Тест 6. Атакующий сценарий, реализующий атаку класса LDAP injection на тестовое веб-приложение bWapp (4 теста)  0,25  0,75  0  0,5
Тест 7. Атакующий сценарий, реализующий атаку класса XSS через HTML injection на тестовое веб-приложение bWapp (8 тестов)  0.56  0,93
Ловит любые HTML-инъекции, в отличие от остальных
 0.5  0,87
Тест 8. Атакующий сценарий, реализующий атаку класса PHP injection на тестовое веб-приложение bWapp (9 тестов)  0.62  0,68  0.37  0,87
Тест 9. Атакующий сценарий, реализующий множество различных вариантов исполнения атаки класса SQL injection на тестовое веб-приложение bWapp (120 тестов)  0.56 0,5  0,4  0,99
Тест 10. Атакующий сценарий, реализующий атаку класса SQL injection через AJAX\JSON\JQuery на тестовое веб-приложение bWapp (3 теста)  0.5 1
Разбирает инъекции на рабочие и нет
 0,66  1
Тест 11. Атакующий сценарий, реализующий атаку класса Stored SQL injection на тестовое веб-приложение bWapp (1 тест)  1 1  1  1
Тест 12. Атакующий сценарий, реализующий атаку класса SQL injection на тестовое веб-приложение bWapp через заголовки HTTP запроса (6 тестов)  0.5 1  0.3  0,5
Разбирает инъекции на рабочие и нет
Тест 13. Атакующий сценарий, реализующий множество различных способов реализации атак класса Blind SQL injection на тестовое веб-приложение bWapp (1 тест)  1 1  1  1
Тест 14. Атакующий сценарий, реализующий атаки класса XML/XPath injection на тестовое веб-приложение bWapp (16 тестов)  0,43 
Ловит только оператор OR
 0.37  0.5  0.68
Тест 15. Атакующий сценарий, реализующий атаки класса Reflected XSS в GET и POST запросах на тестовое веб-приложение bWapp (52 теста)    0,86  0,82  0,71  0,98
Тест 16. Атакующий сценарий, реализующий атаку класса Stored SQL injection через XML на тестовое веб-приложение bWapp (1 тест)  1 
Ловит только оператор OR
 1 
Фалзит на XML-объект в теле
 1    1
Тест 17. Атакующий сценарий, реализующий атаку класса OS command injection на тестовое веб-приложение bWapp (10 тестов)  1  1  0.3 
Ловит только что-то вроде cat /etc/passwd
 1
Тест 18. Атакующий сценарий, реализующий атаку класса SSI injection на тестовое веб-приложение bWapp (6 тестов) 1 1  0,3  1
Тест 19. Атакующий сценарий, реализующий множество атак класса Reflected XSS через XML\JSON на тестовое веб-приложение bWapp (1 тест) 1  1  1  1
Тест 20. Атакующий сценарий, реализующий множество атак класса Reflected XSS через заголовки запроса на тестовое веб-приложение bWapp (1 тест)  1  1  1  1
Тест 21. Атакующий сценарий, реализующий атаки классов XXE и SSRF на тестовое веб-приложение bWapp (3 теста)  1  1  0  0
Тест 22. Атакующий сценарий проверяет для тестового приложения Hackazon и bWapp возможность проведения атак типа Slow HTTP DoS и Large Chunk Size  1 
Закрывает все соединения через короткое время
 1  0 
Начинает сбрасывать более 968 соединений за счет использования nginx
 0
 Атаки перебора
Тест 23. Атакующий сценарий, в рамках которого осуществляется подбор пароля учетных записей пользователей и их паролей с использованием словарей (топ-500)
Брутфорс был заблокирован после 5 попыток подбора. После снижения интенсивности перебора паролей брутфорс стал возможен снова — пароль в конечном счете подобран

Пароль был подобран на 54 попытке перебора

Никаких действий WAF не предпринял, пароль подобран

Брутфорс был заблокирован после 8 попыток подбора
Тест 24. Атакующий сценарий, проверяющий наличие уязвимости класса «Фиксация сессии» из-за передачи идентификатора сессии в URL-адресе запроса к веб-приложению (4 теста)  0,5  0  0  1
Нарушение прав доступа пользователя к ресурсам и объектам веб-приложения
Тест 25. Атакующий сценарий проверяет наличие в тестовых веб-приложениях bWapp и Hackazon уязвимостей класса Local File Inclusion и Remote File Inclusion (20 тестов)  0.8  1  0,65  0,75
Тест 26. Атакующий сценарий, реализующий атаки класса Unvalidated Redirects and Forwards на тестовое приложение Hackazon (4 теста)  0  1  0  0,75
Тест 27. Атакующий сценарий, реализующий атаку класса «Известные уязвимости в сторонних компонентах» (2 теста)  1  0  1  1
CSRF атаки без использования Man-in-the-Browser
Тест 28. Атакующий сценарий проверяет наличие в тестовом веб-приложении уязвимости CSRF. В рамках данного сценария производится попытка отправки запроса на удаление поста. При этом запрос производится от имени пользователя и с передачей всех надлежащих cookies, но без передачи валидного CSRF-токена (1 тест)  0,5  0,5  0  0,5
Итоговые значения  18,43  20,24  12,27  22,04

 

Выводы

В результате теста можно с уверенностью сказать, что возможности тестируемых WAF с точки зрения OWASP 10 очень похожи, основная разница заключается в нюансах. К таким нюансам можно отнести сложность первичной настройки, а также сложность доработки сигнатур для нейтрализации конкретных векторов атак. Так решение одного из тестируемых вендоров позволяет определять атаку типа SQL injection только с оператором OR, и, например, атаки с оператором AND не обнаруживаются. Таким образом, заранее предопределяя вектор обхода.

Тест также показал, что концепция «WAF как защита от DDoS на прикладном уровне» имеет место быть, это стало возможно благодаря тому, что некоторые из WAF основываются на web-сервере и позволяют противостоять DDoS-атакам начального уровня именно за счет возможностей платформы web-сервера, на базе которого реализованы WAF. Так, некоторые WAF, не детектируя DDoS-атаки, сбрасывали существующие длительные соединения, другие же решения смогли зарегистрировать и противостоять DDoS (существующими в этих WAF техниками по обнаружению и предотвращению атак данного типа).

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

В заключение хотелось бы отметить, что для защиты корпоративных веб-приложений наличие решения WAF не является достаточным. Как показали наши тесты, существует возможность реализовать атаку на веб-приложение, даже если оно защищается WAF. Поэтому защита веб-приложений — это прежде всего комплекс мер, являющийся частью системы обеспечения ИБ компании в целом.

На что стоит обратить внимание при реализации системы защиты веб-приложений:

  • внедрение процесса безопасной разработки (Secure SDLC);
  • анализ исходного кода приложения;
  • обслуживание\донастройка WAF опытными специалистами;
  • тестирование на проникновение на периодической основе;
  • грамотная настройка существующих средств защиты (МЭ, IPS/IDS, anti-DDoS).

Полные результаты сравнительного теста компания «Информзащита» готова предоставить по запросу.

За помощь в создании материала автор благодарит заместителя технического директора компании «Информзащита» Илью Четвертнева, а также экспертов отдела анализа защищенности компании «Информзащита» Егора Богомолова и Игоря Мотрони.

Anti-Malware Яндекс ДзенПодписывайтесь на канал "Anti-Malware" в Telegram, чтобы первыми узнавать о новостях и наших эксклюзивных материалах по информационной безопасности.

RSS: Новые статьи на Anti-Malware.ru