Contrabbando di richieste HTTP

Riepilogo:
HTTP Request Smuggling è una vulnerabilità di sicurezza web che si verifica quando un utente malintenzionato sfrutta le incongruenze nell'elaborazione delle sequenze di richieste HTTP da parte di diversi dispositivi (come proxy, servizi di bilanciamento del carico e server) nella catena di richieste HTTP. Ciò può consentire agli aggressori di «contrabbandare» una richiesta dannosa al server, aggirando i controlli di sicurezza e provocando vari esiti dannosi.

Come funziona il contrabbando di richieste HTTP

Il contrabbando di richieste HTTP in genere comporta la creazione di richieste HTTP che vengono interpretate in modo diverso dal server front-end (come un proxy o un load balancer) e dal server back-end. Queste incongruenze possono far sì che il server front-end interpreti erroneamente dove finisce una richiesta HTTP e inizia quella successiva, facendo sì che il server back-end elabori parte della richiesta come una nuova richiesta separata.

Ciò può essere ottenuto utilizzando varie tecniche, come la manipolazione delle intestazioni Content-Length, l'utilizzo delle intestazioni Transfer-Encoding o una combinazione di entrambe per creare richieste sovrapposte o ambigue.

Esempi di contrabbando di richieste HTTP

  1. CL.TE (lunghezza del contenuto e codifica di trasferimento)
  2. TE.CL (codifica di trasferimento e lunghezza del contenuto)
  3. CL.CL (lunghezza del contenuto vs. lunghezza del contenuto)
  4. TE.TE (Transfer-Encoding vs. Transfer-Encoding)

1. CL.TE (lunghezza del contenuto e codifica di trasferimento)

Spiegazione: Questo tipo di contrabbando di richieste HTTP si verifica quando il server front-end interpreta la richiesta in base a Lunghezza del contenuto intestazione, mentre il server di back-end utilizza il Codifica di trasferimento intestazione, che porta a diverse interpretazioni del punto in cui termina la richiesta.

Esempio di richiesta:

POST/HTTP/1.1
Organizzatore: example.com
Lunghezza del contenuto: 15
Codifica di trasferimento: in blocchi

0

POST /HTTP/1.1 dannoso
Organizzatore: example.com
Lunghezza del contenuto: 13

payload dannoso

Risposta: Il server front-end potrebbe interpretare la richiesta come terminata dopo la prima Lunghezza del contenuto, inoltrando il resto al server di back-end. Il server di back-end elabora la parte suddivisa in blocchi come una nuova richiesta.

HTTP/1.1 200 OK
...

(Il server back-end può rispondere a /malevolo richiesta, indicante che il contrabbando è andato a buon fine.)

2. TE.CL (codifica di trasferimento e lunghezza del contenuto)

Spiegazione: Questo tipo si verifica quando il server front-end elabora la richiesta come in blocchi (a causa Codifica di trasferimento header), ma il server back-end la elabora come una richiesta a lunghezza fissa (a causa di Lunghezza del contenuto intestazione)

Esempio di richiesta:

POST/HTTP/1.1
Organizzatore: example.com
Codifica di trasferimento: in blocchi
Lunghezza del contenuto: 6

1
Z
POST /HTTP/1.1 dannoso
Organizzatore: example.com
Lunghezza del contenuto: 13

payload dannoso

Risposta: Il server front-end elabora la parte in blocchi, mentre il server back-end la legge in base a Lunghezza del contenuto, provocando l'elaborazione della richiesta contrabbandata.

HTTP/1.1 200 OK
...

(Il server back-end può rispondere al /malevolo richiesta.)

3. CL.CL (lunghezza del contenuto e lunghezza del contenuto)

Spiegazione: Questo tipo si verifica quando un utente malintenzionato invia una richiesta con più Lunghezza del contenuto intestazioni. I server front-end e back-end potrebbero utilizzare intestazioni diverse per determinare la lunghezza della richiesta, causando una discrepanza.

Esempio di richiesta:

