Исследователь безопасности Мазин Ахмед (Mazin Ahmed) опубликовал результаты анализа способов обхода XSS-защиты в популярных межсетевых экранах уровня приложения (Web application firewalls, WAF).
Ахмед использовал несколько виртуальных машин, на которых запускались популярные браузеры Google Chrome, Opera, Mozilla Firefox и Internet Explorer.
Исследователь изучал коммерческие и открытые продукты: F5 Big IP, Imperva Incapsula, AQTRONIX WebKnight, PHP-IDS, Mod-Security, Sucuri, QuickDefence, Barracuda WAF. Для каждого продукта был представлен хотя бы один XSS-вектор, позволявший осуществить обход защиты.
Некорректная обработка JS-событий
Целый ряд известных межсетевых экранов пропускали JS-события “onwheel” и “onshow” — они позволяют выполнить вредоносный сценарий при прокрутке мышью и при показе элемента меню соответственно. В частности, этой ошибке оказались подвержены F5 Big IP, Barracuda WAF.
Quick Defense также оказался неспособным обнаружить внедрение вредоносного кода с помощью JS-событий “onsearch” и “ontoggle”.
Двойное кодирование URL и JS-F**K
С помощью двойного URL-кодирования, а также техники, получившей название JS-F**K (позволяет представить любой JS-код с помощью набора из 6 символов), исследователь обошел XSS-фильтры сразу нескольких WAF. Этому обходу оказались подвержены Imperva Incapsula, F5 Big IP (этот WAF имеет сразу четыре разных обхода), Mod-Security, PHP-IDS.
Другие уязвимости
Кроме того, правила PHP-IDS содержали ошибку, которая позволяла злоумышленнику обойти фильтры с помощью использования тэга svg. А Sucuri WAF не учитывал возможность семибитного представления данных в кодировке us-ascii, что воспринимается браузерами Internet Explorer 6 и 7:
?script?alert(?xss?)?/script?
Подробное описание всех обходов представлено в исследовании.
Исследователь передал информацию об обнаруженных ошибках безопасности разработчикам всех участвовавших в исследовании межсетевых экранов. Большинство из них уже выпустили патчи или исправят ошибки в следующей версии продукта, ответа не последовало только от команды разработки PHP-IDS.
А что у нас
Мы проверили самообучающийся межсетевой экран PT Application Firewall (PT AF) на подверженность описанным Ахмедом обходам. Рассмотрим три возможных сценария срабатывания нашей защиты.
(1) Обученная система блокирует подобные атаки, рассматривая их в качестве аномальных запросов к приложению:
(2) Атаки, аналогичные примерам, приведенным в PDF-документе, блокируются регулярными выражениями:
(3) Если входные данные пользователя каким-то образом обошли все защитные механизмы PT AF и встретились в ответе сервера, то они будут экранированы в контексте HTML-страницы:
P.S.
Если вам близка тема WAF, присоединяйтесь к команде разработки PT Application Firewall —
habrahabr.ru/company/pt/blog/266415
Karroplan
Давайте позанудствуем — WAF у F5 называется не F5 BigIP, а F5 Application Security Manager. BigIP — это платформа.