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

DDOS Новости

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

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

Заголовок 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 раз.

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

В процессе исследования было изучено поведение 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).

Publisher
Оцените автора
AsaDagar
Добавить комментарий