Ricercatori delle Università di Amburgo e Colonia
Il problema è dovuto al fatto che i CDN memorizzano nella cache non solo le richieste completate con successo, ma anche le situazioni in cui il server http restituisce un errore. Di norma, se ci sono problemi con la formazione delle richieste, il server emette un errore 400 (Bad Request); l'unica eccezione è IIS, che emette un errore 404 (Not Found) per intestazioni troppo grandi. Lo standard consente solo la memorizzazione nella cache degli errori con i codici 404 (Non trovato), 405 (Metodo non consentito), 410 (Gone) e 501 (Non implementato), ma alcuni CDN memorizzano nella cache anche le risposte con il codice 400 (Bad Request), che dipende sulla richiesta inviata.
Gli aggressori possono far sì che la risorsa originale restituisca un errore “400 Bad Request” inviando una richiesta con intestazioni HTTP formattate in un certo modo. Queste intestazioni non vengono prese in considerazione dalla CDN, quindi le informazioni sull'impossibilità di accedere alla pagina verranno memorizzate nella cache e tutte le altre richieste utente valide prima della scadenza del timeout potrebbero risultare in un errore, nonostante il sito originale fornisca il contenuto senza alcun problema.
Sono state proposte tre opzioni di attacco per forzare il server HTTP a restituire un errore:
- HMO (HTTP Method Override): un utente malintenzionato può sovrascrivere il metodo di richiesta originale tramite gli header "X-HTTP-Method-Override", "X-HTTP-Method" o "X-Method-Override", supportati da alcuni server, ma non presi in considerazione nel CDN. Ad esempio, puoi modificare il metodo "GET" originale nel metodo "DELETE", che è vietato sul server, o nel metodo "POST", che non è applicabile per le statistiche;
- HHO (HTTP Header Oversize): un utente malintenzionato può selezionare la dimensione dell'intestazione in modo che superi il limite del server di origine, ma non rientri nelle restrizioni della CDN. Ad esempio, Apache httpd limita la dimensione dell'intestazione a 8 KB e Amazon Cloudfront CDN consente intestazioni fino a 20 KB;
- HMC (HTTP Meta Character): un utente malintenzionato può inserire caratteri speciali nella richiesta (\n, \r, \a), che sono considerati non validi sul server di origine, ma vengono ignorati nella CDN.
Il più suscettibile agli attacchi è stato il CDN CloudFront utilizzato da Amazon Web Services (AWS). Amazon ha ora risolto il problema disabilitando la memorizzazione nella cache degli errori, ma i ricercatori hanno impiegato più di tre mesi per aggiungere la protezione. Il problema ha interessato anche Cloudflare, Varnish, Akamai, CDN77 e
Velocemente, ma l'attacco attraverso di essi è limitato ai server di destinazione che utilizzano IIS, ASP.NET,
Come soluzione alternativa per bloccare un attacco lato sito, è possibile utilizzare l'intestazione "Cache-Control: no-store", che vieta la memorizzazione nella cache delle risposte. In alcuni CDN, ad es.
CloudFront e Akamai, puoi disabilitare la memorizzazione nella cache degli errori a livello di impostazioni del profilo. Per la protezione è possibile utilizzare anche i firewall delle applicazioni Web (WAF, Web Application Firewall), ma questi devono essere implementati sul lato CDN davanti agli host di memorizzazione nella cache.
Fonte: opennet.ru