Scopri cos’è un CSRF exploit e come funzionano gli attacchi basati su cross site request.
Nel 2008, due ricercatori universitari hanno pubblicato un articolo sulla vulnerabilità di grandi siti web agli attacchi CSRF e tra questi hanno segnalato anche la banca ING Direct e il quotidiano The New York Times.
Da allora, la popolarità e la gravità di questi attacchi sono aumentate esponenzialmente nei primi tempi per poi diminuire drasticamente, quando la comunità informatica ha iniziato a implementare le prime difese efficaci contro CSRF.
Oggi questo tipo di attacchi è ancora possibile, nonostante la maggior parte dei siti web vulnerabili disponga delle dovute misure di sicurezza. In questo post vedremo cos’è un attacco CSRF, come funziona e cosa possiamo fare per difenderci da questa minaccia digitale.
Cos’è un attacco CSRF
La sigla CSRF sta per cross site request forgery, che in inglese significa falsificazione di richiesta inviata da un sito a un altro. In un attacco CSRF, il cybercriminale inganna un utente facendogli compiere un’azione indesiderata su un sito web utilizzandone un altro.
Gli attacchi CSRF sfruttano l’architettura di base del protocollo HTTP e della comunicazione di dati in Internet, ovvero le sessioni di autenticazione e i cookie inviati ai browser. In pratica, l’attaccante non inganna l’utente vero e proprio, ma il suo browser, facendogli inviare una richiesta a un’applicazione web in cui si è precedentemente autenticato e per cui non ha fatto il logout.
Questo tipo di attacchi è possibile perché, per velocizzare la navigazione, sul Web è possibile passare ad aree protette per cui abbiamo già fatto il login provenendo da un sito esterno, ad esempio puoi visitare il profilo di un utente LinkedIn facendo clic sul link apposito che si trova nel suo sito web personale.
Queste sono appunto le richieste cross-site e sono possibili grazie all’autenticazione delle sessioni utente tramite i cookie salvati nel browser. Se questo tipo di operazione non fosse possibile, ogni volta che apriamo una pagina di Facebook o di qualsiasi altra applicazione web protetta da password dovremmo inserire di nuovo le credenziali.
Il problema si presenta quando un cracker ne approfitta per creare del codice, ad esempio un sito ma anche un malware, che inganna il browser dell’utente già autenticato presso l’applicazione web presa di mira. Come? Ad esempio con un sito web di phishing, in cui l’utente fa clic su un elemento come un link o un pulsante e, invece dell’azione prevista, ne esegue un’altra dannosa senza saperlo.
Esempio di attacco CSRF
Ecco come si svolge un attacco cross site request al conto bancario online di un’utente:
- Marta, la nostra utente fittizia, si collega a Banca.com per consultare il saldo del suo conto.
- Marta NON fa il logout su Banca.com e chiude la scheda del browser. La sessione sul sito di ebanking è ancora attiva.
- Marta continua a navigare con il browser e finisce sul sito di phishing Info Investimenti. Qui, inserisce la propria email e fa clic sul pulsante Invia per iscriversi alla newsletter.
- In realtà, Info Investimenti è una copertura e il pulsante Invia non esegue nessuna registrazione, ma invia una richiesta al sito Banca.com tramite la sessione autenticata in precedenza nel browser per fare un bonifico di 10.000 euro sul conto del cybercriminale.
Funziona proprio così? È davvero così facile? Fino a qualche anno fa sì, ma per fortuna oggi la maggior parte dei siti non è più vulnerabile ad attacchi così semplici. Andiamo a vedere quali sono i sistemi di sicurezza a disposizione delle applicazioni web.
Cybersicurezza contro gli attacchi CSRF, lato Web
I siti e le app che ospitano applicazioni web hanno a disposizione i seguenti sistemi di sicurezza per mitigare la vulnerabilità agli attacchi di cross site request forgery:
- Token anti-CSRF: in fase di autenticazione, l’applicazione rilascia un token, ovvero un codice alfanumerico univoco che identifica ogni richiesta inviata. In seguito, l’applicazione non accetterà nessuna richiesta sprovvista di un token valido, che un eventuale cybercriminale non sarà in grado di falsificare.
- Header http: si possono impostare filtri a livello dei referrer delle richieste inviate dal browser all’applicazione web, così è possibile escludere domini e siti indesiderati.
- Verifica in due passaggi: per sezioni di siti e operazioni importanti, l’ideale è prevedere un secondo livello di sicurezza, ad esempio una OTP (one time password) inviata tramite SMS, un codice PIN aggiuntivo o la compilazione di un CAPTCHA.
Come difendersi dagli attacchi CSRF, lato utente
E noi utenti, che cosa possiamo fare per difenderci da questo tipo di attacchi? Innanzitutto, se guardiamo alla dinamica delle cross site request forgery, notiamo che tutto inizia con un sito o un messaggio di phishing. Affinché questo attacco vada a segno, non solo il sistema finale deve essere vulnerabile ma l’utente deve anche fare clic su un elemento e inviare una richiesta tramite il browser (senza sapere che in realtà è una richiesta ingannevole).
Per questo motivo, la prima misura di sicurezza efficace contro gli attacchi CSRF è fare molta, moltissima attenzione. A questo proposito, segui i nostri consigli di sicurezza sul phishing.
Poi, come abbiamo visto, questi attacchi vanno a segno quando lasciamo aperta la sessione sul sito target. Per i social media sappiamo che non è pensabile inserire ogni volta le credenziali, ma per servizi con dati più critici, come l’app di e-banking o la piattaforma di sviluppo del tuo sito, ti consigliamo vivamente di fare il logout alla fine di ogni utilizzo.
Infine, dato che molti attacchi CSRF si basano sull’inoculazione di malware nel dispositivo della vittima, scarica e installa Panda Dome, il nostro antivirus per Windows e Android, e mantienilo sempre attivo e aggiornato.
Buona navigazione e buona prevenzione degli attacchi CSRF!