Raziskovalci z univerz v Hamburgu in Kölnu
Težava je posledica dejstva, da CDN-ji predpomnijo ne samo uspešno zaključene zahteve, ampak tudi situacije, ko http strežnik vrne napako. Če pride do težav pri oblikovanju zahtev, strežnik praviloma izda napako 400 (Bad Request), izjema je le IIS, ki za prevelike glave izda napako 404 (Not Found). Standard dovoljuje samo predpomnjenje napak s kodami 404 (Ni najdeno), 405 (Metoda ni dovoljena), 410 (Izginila) in 501 (Ni implementirano), vendar nekateri CDN-ji predpomnijo tudi odgovore s kodo 400 (Slaba zahteva), kar je odvisno od na poslano zahtevo.
Napadalci lahko povzročijo, da izvirni vir vrne napako »400 Bad Request«, tako da pošljejo zahtevo z glavami HTTP, oblikovanimi na določen način. Teh glav CDN ne upošteva, zato bodo informacije o nezmožnosti dostopa do strani shranjene v predpomnilniku, vse druge veljavne uporabniške zahteve pred iztekom časovne omejitve pa lahko povzročijo napako, kljub dejstvu, da izvirno spletno mesto streže vsebino brez težav.
Predlagane so bile tri možnosti napada, da strežnik HTTP prisili, da vrne napako:
- HMO (HTTP Method Override) – napadalec lahko preglasi izvirno metodo zahteve prek glav »X-HTTP-Method-Override«, »X-HTTP-Method« ali »X-Method-Override«, ki jih podpirajo nekateri strežniki, vendar ni upoštevan v CDN . Prvotno metodo »GET« lahko na primer spremenite v metodo »DELETE«, ki je na strežniku prepovedana, ali metodo »POST«, ki ni uporabna za statiko;
- HHO (HTTP Header Oversize) - napadalec lahko izbere velikost glave tako, da presega omejitev izvornega strežnika, vendar ne spada v omejitve CDN. Na primer, Apache httpd omejuje velikost glave na 8 KB, Amazon Cloudfront CDN pa dovoljuje glave do 20 KB;
- HMC (HTTP Meta Character) - napadalec lahko v zahtevo vstavi posebne znake (\n, \r, \a), ki se na izvornem strežniku štejejo za neveljavne, v CDN pa so prezrti.
Najbolj dovzeten za napad je bil CloudFront CDN, ki ga uporabljajo Amazon Web Services (AWS). Amazon je zdaj odpravil težavo z onemogočanjem predpomnjenja napak, vendar so raziskovalci potrebovali več kot tri mesece, da so dodali zaščito. Težava je vplivala tudi na Cloudflare, Varnish, Akamai, CDN77 in
Hitro, vendar je napad prek njih omejen na ciljne strežnike, ki uporabljajo IIS, ASP.NET,
Kot rešitev za blokiranje napada na strani spletnega mesta lahko uporabite glavo »Cache-Control: no-store«, ki prepoveduje predpomnjenje odgovorov. V nekaterih CDN, npr.
CloudFront in Akamai, lahko onemogočite predpomnjenje napak na ravni nastavitev profila. Za zaščito lahko uporabite tudi požarne zidove spletnih aplikacij (WAF, Web Application Firewall), vendar morajo biti implementirani na strani CDN pred gostitelji predpomnilnika.
Vir: opennet.ru