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

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 25 Oct 2019.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,373
    Likes Received:
    6,619
    Reputations:
    693
    Исследователи из Гамбургского и Кёльнского университетов разработали новую технику атак на сети доставки контента и кэширующие прокси - 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";[​IMG]
    • HHO (HTTP Header Oversize) - атакующий может подобрать размер заголовка таким образом, чтобы он превышал лимит исходного сервера, но не подпадал под ограничения CDN. Например, Apache httpd ограничивает размер заголовка в 8 КБ, а CDN Amazon Cloudfront допускает заголовки до 20 КБ;

    • [​IMG]

    • HMC (HTTP Meta Character) - атакующий может подставить в запрос спецсимволы (\n, \r, \a), которые считаются недопустимыми на исходном сервере, но игнорируются в CDN.[​IMG]
    Наиболее подвержен атаке оказался 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 перед хостами, осуществляющими кэширование.

     
    CKAP and seostock like this.