Diventa Autore per CoreTech | Scopri di più
18/11/21 CoreTech Blog
La vulnerabilità di iniezione dell’header HTTP è un termine di sicurezza dell'applicazione Web che si riferisce a una situazione in cui l'autore dell'attacco inganna l'applicazione Web per inserire intestazioni HTTP aggiuntive in risposte HTTP legittime. L'iniezione di intestazione HTTP è una tecnica che può essere utilizzata per facilitare attacchi dannosi come scripting tra siti, avvelenamento della cache Web e altro ancora. Questi, a loro volta, possono portare alla divulgazione di informazioni, all'utilizzo dell'applicazione in attacchi di phishing e ad altre gravi conseguenze.
L'iniezione dell’header HTTP è un caso specifico di una categoria di attacchi più generica: le iniezioni CRLF. Se l'attaccante è in grado di inserire una sequenza CRLF (carriage return e line feed) nella risposta, è in grado di aggiungere varie voci false o modificare i dati esistenti: non solo le intestazioni ma anche l'intero corpo della risposta.
Proprio come la maggior parte delle vulnerabilità di sicurezza delle applicazioni Web, le vulnerabilità di iniezione dell'intestazione HTTP (e le vulnerabilità di iniezione CRLF in generale) sono il risultato dell'eccessiva fiducia nell'input dell'utente. Se lo sviluppatore di un'applicazione Web utilizza dati esterni direttamente nelle risposte HTTP, di solito è possibile eseguire un attacco di header injection HTTP.
Ad esempio, immagina che la tua azienda si sia trasferita in un nuovo dominio e, per comodità, desideri che i segnalibri degli utenti continuino a funzionare. Il dominio originale era example.com ma ora il tuo sito è disponibile su example.info. Se il tuo utente normale visita un URL obsoleto come http://www.example.com/page1, desideri che il server web reindirizzi automaticamente l'utente al rispettivo nuovo URL: http://www.example.info/page1 .
Per raggiungere l'obiettivo di cui sopra, puoi creare una semplice applicazione web su example.com che prenda il percorso dalla richiesta HTTP e lo accoda a http://www.example.info/. Se lo sviluppatore di tale applicazione non elimina i caratteri speciali CR e LF dai dati di input prima di aggiungerli al nuovo URL di base, un utente malintenzionato può utilizzare questa applicazione per eseguire attacchi di intestazione HTTP.
Gli attacchi di header injection HTTP sono per molti versi simili agli attacchi di scripting cross-site (XSS). Pertanto, ci sono attacchi di iniezione di intestazione HTTP riflessi e (meno comuni) attacchi di iniezione di intestazione HTTP memorizzati.
Immagina di essere il proprietario del dominio example.com e che un utente malintenzionato voglia sfruttare la vulnerabilità di iniezione dell'intestazione HTTP descritta sopra. Preparano una campagna di phishing e inviano il seguente URL:
http://example.com/page1%0d%0aLocation:vulnweb.com
Come risultato dell'inserimento dell'intestazione HTTP, i caratteri CRLF vengono inseriti nella risposta e seguiti da una nuova intestazione Location:. Il browser web (a seconda del tipo e della configurazione del browser) reindirizzerà l'utente al sito dell'attaccante (qui: vulnweb.com ).
Le vulnerabilità di iniezione dell'intestazione HTTP memorizzate e gli attacchi correlati sono piuttosto rari. In questo caso, l'input dell'utente malintenzionato viene archiviato dall'applicazione Web, ad esempio in un database, e quindi utilizzato direttamente nella risposta HTTP inviata ad altri utenti.
Proprio come nel caso delle vulnerabilità di scripting tra siti archiviate, l'iniezione di intestazione HTTP archiviata è più pericolosa perché potrebbe potenzialmente influenzare tutti gli utenti che visitano il tuo sito Web o utilizzano la tua applicazione Web.
Abbiamo descritto il caso più semplice di un attacco di iniezione di intestazione HTTP sopra: l'attaccante può sfruttare una vulnerabilità di iniezione di intestazione HTTP direttamente per utilizzare il tuo dominio come base per un attacco di phishing.
Tuttavia, ci sono più potenziali conseguenze dell'iniezione di intestazione HTTP. Ad esempio, l'attaccante può utilizzare l'iniezione di intestazione HTTP per iniettare nuove intestazioni che allentano le restrizioni di sicurezza della politica della stessa origine, rendendo così possibile eseguire altri attacchi che altrimenti sarebbero impossibili, ad esempio CSRF.
Un altro potenziale utilizzo degli attacchi di iniezione dell'intestazione HTTP è la suddivisione della risposta HTTP. In tal caso, l'attaccante non solo inietta nuove intestazioni di risposta HTTP, ma anche l'intero corpo della risposta. Utilizzando l'intestazione Content-Length , sono in grado di far sì che il browser della vittima ignori completamente il corpo legittimo della risposta (e le intestazioni legittime rimanenti).
Il modo migliore per rilevare le vulnerabilità di iniezione dell'intestazione HTTP è utilizzare uno scanner di vulnerabilità.
Poiché l'iniezione dell’header HTTP è il risultato di una neutralizzazione impropria delle sequenze CRLF, il modo migliore per evitare tali vulnerabilità è codificare le sequenze CRLF dall'input dell'utente prima di utilizzarle nelle risposte HTTP. Ciò previene anche le conseguenze di altri attacchi che sfruttano l'iniezione di CRLF, che possono persino portare a violazioni di informazioni riservate, corruzione dei file di registro o esecuzione di codice.