Een groep onderzoekers van de Beijing University, de Tsinghua University en de University of Texas in Dallas een nieuwe klasse DoS-aanvallen — RangeAmp, gebaseerd op het gebruik van de HTTP-header om het verkeer via content delivery networks (CDN) te versterken. De essentie van de methode is dat, vanwege een eigenaardigheid in de verwerking van Range-headers in veel CDN's, de aanvaller één byte kan opvragen uit een groot bestand via de CDN, maar de CDN het gehele bestand of een aanzienlijk groter datablok van de doelserver zal ophalen om in de cache te plaatsen. De mate van versterking van het verkeer bij een dergelijke aanval varieert afhankelijk van de CDN, van 724 tot 43.330 keer, wat kan worden gebruikt om de inkomende verkeersstroom naar de CDN te overbelasten of de bandbreedte van de eindverbinding naar de website van het slachtoffer te verlagen.

De Range-header biedt de cliënt de mogelijkheid om een bereik van posities in een bestand aan te geven die moeten worden gedownload in plaats van het volledige bestand te versturen. Bijvoorbeeld, de cliënt kan 'Range: bytes=0-1023' opgeven en de server zal alleen de eerste 1024 bytes van data verzenden. Deze mogelijkheid is handig bij het downloaden van grote bestanden — een gebruiker kan de download pauzeren en later vanaf de onderbroken positie verdergaan. Bij 'bytes=0-0' vereist de standaard dat de eerste byte van het bestand wordt verzonden, 'bytes=-1' de laatste, en 'bytes=1-' vanaf byte 1 tot het einde van het bestand. Meerdere bereiken kunnen in één header worden verzonden, bijvoorbeeld 'Range: bytes=0-1023,8192-10240'.
Daarnaast is er een tweede aanvalsmethode voorgesteld, gericht op het verhogen van de netwerklast door het verkeer via een andere CDN te leiden, die als proxy fungeert (bijvoorbeeld wanneer Cloudflare als front-end (FCDN) optreedt en Akamai als back-end (BCDN)). Deze methode lijkt op de eerste aanval, maar wordt binnen de CDN-netwerken gelokaliseerd en maakt het mogelijk om het verkeer te versterken bij toegang via andere CDN's, waardoor de belasting op de infrastructuur toeneemt en de kwaliteit van de service afneemt.
Het idee is dat de aanvaller in CDN meerdere bereikverzoeken verzendt, zoals «bytes=0-,0-,0-…», «bytes=1-,0-,0-…» of «bytes=-1024,0-,0-…». De verzoeken bevatten een groot aantal bereiken «0-«, wat impliceert dat het bestand van de nulpositie tot het einde wordt teruggegeven. Door een onjuiste implementatie van het parseren van de bereiken wanneer de eerste CDN de tweede benadert, wordt voor elk bereik «0-» het volledige bestand teruggegeven (de bereiken worden niet samengevoegd, maar sequentaal doorlopen), als er duplicatie en overlappen van de bereiken aanwezig zijn in de aanvaller's oorspronkelijk verzonden verzoek. De mate van versterking van het verkeer bij zo'n aanval varieert van 53 tot 7432 keer.

Tijdens het onderzoek werd het gedrag van 13 CDN bestudeerd —
Akamai, Alibaba Cloud, Azure, CDN77, CDNsun, Cloudflare, CloudFront, Fastly, G-Core Labs, Huawei Cloud, KeyCDN, StackPath en Tencent Cloud. Alle onderzochte CDN stonden de eerste soort aanval op de eindserver toe. De tweede vorm van aanval op de CDN was vatbaar voor 6 diensten, waarvan er vier kunnen optreden als frontend bij de aanval (CDN77, CDNsun, Cloudflare en StackPath) en drie als backend (Akamai, Azure en StackPath). De grootste versterking wordt bereikt met Akamai en StackPath, die toestaan om meer dan tienduizend bereiken in de Range-header op te geven. De eigenaren van CDN werden ongeveer 7 maanden geleden op de kwetsbaarheden gewezen en op het moment van de publieke bekendmaking hadden 12 van de 13 CDN de geconstateerde problemen opgelost of aangegeven ze te zullen oplossen (alleen de dienst StackPath heeft niet gereageerd).
Bron: opennet.ru
