Исследователи из Технического Университета Кёльна создали концепцию DoS-атаки, осуществляемой посредством отравления веб-кеша. Им удалось реализовать такую возможность на практике: как оказалось, некоторые кеширующие прокси-серверы неправильно сконфигурированы, и с их помощью можно вынудить сайт отдавать посетителям ошибку вместо запрошенного контента.

Новая PoC-атака, получившая наименование Cache-Poisoned Denial-of-Service (CPDoS), использует два объекта: веб-сервер с исходными данными сайта (сервер источника) и кеширующий сервер. В качестве последнего может выступать обратный прокси-сервер, ретранслирующий внешние запросы во внутреннюю сеть, или пограничный сервер CDN-сети. Такие посредники сохраняют и периодически обновляют копии статических файлов (HTML-страницы, JavaScript, изображения, видео), снижая нагрузку на сервер-источник и ускоряя процесс доставки веб-ресурсов и содержимого сайта пользователям.

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

По утверждению исследователей, разработанную ими атаку можно провести с помощью одного вредоносного HTTP-запроса:

  • удаленный автор атаки обращается к странице целевого сайта, отправляя запрос с особым заголовком;
  • если на промежуточном сервере нет копии запрошенного объекта, он перенаправляет запрос серверу источника, который из-за неправильного HTTP-заголовка выдает ошибку 400 («некорректный запрос»);
  • промежуточный сервер кеширует страницу ошибки и отдает ее в ответ на все последующие запросы пользователей; если это сервер CDN-сети, в скором времени неправильный ответ станут выдавать все ее граничные узлы.

«Подчеркнем: чтобы заменить подлинный контент в кеше страницей ошибки, достаточно единственного простого запроса, — пишут авторы исследования. — Это означает, что подобную провокацию не смогут отследить ни брандмауэры веб-приложений, ни средства защиты от DDoS, так как они ориентированы на большие объемы подозрительного трафика. Атаку CPDoS также можно использовать для блокировки патчей или обновлений прошивки, распространяемых через кеш. С ее помощью можно также нарушить рассылку уведомлений о киберинцидентах и других важных сообщений с сайтов банков или правительственных структур».

Вредоносный HTTP-заголовок, по словам исследователей, можно создать тремя способами:

  • превысить лимит по длине;
  • добавить специфические метасимволы (например, управляющие Unicode-знаки \n, \r, \a);
  • использовать заголовок X-HTTP-Method-Override, диктующий замену метода в строке запроса (например, POST вместо указанного GET)

Для проверки концепции университетские исследователи создали тестовый сайт и опробовали все три способа атаки при разных комбинациях системы кеширования и реализации HTTP (сервера-источника). Наиболее уязвимой к CPDoS оказалась CDN-сеть Amazon CloudFront — она по умолчанию кеширует ошибку 400. Подобные атаки также актуальны для обратного прокси-сервера Varnish и еще четырех сетей доставки контента: Cloudflare, Fastly, Akamai и CDN77. Согласно результатам исследования, проблема CPDoS потенциально затрагивает 30% сайтов списка топ-500 по версии Alexa, 11% доменов Министерства обороны США и 16% URL по выборке из 365 млн страниц, заархивированных поисковиком Google.

Владельцы сайтов могут защититься от CPDoS, по умолчанию запретив кеширование HTTP-ошибок через настройки CDN-службы. Отключить такую функцию можно в панели администрирования CDN либо через конфигурационные файлы сервера — добавлением HTTP-заголовка Cache-Control: no-store для каждого типа ошибки. CDN-провайдерам, не соблюдающим принятые стандарты кеширования (они запрещают сохранять ошибку 400), избавиться от проблемы будет труднее: для этого придется внести изменения в бэкенд-серверы.

Авторы исследования сообщили о своих находках затронутым вендорам и провайдерам еще в феврале. Операторы облачных сервисов Amazon подтвердили наличие уязвимости и через три месяца решили проблему, запретив кеширование страниц ошибки 400. Разработчики Microsoft тоже признали свой недочет и в июне выпустили обновление для серверов IIS, зарегистрировав уязвимость как CVE-2019-0941. Залатали и фреймворк Play 1, ограничив использование заголовка X-HTTP-Method-Override в версиях 1.5.3 и 1.4.6. Остальные адресаты, включая создателей Flask, никак не отреагировали на уведомление, несмотря на многочисленные попытки исследователей добиться ответа.

Категории: DoS-атаки, Аналитика, Главное, Уязвимости