Атака CPDoS, позволяющая сделать недоступными страницы, отдаваемые через CDN

Исследователи из Гамбургского и Кёльнского университетов
разработали новую технику атак на сети доставки контента и кэширующие прокси — CPDoS (Cache-Poisoned Denial-of-Service). Атака позволяет добиться отказа доступа к странице через отравление кэша.

Проблема связана с тем, что CDN кэшируют не только успешно выполненные запросы, но и ситуации, когда http-сервер возвращает ошибку. Как правило, при проблемах с формированием запросов сервер выдаёт ошибку 400 (Bad Request), исключение составляет только IIS, который выдаёт для слишком больших заголовков ошибку 404 (Not Found). Стандарт разрешает кэшировать только ошибки с кодами 404 (Not Found), 405 (Method Not Allowed), 410 (Gone) и 501 (Not Implemented), но некоторые CDN также кэшируют и ответы с кодом 400 (Bad Request), который зависит от отправленного запроса.

Атакующие могут вызвать на оригинальном ресурсе возврат ошибки «400 Bad Request» через отправку запроса с определённым образом оформленными HTTP-заголовками. Данные заголовки не учитываются CDN, поэтому в кэш попадёт информация о невозможности получить доступ к странице и все остальные корректные запросы пользователей до истечения таймаута могут приводить к выводу ошибки, несмотря на то что исходный сайт без проблем отдаёт содержимое.

Для принуждения HTTP-сервера к возврату ошибки предложено три варианта атаки:

  • HMO (HTTP Method Override) — атакующий может переопределить исходный метод запроса через заголовки «X-HTTP-Method-Override», «X-HTTP-Method» или «X-Method-Override», поддерживаемые некоторыми серверами, но не учитываемые в CDN. Например, можно поменять исходный метод «GET» на запрещённый на сервере метод «DELETE» или неприменимый для статики метод «POST»;

    Атака CPDoS, позволяющая сделать недоступными страницы, отдаваемые через CDN

  • HHO (HTTP Header Oversize) — атакующий может подобрать размер заголовка таким образом, чтобы он превышал лимит исходного сервера, но не подпадал под ограничения CDN. Например, Apache httpd ограничивает размер заголовка в 8 КБ, а CDN Amazon Cloudfront допускает заголовки до 20 КБ;
    Атака CPDoS, позволяющая сделать недоступными страницы, отдаваемые через CDN

  • HMC (HTTP Meta Character) — атакующий может подставить в запрос спецсимволы (\n, \r, \a), которые считаются недопустимыми на исходном сервере, но игнорируются в CDN.

    Атака CPDoS, позволяющая сделать недоступными страницы, отдаваемые через CDN

Наиболее подвержен атаке оказался CDN CloudFront, используемый в Amazon Web Services (AWS). В настоящее время компания Amazon уже устранила проблему через запрет кэширования ошибок, но на то, чтобы добиться добавления защиты, исследователям потребовалось более трёх месяцев. Проблема также затронула Cloudflare, Varnish, Akamai, CDN77 и
Fastly, но атака через них ограничена целевыми серверами, на которых используется IIS, ASP.NET, Flask и Play 1. Отмечается, что атаке потенциально могут быть подвержены 11% доменов Министерства обороны США, 16% URL из базы HTTP Archive и около 30% из 500 крупнейших сайтов по рейтингу Alexa.

В качестве обходного метода блокирования атаки на стороне сайта можно использовать выставление заголовка «Cache-Control: no-store», запрещающего кэширование ответов. В некоторых CDN, например, в
CloudFront и Akamai, можно на уровне настроек профиля отключить кэширование ошибок. Для защиты также можно использовать межсетевые экраны для web-приложений (WAF, Web Application Firewall), но они должны внедряться на стороне CDN перед хостами, осуществляющими кэширование.

Источник: opennet.ru