RangeAmp — серия атак на CDN, манипулирующая HTTP-заголовком Range
26 мая 2020 года
Группа исследователей из Пекинского университета, Университета Цинхуа и Техасского университета в Далласе выявила (Архивная копия от 22 июня 2020 на Wayback Machine) новый класс 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).
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.