Istraživači sa univerziteta u Hamburgu i Kelnu
Problem je zbog činjenice da CDN-ovi keširaju ne samo uspješno završene zahtjeve, već i situacije kada http server vraća grešku. U pravilu, ako postoje problemi s formiranjem zahtjeva, server izdaje grešku 400 (Bad Request), jedini izuzetak je IIS, koji izdaje grešku 404 (Not Found) za prevelika zaglavlja. Standard dozvoljava samo keširanje grešaka s kodovima 404 (nije pronađen), 405 (metoda nije dozvoljena), 410 (nestalo) i 501 (nije implementirano), ali neki CDN-ovi također keširaju odgovore s kodom 400 (loš zahtjev), što ovisi na poslani zahtjev.
Napadači mogu uzrokovati da izvorni resurs vrati grešku “400 Bad Request” slanjem zahtjeva sa HTTP zaglavljima formatiranim na određeni način. CDN ne uzima u obzir ova zaglavlja, tako da će se informacije o nemogućnosti pristupa stranici keširati, a svi ostali važeći korisnički zahtjevi prije isteka vremena mogu rezultirati greškom, unatoč činjenici da izvorna stranica opslužuje sadržaj bez ikakvih problema.
Predložene su tri opcije napada kako bi se HTTP server prisilio da vrati grešku:
- HMO (HTTP Method Override) - napadač može nadjačati originalnu metodu zahtjeva putem zaglavlja "X-HTTP-Method-Override", "X-HTTP-Method" ili "X-Method-Override", koje podržavaju neki serveri, ali nije uzeto u obzir u CDN-u. Na primjer, možete promijeniti originalnu metodu “GET” u metodu “DELETE”, koja je zabranjena na serveru, ili metodu “POST”, koja nije primjenjiva za statiku;
- HHO (HTTP Header Oversize) - napadač može odabrati veličinu zaglavlja tako da premašuje ograničenje izvornog servera, ali ne spada u CDN ograničenja. Na primjer, Apache httpd ograničava veličinu zaglavlja na 8 KB, a Amazon Cloudfront CDN dozvoljava zaglavlja do 20 KB;
- HMC (HTTP Meta Character) - napadač može umetnuti posebne znakove u zahtjev (\n, \r, \a), koji se smatraju nevažećim na izvornom serveru, ali se ignoriraju u CDN-u.
Najpodložniji napadima bio je CloudFront CDN koji koristi Amazon Web Services (AWS). Amazon je sada riješio problem tako što je onemogućio keširanje grešaka, ali je istraživačima trebalo više od tri mjeseca da dodaju zaštitu. Problem je također uticao na Cloudflare, Varnish, Akamai, CDN77 i
Brzo, ali napad preko njih je ograničen na ciljane servere koji koriste IIS, ASP.NET,
Kao rešenje za blokiranje napada na strani sajta, možete koristiti zaglavlje „Cache-Control: no-store“, koje zabranjuje keširanje odgovora. U nekim CDN-ovima, npr.
CloudFront i Akamai, možete onemogućiti keširanje grešaka na nivou postavki profila. Za zaštitu možete koristiti i zaštitne zidove za web aplikacije (WAF, Web Application Firewall), ali oni moraju biti implementirani na CDN strani ispred hostova za keširanje.
izvor: opennet.ru