POST/HTTP/1.1
Organizzatore: example.com
Lunghezza del contenuto: 13
Lunghezza del contenuto: 5

G
POST/HTTP/1.1
Organizzatore: example.com
Lunghezza del contenuto: 13

payload dannoso

Risposta: Il server front-end potrebbe utilizzarne uno Lunghezza del contenuto intestazione mentre il back-end ne utilizza un'altra, facendo sì che la richiesta contrabbandata venga interpretata separatamente.

HTTP/1.1 200 OK
...

(Il server back-end può rispondere al /malevolo richiesta.)

4. TE.TE (Transfer-Encoding vs. Transfer-Encoding)

Spiegazione: Questo tipo coinvolge più Codifica di trasferimento intestazioni in cui i server front-end e back-end gestiscono la codifica in blocchi in modo diverso.

Esempio di richiesta:

POST/HTTP/1.1
Organizzatore: example.com
Codifica di trasferimento: in blocchi
Transfer-Encoding: identità

0

POST /HTTP/1.1 dannoso
Organizzatore: example.com
Lunghezza del contenuto: 13

payload dannoso

Risposta:

I server front-end e back-end possono interpretare Codifica di trasferimento intestazioni diverse, portando all'elaborazione della richiesta contrabbandata.

HTTP/1.1 200 OK
...

(Il server back-end può rispondere al /malevolo richiesta.)

Impatti del contrabbando di richieste HTTP

Le vulnerabilità di HTTP Request Smuggling possono avere gravi ripercussioni sulla sicurezza e sulla funzionalità delle applicazioni web:

Esposizione dei dati: gli aggressori possono accedere a informazioni sensibili manipolando la sequenza delle richieste, recuperando potenzialmente dati non autorizzati.

Dirottamento della sessione: iniettando richieste dannose, gli aggressori possono dirottare le sessioni utente e ottenere l'accesso non autorizzato agli account utente.

Avvelenamento da cache: gli aggressori possono avvelenare le cache web contrabbandando risposte dannose, portando alla distribuzione di contenuti dannosi agli utenti.

Cross-Site Scripting (XSS): le richieste contrabbandate possono iniettare script dannosi nelle pagine Web, causando attacchi XSS.

Azioni non autorizzate: gli aggressori possono eseguire azioni per conto di utenti autenticati, come la modifica o l'eliminazione dei dati.

Correzione del contrabbando di richieste HTTP

Per mitigare efficacemente le vulnerabilità di HTTP Request Smuggling, le organizzazioni dovrebbero implementare le seguenti misure:

Convalida rigorosa dell'intestazione: Implementa una rigorosa convalida delle intestazioni HTTP, assicurando che sia accettata una sola intestazione Content-Length o Transfer-Encoding.

Logica di analisi coerente: assicurati che tutti i dispositivi nella catena di richieste HTTP (proxy, servizi di bilanciamento del carico, server) abbiano una logica di analisi coerente per le richieste HTTP.

Uso di protocolli sicuri: Preferisci protocolli e configurazioni sicuri che riducano il rischio di iniezione di intestazioni e manipolazione delle richieste.

Monitoraggio e registrazione: implementa una registrazione e un monitoraggio completi per rilevare e rispondere a modelli di richiesta HTTP sospetti che potrebbero indicare tentativi di contrabbando.

Conclusione

Le vulnerabilità di HTTP Request Smuggling comportano rischi significativi poiché consentono agli aggressori di manipolare le richieste HTTP e ottenere l'accesso non autorizzato alle applicazioni Web. Comprendendo i meccanismi alla base di questi attacchi e implementando solide misure di sicurezza, le organizzazioni possono proteggere la propria infrastruttura web da queste sofisticate minacce. Regolare test di sicurezza, una rigorosa convalida delle intestazioni e una logica di analisi coerente su tutti i dispositivi sono passaggi cruciali per mitigare i rischi associati all'HTTP Request Smuggling.

Pronti a vedere di persona?

Prova tu stesso tutte le funzionalità della piattaforma. Nessun impegno e nessuna carta di credito!

Prenota una demo
Prenota una demo