Група изследователи от Пекинския университет, Университета Цинхуа и Тексаския университет в Далас нов клас DoS атаки — RangeAmp, основан на използването на HTTP заглавията за организацию на усилване на трафика чрез мрежи за доставка на съдържание (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, използван като прокси (например, когато Cloudflare играе роля на фронтенд (FCDN), а Akamai - на бекенд (BCDN)). Методът прилича на първата атака, но се локализира вътре в мрежите на CDN и позволява усилване на трафика при взаимодействие с други CDN, повишавайки натоварването на инфраструктурата и намалявайки качеството на услугата.
Идеята е, че атакуващият изпраща в CDN услуги заявки за диапазони, като например „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 000 диапазона. Собствениците на CDN бяха уведомени за уязвимостите преди около 7 месеца и към момента на публичното разкриване на информация 12 от 13 CDN поправиха откритите проблеми или изразиха готовност да ги поправят (не реагира само услугата StackPath).
Източник: opennet.ru
