Эксперты из Технического университета Кельна рассказали о новой атаке, направленной на отравление веб-кэша. Проблема представляет опасность для сетей доставки контента (content delivery network, CDN) и работающих с ними сайтов, так как может вынудить CDN кэшировать, а затем обслуживать страницы ошибок вместо легитимных ресурсов.
Атака получила название CPDoS (Cache-Poisoned Denial-of-Service) и имеет три варианта исполнения, которые вполне могут применяться на практике.
CPDoS-атаки направлен на два основных компонента современного веба: веб-серверы и сети доставки контента. Так, если веб-серверы хранят исходный сайт и его содержимое, то CDN хранит кэшированную копию ресурса, которая обновляется через определенные промежутки времени. Это помогает существенно облегчить нагрузку на веб-серверы. Так как в наши дни CDN применяются очень широко, атака на систему CDN может значительно сказаться на доступности сайта и, следовательно, отразиться на его прибыли.
Таким образом, используя CPDoS, преступники могут реализовать следующий сценарий:
- злоумышленник подключается к сайту до тех пор, пока его запрос не сгенерирует новую запись CDN;
- запрос злоумышленника содержит искаженный или слишком большой HTTP-заголовок;
- CDN позволяет этому заголовку проходить через легитимный сайт, и в итоге тот может быть обработан и использован для генерации веб-страницы, которую кэширует CDN;
- заголовок слишком большого размера провоцирует на веб-сервере ошибку;
- сервер генерирует страницу с ошибкой (ошибка «400 Bad Request»);
- страница ошибки кэшируется в CDN;
- другие пользователи, обращающиеся к сайту, видят страницу с ошибкой вместо реального сайта;
- кэшированная ошибка распространяется на другие узлы сети CDN, создавая ложное отключение на легитимном сайте.
Исследователи пишут, что существует три варианта CPDoS-атак, которые зависят от того, как злоумышленники структурируют свой искаженный заголовок: с использованием полей заголовка большого размера, метасимволов, вызывающих ошибки, или инструкций, которые перепишут нормальные ответы сервера:
- HTTP Header Oversize (HHO);
- HTTP Meta Character (HMC);
- HTTP Method Override (HMO).
Интересно, что экспертам удалось провести масштабные испытания CPDoS-атак на тестовом сайте, размещенном в сети нескольких CDN-провайдеров. Так, на приведенной ниже карте видно, что злоумышленник (символ опасности) запускает атаку на сервер CDN легитимного сайта (синий маркер), который распространяет страницу с кэшированной ошибкой на другие серверы CDN (красные маркеры), отравляя большую часть сети провайдера.
К счастью, не все веб-серверы (реализации протокола HTTP) и CDN-провайдеры уязвимы перед атаками CPDoS. В таблице ниже показано, какие комбинации сервер + CDN уязвимы, согласно проведенным исследователями тестам.
Владельцам сайтов противостоять атакам CPDoS не так уж трудно: достаточно настроить работу со своим провайдером CDN таким образом, чтобы страницы ошибок HTTP не кэшировались по умолчанию. У многих поставщиков услуг CDN есть соответствующие настройки в панели управления, так что это нетрудная задача. Также можно отключить это в файлах конфигурации сервера, добавив заголовок HTTP «Cache-Control: no-store» к каждому типу страницы ошибок.
Что касается CDN-провайдеров, корень проблемы заключается в том, что стандарт веб-кэширования допускает, что CDN кэшируют только коды ошибок 404 Not Found , 405 Method Not Allowed , 410 Gone и 501 Not Implemented, тогда как CDN не должны кэшировать страницы «400 Bad Request», генерируемые в ходе CPDoS-атак. Увы, далеко не все CDN следуют стандарту, что и приводит к возникновению проблем.
По данным исследователей, потенциальную уязвимость перед атаками CPDoS демонстрируют 30% сайтов из списка Alexa топ-500, 11% доменов Министерства обороны США и 16% адресов из 365 000 000 образцов URL, полученных из архива Google Big Query.