Grupa badaczy z Uniwersytetu Pekińskiego, Uniwersytetu Tsinghua i Uniwersytetu Teksańskiego w Dallas nowa klasa ataków DoS — RangeAmp, oparta na wykorzystaniu nagłówka HTTP do organizowania wzmocnienia ruchu przez sieci dostarczania treści (CDN). Istota metody polega na tym, że z powodu specyfiki przetwarzania nagłówków Range w wielu CDN atakujący może zażądać przez CDN jednego bajta z dużego pliku, ale CDN pobierze z serwera docelowego cały plik lub znacznie większy blok danych do umieszczenia w pamięci podręcznej. Stopień wzmocnienia ruchu w takim ataku, w zależności od CDN, wynosi od 724 do 43330 razy, co może być wykorzystywane do przeciążania ruchu przychodzącego CDN lub zmniejszenia przepustowości końcowego kanału komunikacyjnego do witryny ofiary.

Nagłówek Range umożliwia klientowi określenie zakresu pozycji w pliku, które mają zostać pobrane zamiast dostarczania całego pliku. Na przykład, klient może wskazać „Range: bytes=0-1023”, a serwer przekaże tylko pierwsze 1024 bajty danych. Taka możliwość jest przydatna przy pobieraniu dużych plików — użytkownik może wstrzymać pobieranie, a następnie wznowić je z przerwanej pozycji. Przy wskazaniu „bytes=0-0” standard nakazuje przesyłanie pierwszego bajtu w pliku, „bytes=-1” — ostatniego, „bytes=1-” — począwszy od 1 bajta do końca pliku. Można przesyłać kilka zakresów w jednym nagłówku, na przykład „Range: bytes=0-1023,8192-10240”.
Dodatkowo zaproponowano drugi wariant ataku, mający na celu zwiększenie obciążenia sieci przy przekazywaniu ruchu przez inny CDN, który działa jako proxy (na przykład, gdy jako front-end (FCDN) występuje Cloudflare, a back-end (BCDN) — Akamai). Metoda przypomina pierwszy atak, ale lokalizuje się wewnątrz sieci CDN i pozwala na wzmacnianie ruchu, przy korzystaniu z innych CDN, zwiększając obciążenie infrastruktury i obniżając jakość usługi.
Idea polega na tym, że atakujący kieruje do CDN zapytania Range z wieloma zakresami, takimi jak „bytes=0-,0-,0-…”, „bytes=1-,0-,0-…” lub „bytes=-1024,0-,0-…”. Zapytania zawierają dużą liczbę zakresów „0-“, implikujących dostarczenie pliku od zerowej pozycji do końca. Z powodu nieprawidłowej implementacji analizy zakresów, podczas gdy pierwszy CDN kontaktuje się z drugim, na każdy zakres „0-” dostarczany jest pełny plik (zakresy nie są agregowane, a kolejne przechodzą przez siebie), jeśli w pierwotnie wysłanym zapytaniu atakującego występuje powielanie i nakładanie się zakresów. Stopień wzmocnienia ruchu w takim ataku wynosi od 53 do 7432 razy.

W trakcie badania przeanalizowano zachowanie 13 CDN —
Akamai, Alibaba Cloud, Azure, CDN77, CDNsun, Cloudflare, CloudFront, Fastly, G-Core Labs, Huawei Cloud, KeyCDN, StackPath i Tencent Cloud. Wszystkie rozważane CDN zezwalały na pierwszy rodzaj ataku na serwer końcowy. Drugi rodzaj ataku na CDN dotknął 6 usług, z których cztery mogą pełnić rolę front-endu (CDN77, CDNsun, Cloudflare i StackPath), a trzy w roli back-endu (Akamai, Azure i StackPath). Największe wzmocnienie osiąga się w Akamai i StackPath, które pozwalają na określenie w nagłówku Range więcej niż 10 tysięcy zakresów. Właściciele CDN zostali powiadomieni o lukach bezpieczeństwa około 7 miesięcy temu i do momentu publicznego ujawnienia informacji 12 z 13 CDN usunęło wykryte problemy lub wyraziło gotowość do ich usunięcia (tylko usługa StackPath nie zareagowała).
Źródło: opennet.ru
