HTTP request smuggling è un tipo di attacco che tenta di sfruttare la desincronizzazione tra i proxy front-end e i server back-end. Quindi è una tecnica per interferire con un sito Web che elabora le sequenze di richieste HTTP ricevute da uno o più utenti.
Questa vulnerabilità consente agli aggressori di decifrare l'elaborazione delle richieste HTTP iniettando una richiesta diversa che può cambiare la logica dell'applicazione. Sfrutta l'incoerenza nell'analisi delle richieste HTTP non conformi a RFC tramite due dispositivi HTTP (generalmente un server back-end e un firewall abilitato per HTTP o un proxy front-end). Questo consente di bypassare misure di sicurezza, ottenere l'accesso a informazioni sensibili e compromettere direttamente vari utenti.

Vediamo ora degli esempi:
Vulnerabilità CL.TE (Content-Length.Transfer-Encoding): questa variazione CL.TE presuppone che il server front-end dia priorità all'intestazione Content-Length mentre il server back-end dia priorità all'intestazione Transfer-Encoding. L'attacco viene eseguito dichiarando una lunghezza di chunk breve in genere 0, nella prima parte di una richiesta. Il server front-end legge solo la prima parte della richiesta e passa la seconda parte al server back-end. Il testo che inizia con "MALICIOUS REQUEST" viene passato al server back-end, che lo tratta come la richiesta successiva e lo elabora.
Vulnerabilità TE.CL (Transfer-Encoding.Content-Length): nella variazione TE.CL presuppone che il server front-end dia priorità alla debolezza Transfer-Encoding mentre il server back-end dia priorità alla debolezza Content-Length. In questo tipo di attacco l'attaccante dichiara la lunghezza del primo chunk fino alla richiesta malevola inclusa.

Per proteggersi da questo tipo di attacchi puoi disabilitare il riutilizzo della connessione back-end in modo che ogni richiesta back-end venga inviata tramite una connessione di rete separata. Utilizza HTTP/2 per le connessioni back-end, ha lo scopo di non poter modificare o iniettare alcun codice. Utilizza lo stesso identico software del server Web per i server front-end e back-end in modo che concordino sui limiti tra le richieste.
A volte le vulnerabilità possono essere evitate facendo in modo che i server front-end normalizzino le richieste ambigue o che i server back-end rifiutino le richieste ambigue e chiudano la connessione di rete.

Oltre alle varie vulnerabilità aggiungo anche qualche esempio pratico:

Splitting della richiesta: un attaccante divide la richiesta in due parti separate sfruttando un nuovo protocollo HTTP da parte del server in modo che il server elabori la seconda parte della richiesta come una nuova richiesta separata. In questo modo l'attaccante potrebbe ottenere l'accesso a risorse che altrimenti sarebbero protette da controlli di sicurezza.

Teaming Attack: due attaccanti collaborano. Il primo attaccante invia una richiesta HTTP malevola contenente un payload che viene elaborato come una richiesta separata dal server. Il secondo attaccante invia una richiesta valida che viene elaborata dal server insieme alla richiesta fraudolenta. Così facendo l'attaccante può accedere a risorse che sarebbero altrimenti protette.

HTTP Smuggling over HTTPS: un attaccante sfrutta una vulnerabilità in un server web che supporta sia HTTP che HTTPS per inviare una richiesta HTTP fraudolenta che viene elaborata come una richiesta HTTPS legittima. In questo modo l'attaccante bypassa i controlli di sicurezza imposti dal protocollo HTTPS.

Powered by: FreeFlarum.
(remove this footer)