Suicide
26.05.2020, 20:42
Группа исследователей из Пекинского университета, Университета Цинхуа и Техасского университета в Далласе выявила (https://www.liubaojun.org/uploads/1/1/8/3/118316462/dsn_2020.pdf) новый класс DoS-атак - RangeAmp, основанный на использовании HTTP-заголовка Range (https://tools.ietf.org/html/rfc7233) для организации усиления трафика через сети доставки контента (CDN). Суть метода в том, что из-за особенности обработки Range-заголовков во многих CDN атакующий может запросить через CDN один байт из большого файла, но CDN загрузит с целевого сервера весь файл или значительно больший блок данных для помещения в кэш. Степень усиления трафика при такой атаке в зависимости от CDN составляет от 724 до 43330 раз, что может использоваться для перегрузки входящим трафиком CDN или снижения пропускной способности конечного канала связи до сайта жертвы.
https://www.opennet.ru/opennews/pics_base/0_1590478472.png
Заголовок 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 раз.
https://www.opennet.ru/opennews/pics_base/0_1590478486.png
В процессе исследования было изучено поведение 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).
26.05.2020
https://www.opennet.ru/opennews/art.shtml?num=53026
https://www.opennet.ru/opennews/pics_base/0_1590478472.png
Заголовок 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 раз.
https://www.opennet.ru/opennews/pics_base/0_1590478486.png
В процессе исследования было изучено поведение 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).
26.05.2020
https://www.opennet.ru/opennews/art.shtml?num=53026