CPDoS — новая техника атаки

Сотрудники двух немецких университетов придумали новую технику атаки на сети доставки контента и кэширующие прокси — Cache-Poisoned Denial-of-Service (CPDoS). Эта техника вызывает отказ доступа к странице через отправление кэша.

Как это работает?

Cети доставки содержимого (CDN) кэшируют и выполненные запросы, и возвращённые ошибки. Если есть проблемы с запросом, обычно сервер выдаёт ошибку 400 (Bad Request). По стандарту кэшируются только ошибки 404, 405, 410 и 501, но CDN могут кэшировать и ошибки 400 в зависимости от запроса.

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

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

  • HMO (HTTP Method Override) — атакующий переопределяет исходный метод запроса через заголовки «X-HTTP-Method-Override», «X-HTTP-Method» или «X-Method-Override». Их могут поддерживать сервера, но не учитывает CDN. Меняем исходный метод “GET” на  запрещённый “DELETE” или неприменимый для статистики “POST” — получаем CPDoS.
  • HHO (HTTP Header Oversize) — атакующий подбирает размер заголовка больше лимита сервера, но меньше ограничения CDN. Например, Apache httpd ограничивает размер заголовка в 8 килобайт, а CDN Amazon Cloudfront разрешает заголовки до 20 килобайт.
  • HMC (HTTP Meta Character) — атакующий добавляет в запрос спецсимволы (\n, \r, \a). Если они недопустимы на исходном сервере, но игнорируются в CDN, мы получаем CPDoS/

Как дела с устранением?

Самая уязвимая CDN — CloudFront в Amazon Web Services. Компания запретила кэширование ошибок и решила проблему, но на добавление полноценной защиты исследователи потратили 3 месяца. 

Проблемными оказались Cloudflare, Varnish, Akamai, CDN77 и Fastly, но атаковать получится только целевые сервера с IIS, ASP.NET, Flask и Play 1.

Потенциально атаковать с CPDoS можно 11% доменов Минобороны США, 16% базы HTTP Archive и 1/3 топ-500 сайтов по рейтингу Alexa.

Блокировать атаку со стороны сайта можно выставлением заголовка “Cache-Control: no-store” — он запрещает кэшировать ответы. В CloudFront и Akamai в настройках профиля можно отключить кэширование ошибок. Ещё можно использовать WAF, но на стороне CDN перед кэширующими хостами.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *