Думали, WAF вас защищает? Исследователи обошли 17 файрволов с помощью одного трюка с запятой

leer en español

Думали, WAF вас защищает? Исследователи обошли 17 файрволов с помощью одного трюка с запятой

Как простая запятая сломала миллиардную индустрию безопасности.

image

Исследователи Ethiack в ходе автономного тестирования защиты нашли способ обойти даже самые строгие Web Application Firewall при помощи необычного приёма — внедрения JavaScript через загрязнение параметров HTTP. В качестве объекта проверки использовалось ASP.NET-приложение с максимально жёсткими правилами фильтрации. Любые попытки внедрить стандартные XSS-конструкции блокировались, однако благодаря особенностям обработки дублирующихся параметров исследователям удалось собрать рабочую полезную нагрузку, которую межсетевой экран даже не заметил.

Ключ к обходу заключался в том, что метод ASP.NET HttpUtility.ParseQueryString() объединяет одинаковые параметры через запятую. Так, строка запроса вида q=1'&q=alert(1)&q='2 превращается в последовательность 1',alert(1),'2. При вставке в JavaScript это преобразуется в jsuserInput = '1',alert(1),'2; — то есть код становится синтаксически корректным, а оператор запятой выполняет вызов alert. Подобное поведение позволяет разнести вредоносные фрагменты на несколько параметров и уйти от классических сигнатурных проверок. В то время как ASP.NET и классический ASP объединяют значения, другие платформы вроде Golang или Python Zope работают с массивами, поэтому методика применима не везде.

Для проверки устойчивости были протестированы семнадцать конфигураций разных производителей: AWS WAF, Google Cloud Armor, Azure WAF, open-appsec, Cloudflare, Akamai, F5, FortiWeb и NGINX App Protect. Применялось четыре типа нагрузок — от простого внедрения вида q=';alert(1), до более сложных с разделителями и эвристическими обходами. Полностью блокировать все варианты смогли только Google Cloud Armor с ModSecurity, Azure WAF Default Rule Set 2.1 и все уровни чувствительности open-appsec. В то время как AWS WAF, F5 и решения Cyber Security Cloud проваливались во всех сценариях. Общий процент обходов вырос с 17,6% для базового инъекционного запроса до 70,6% для продвинутого загрязнения параметров.

Автономный хакбот, использованный исследователями, сумел найти и обход тех решений, что выдержали ручные тесты. В Azure WAF удалось использовать несогласованную обработку экранированных символов через последовательность test\';alert(1);//. В open-appsec инструмент за полминуты подобрал рабочий вариант даже для «критического» профиля, варьируя вызовы от alert до confirm и переходя к более хитрым конструкциям вроде q='+new Function('a'+'lert(1)')()+'. Для Google Cloud Armor обойти фильтрацию не получилось, однако анализ показал, что серверная логика чувствительна к регистру параметров, что может дать лазейки в будущем.

Результаты подчёркивают системные ограничения сигнатурных и даже эвристических WAF. Полноценное выявление атак, распределённых между параметрами, потребовало бы глубокого понимания логики конкретного фреймворка и анализа в контексте JavaScript , что трудно реализовать на прокси-уровне. Попытки внедрить машинное обучение также не гарантируют устойчивости, поскольку адаптивные боты быстро подстраиваются и находят безопасные для себя шаблоны.

В итоге исследователи напоминают, что межсетевые экраны не могут быть единственным барьером — необходима валидация ввода, корректное экранирование и надёжные практики разработки. Сочетание творческого подхода человека и автоматизированных средств показывает, насколько быстро могут раскрываться даже нестандартные уязвимости, и почему непрерывная проверка остаётся обязательной.