RangeAmp - серия атак на CDN, манипулирующая HTTP-заголовком Range - AsaDagar

RangeAmp — серия атак на CDN, манипулирующая HTTP-заголовком Range

Группа исследователей из Пекинского университета, Университета Цинхуа и Техасского университета в Далласе выявила новый класс DoS-атак — RangeAmp, основанный на использовании HTTP-заголовка Range для организации усиления трафика через сети доставки контента (CDN). Суть метода в том, что из-за особенности обработки Range-заголовков во многих CDN атакующий может запросить через CDN один байт из большого файла, но CDN загрузит с целевого сервера весь файл или значительно больший блок данных для помещения в кэш. Степень усиления трафика при такой атаке в зависимости от CDN составляет от 724 до 43330 раз, что может использоваться для перегрузки входящим трафиком CDN или снижения пропускной способности конечного канала связи до сайта жертвы.

Заголовок Range даёт клиенту возможность определить диапазон позиций в файле, которые следует загрузить вместо отдачи полного файла. Например, клиент может указать «Range: bytes=0-1023» и сервер передаст только первые 1024 байта данных. Подобная возможность востребована при загрузке больших файлов — пользователь может приостановить загрузку, а потом продолжить его с прерванной позиции. При указании «bytes=0-0» стандарт предписывает отдавать первый байт в файле, «bytes=-1» — последний, «bytes=1-» — начиная с 1 байта и до конца файла. Допускается передача нескольких диапазонов в одном заголовке, например «Range: bytes=0-1023,8192-10240».

Дополнительно предложен второй вариант атаки, нацеленный на повышение сетевой нагрузки при пробросе трафика через ещё один CDN, который используется как прокси (например, когда в качестве фронтэнда (FCDN) выступает Cloudflare, а бэкенда (BCDN) — Akamai). Метод напоминает первую атаку, но локализуется внутри CDN-сетей и позволяет усилить трафик при обращении через другие CDN, повысив нагрузку на инфраструктуру и снизив качество сервиса.

Идея в том, что атакующий направляет в CDN Range-запросы нескольких диапазонов, такие как «bytes=0-,0-,0-…», «bytes=1-,0-,0-…» или «bytes=-1024,0-,0-…». Запросы содержат большое число диапазонов «0-«, подразумевающих отдачу файла от нулевой позиции до конца. Из-за некорректной реализации разбора диапазонов при обращении первого CDN ко второму, на каждый диапазон «0-» отдаётся полный файл (диапазоны не агрегируются, а последовательно перебираются), если в изначально отправленном атакующим запросе присутствует дублирование и пересечение диапазонов. Степень усиления трафика в такой атаке составляет от 53 до 7432 раз.

В процессе исследования было изучено поведение 13 CDN — Akamai, Alibaba Cloud, Azure, CDN77, CDNsun, Cloudflare, CloudFront, Fastly, G-Core Labs, Huawei Cloud, KeyCDN, StackPath и Tencent Cloud. Все из рассмотренных CDN допускали первый вид атаки на конечный сервер. Второму варианту атаки на CDN оказались подвержены 6 сервисов, из которых четыре могут выступать в атаке в роли фронтэнда (CDN77, CDNsun, Cloudflare и StackPath) и три в роли бэкенда (Akamai, Azure и StackPath). Наибольшее усиления достигается в Akamai и StackPath, которые допускают указание в заголовке Range более 10 тысяч диапазонов. Владельцы CDN были уведомлены об уязвимостях около 7 месяцев назад и к моменту публичного раскрытия сведений 12 из 13 CDN устранили выявленные проблемы или выразили готовность их устранить (не отреагировал только сервис StackPath).

Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии