Мечтают ли WAF’ы о статанализаторах

kochetkov.vladimir kochetkov.vladimir
Одна из самых популярных тенденций в области защиты приложений нынешнего десятилетия — технология виртуального патчинга (virtual patching, VP), позволяющая защитить веб-приложение от эксплуатации имеющихся в нем известных уязвимостей на уровне межсетевого экрана уровня веб-приложений (web application firewall; здесь и далее под WAF подразумевается выделенное решение, функционирующее на отдельном узле, между шлюзом во внешнюю сеть и веб-сервером). Технология VP основана на построении правил фильтрации HTTP-запросов на стороне WAF по результатам работы средств статического анализа защищенности приложения (static application security testing, SAST). Однако из-за того, что средства SAST и WAF опираются на различные модели представления приложения и различные методы принятия решений, на рынке до сих пор нет по-настоящему эффективных решений их интеграции. В рамках SAST работа с приложением осуществляется по модели белого ящика и, как правило, используются формальные подходы к поиску уязвимостей в коде. Для WAF же приложение представляет собой черный ящик, а для детектирования атак применяются эвристики. Это не позволяет эффективно использовать VP для защиты от атак в тех случаях, когда условия эксплуатации уязвимости выходят за рамки тривиальной схемы `http_parameter=plain_text_attack_vector`.

Но что, если «подружить» SAST и WAF таким образом, чтобы информация о внутреннем устройстве приложения, полученная с помощью SAST, стала доступной на стороне WAF и дала ему возможность детектировать атаки на обнаруженные уязвимости — не угадывая, но доказывая факт атаки?

Читать далее...
wildwind
wildwind
22.09.2017 08:05
Здравствуйте, kochetkov.vladimir, Вы писали:

Прочитал как "Мечтают ли WAF’ы о сатанализаторах" и долго искал в тексте раскрытия темы...

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

Вы в PT фаззингом не занимаетесь?
kochetkov.vladimir
kochetkov.vladimir
22.09.2017 10:08
W>Прочитал как "Мечтают ли WAF’ы о сатанализаторах" и долго искал в тексте раскрытия темы...

SAST -- адова тема, это да

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

W>Вы в PT фаззингом не занимаетесь?

Чем мы только в PT не занимаемся Например, движок black-box анализа веб-приложений, входящий в Application Inspector (бесплатная облачная версия которого доступна здесь) -- это по сути фаззер и есть. В модулях анализа исходного кода того же продукта, также используются элементы фаззинга, я упоминал об этом в одной из статей(см. раздел "Частичные вычисления, обратные функции и отложенная интерпретация"). А прямо сейчас мы прототипируем одну штуку, представляющую собой что-то типа Triton, только для веб-приложений, позволяющую ещё глубже интегрировать фаззинг и символические вычисления друг в друга.

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

Фаззинг же на слуху, скорее всего, по причине, не связанной с его преимуществами, как подхода к тестированию. Бесплатные фаззеры, зачастую -- с открытым кодом, сейчас не редкость (вот список наиболее известных). Любой ресёрчер может скачать подходящий под его задачи и спокойно использовать. Бесплатных и, тем более, открытых статанализаторов, дающих более-менее приемлемые результаты -- можно по пальцам пересчитать. Причём каждый из них (как уже упомянутый выше Triton, или KLEE, или Pex&Moles, выродившийся ныне в студийный IntelliTest) требует достаточно глубокого понимания основ абстрактной интерпретации и некоторой ручной работы, чтобы применить её результаты к задаче анализа защищённости. А коммерческие анализаторы, во-первых -- дороги, а во-вторых -- их лицензии, как правило, запрещают использование предоставляемой функциональности для консалтинга (т.е. анализа не собственных проектов).

Поэтому, если какой-нибудь ресёрчер обнаруживает багу с помощью коммерческого анализатора со своего основного места работы, или с помощью его пиратской версии, то в паблике он обычно пишет/говорит, что дескать "нафаззил" -- это устоявшаяся и вполне стандартная отмазка