Diventa Autore per CoreTech | Scopri di più
02/10/20 CoreTech Blog
Il reindirizzamento aperto è un tipo di problema di sicurezza delle applicazioni web. Infatti, consente un reindirizzamento dal sito originale a uno dannoso da parte di cyber criminali. Gli aggressori utilizzano la reputazione aziendale per rendere più efficaci gli attacchi di phishing attraverso redirect di cui l’utente non si accorge. Se consenti i reindirizzamenti aperti, un utente malintenzionato può inviare un'e-mail di phishing contenente un collegamento con il tuo nome di dominio. La vittima verrà reindirizzata dal tuo server web al sito dell'aggressore.
Si noti che i reindirizzamenti aperti sono stati inclusi come vulnerabilità nell'elenco OWASP Top 10 nel 2013 (reindirizzamenti e inoltri non convalidati A10).
Il reindirizzamento in inglese è chiamato “redirect”, una parola molto usata in informatica. Vediamo che cosa vuol dire. Un reindirizzamento si verifica quando il sito web, o l'applicazione web, cambia l'URL a cui si accede nel client (di solito esterno - i reindirizzamenti interni vengono solitamente chiamati in avanti). Ci sono diversi modi per reindirizzare una pagina web dal back-end. Di solito, i reindirizzamenti vengono effettuati inviando intestazioni HTTP specifiche al client, ma puoi anche creare reindirizzamenti, ad esempio, utilizzando il codice JavaScript.
Il reindirizzamento viene normalmente gestito dal server quando riceve una richiesta che ha per oggetto un contenuto che è stato spostato su una nuova URL. Un redirect è utile anche nei casi in cui una pagina del sito sia stata eliminata. Sia nel caso di risorse spostate, sia in quello dell’eliminazione di una risorsa, il reindirizzamento garantisce all’utente un’esperienza di navigazione piacevole, priva di errori 404. Infatti, il redirect porta l’utente alla nuova URL senza che se ne avveda. Dunque, l’operazione del reindirizzare una pagina web non viene percepita dall’utente, che procede veloce tra un luogo e l’altro del web. Ci sono due tipi di redirect: il redirect 301 corrisponde a un reindirizzamento permanente, il redirect 302 a un reindirizzamento temporaneo.
Esiste anche la possibilità di reindirizzare una pagina web attraverso il cosiddetto “meta refresh”. Si tratta di una modalità del redirect che non coinvolge il server, ma è effettuata a livello della pagina web. È più lenta perché prevede che la pagina di origine sia caricata e richiede l’inserimento di una meta tag HTML.
Esiste una vulnerabilità di reindirizzamento aperto quando la destinazione del reindirizzamento è fornita dal client e non viene filtrata o convalidata. Di seguito sono riportati alcuni esempi di reindirizzamenti sicuri e reindirizzamenti non sicuri:
La possibilità di reindirizzare un sito a un omologo truffaldino è un’occasione ghiotta per i malintenzionati del web. Gli sviluppatori che utilizzano reindirizzamenti dinamici (basati sui dati del client) dovrebbero trattare tali dati come input non attendibili. In caso contrario, il cyber criminale trova la falla per sferrare un attacco: con poco sforzo, può reindirizzare il browser a un sito dannoso utilizzando il tuo nome di dominio per ingannare la vittima.
Ad esempio, se il tuo dominio è example.com , l'autore dell'attacco potrebbe creare il seguente URL:
https://example.com/redirect.php?url=http://attacker.com
L'autore dell'attacco può quindi inviare questo URL come parte di un tentativo di phishing per reindirizzare la vittima a un sito Web dannoso attacker.com . L'aggressore spera che example.com all'inizio abbia un aspetto affidabile e lo faccia cadere nella truffa di phishing.
Il seguente semplice codice PHP crea un reindirizzamento aperto:
$redirect = $_GET['url']; header("Location: " . $redirect);
È una vulnerabilità di reindirizzamento aperta perché l'autore dell'attacco potrebbe fornire l’URL di un sito web dannoso nel valore del parametro URL della richiesta GET. Così l’URL di destinazione verrà inviato come intestazione della posizione , reindirizzando il client a una pagina web dannosa.
Una vulnerabilità di reindirizzamento aperta rende possibili molti attacchi informatici:
Il modo più sicuro per prevenire le vulnerabilità di reindirizzamento aperto è non utilizzare reindirizzamenti nelle applicazioni web. Se ciò non è possibile, puoi provare i seguenti approcci: