WAF-защиту Azure, Cloudflare, Google Cloud можно обойти 1207 способами

WAF-защиту Azure, Cloudflare, Google Cloud можно обойти 1207 способами

WAF-защиту Azure, Cloudflare, Google Cloud можно обойти 1207 способами

Команда исследователей из Северо-Восточного университета и Дартмутского колледжа разработала новый метод обхода фильтров WAF, который использует различия в парсинге HTTP-запросов на файрволах и защищаемых веб-серверах.

Традиционные способы обхода WAF полагаются на обфускацию вредоносной полезной нагрузки. Авторы PoC-атаки WAFFLED не стали трогать пейлоад и сосредоточились на невинных элементах контента — заголовках, сегментах тела запроса.

Для манипуляций были выбраны три широко используемых типа содержимого: multipart/form-data, application/xml и application/json.

Экспериментаторы изменяли набор символов для составного контента, значения параметров boundary и namespace, XML-схемы, декларации DOCTYPE, разделы CDATA, форматирование и вложенные структуры в JSON-объектах, стараясь ввести в заблуждение WAF, но так, чтобы атакуемый сервер при этом смог распарсить пробивший фильтры вредоносный запрос без проблем.

Всего в ходе исследования было обнаружено 1207 вариантов обхода WAF, с помощью которого злоумышленник может получить доступ к конфиденциальным данным. Подобные атаки известны как HTTP request smuggling (HRS).

 

Как оказалось, обход по методу WAFFLED составляет угрозу для четырех из пяти испытанных защитных продуктов (AWS WAF, Microsoft Azure WAF, Google Cloud Armor, Cloudflare WAF и ModSecurity, встроенный в nginx).

Тестирование проводилось в комбинации с веб-приложениями на основе популярных фреймворков, таких как Flask, FastAPI, Gin, Express, Spring Boot, Laravel. Проверка в полевых условиях показала: HRS из-за разницы в интерпретации HTTP-запросов актуален для 90% сайтов.

 

Ознакомившись с результатами исследования, Google признала наличие проблемы, заявила, что будет решать ее в приоритетном порядке, и выплатила вознаграждение. В Cloudflare тоже готовят фикс, Microsoft и ModSecurity-сообщество обновили наборы правил.

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

Тестирование HTTP-Normalizer показало, что он способен блокировать попытки обхода по методу WAFFLED с эффективностью 100%. Накладные расходы при этом ничтожны.

Тем, кто не в состоянии развернуть дополнительный прокси, советуют установить новейшие наборы правил (Azure DRS 2.1, ModSecurity CRS 3.3), по возможности исключить экзотические типы содержимого и ужесточить проверку заголовков Content-Type, Content-Length и Transfer-Encoding на уровне WAF и приложений.

DOOM запустили в Microsoft Paint, холст кормят кадрами через буфер обмена

Технический директор Microsoft Azure Марк Руссинович выпустил DoomPaint — проект, который позволяет играть в DOOM прямо на холсте Microsoft Paint. Правда, калькулятором Paint так и не стал: игру обсчитывает движок ViZDoom, а встроенный редактор Windows лишь показывает готовые кадры.

DoomPaint запускает движок без отдельного окна, формирует изображение и отправляет его в Paint через буфер обмена.

Каждый кадр вставляется на холст как новая картинка. Разрешение по умолчанию составляет 640×400 пикселей, а частота достигает родных для DOOM 35 кадров в секунду. При нагрузке производительность может скатиться до уровня, который Руссинович метко назвал табличным.

Играть при этом можно полноценно: доступны управление с клавиатуры, стрельба, бег, открытие дверей, звуковые эффекты и MIDI-саундтрек. Есть и бонус, которого не было в оригинале: Ctrl+Z превращается в перемотку времени.

Каждый кадр хранится в истории Paint, поэтому несколько отмен способны буквально оживить погибшего героя. А сохранение файла создаёт обычный PNG со сценой игры — Paint ведь понятия не имеет, что его заставили изображать монитор.

 

Главной проблемой стал сам буфер обмена. Если десятки раз в секунду очищать его и записывать новый кадр, Paint может не успеть прочитать предыдущий и выдать ошибку. Поэтому DoomPaint публикует один объект OLE на всю сессию и обновляет содержащиеся в нём данные. Следующий кадр появляется только после подтверждения, что Paint забрал предыдущий.

Вставка запускается синтетическим Ctrl+V либо через меню Paint, если приложение игнорирует нажатие. Низкоуровневый перехватчик клавиатуры не даёт игровым клавишам случайно нажимать кнопки редактора.

Проект опубликован на GitHub и требует Python. После запуска файла run.bat скрипт сам создаёт окружение, устанавливает зависимости и открывает Paint.

RSS: Новости на портале Anti-Malware.ru