Sommario
Che cos'è il cross site request forgery (CSRF)?
Il Cross-site request forgery, spesso abbreviato come CSRF, è un possibile attacco che può verificarsi quando un sito web, blog, messaggio email, messaggio istantaneo o applicazione web malevola induce il browser web di un utente a eseguire un'azione indesiderata su un sito fidato presso il quale l'utente è attualmente autenticato.
L'impatto di un attacco CSRF è determinato dalle capacità esposte all'interno dell'applicazione vulnerabile. Gli attacchi CSRF sono, al livello più basilare, utilizzati da un attaccante per far eseguire al sistema bersaglio qualsiasi funzione disponibile e malevola tramite il browser del bersaglio senza che l'utente bersaglio ne sia a conoscenza. Questa funzione di solito non è conosciuta dalla vittima fino a quando non si è verificata.
Una vulnerabilità CSRF può dare a un attaccante la capacità di costringere un utente autenticato e connesso a eseguire un'azione importante senza il suo consenso o conoscenza. È l'equivalente digitale di qualcuno che falsifica la firma di una vittima su un documento importante. È infatti più efficace, perché l'attaccante non lascia traccia di prove. Questo perché la richiesta falsificata contiene tutte le informazioni e proviene dallo stesso indirizzo IP di una richiesta reale della vittima. Ciò significa che qualsiasi applicazione che consente a un utente di inviare o aggiornare dati è un possibile bersaglio per un attaccante.
Una cosa importante da ricordare è che per funzionare, il CSRF richiede che la vittima sia connessa al sito bersaglio. Sebbene questo possa sembrare un ostacolo per l'attaccante, molti siti web consentono all'utente di scegliere di "mantenermi connesso". Questo aumenta notevolmente la dimensione del periodo di tempo in cui può essere effettuata una falsificazione.
Possibili usi malevoli del CSRF
L'obiettivo più comune di un CSRF è il furto — sia di dati, di identità o finanziario. Alcuni usi comuni del CSRF includono:
- Trasferire denaro da un conto bancario a un altro. La tua sessione online presso la tua banca viene compromessa e tratta questo come una richiesta legittima e invia $1000 dal tuo conto al conto di Mallory. Tutte le prove suggeriscono che hai effettuato legittimamente questa transazione dal tuo browser connesso.
- Utilizzare un sistema di gestione dei contenuti per aggiungere/eliminare contenuti da un sito web. Se la vittima è un utente amministrativo, l'intero sito web sarebbe sotto il controllo dell'attaccante.
- Cambiare la password di un utente. Se una vittima è connessa al proprio account, l'attaccante può semplicemente falsificare una richiesta di cambio email. Una volta che questo passa, se l'attaccante può falsificare una richiesta di reset della password, l'attaccante potrebbe successivamente ottenere il pieno controllo dell'account della vittima.
- Aggiungere articoli al carrello di un utente o cambiare l'indirizzo di consegna di un ordine. Molti siti web hanno una pagina "il mio account" o altre pagine simili che memorizzano le informazioni di un utente e spesso consentono a un utente di cambiare il proprio indirizzo o regolare il carrello. Con il CSRF, un attaccante può modificare queste informazioni e al sito web sembrerà che la vittima sia l'origine di tutte le modifiche.
Prevenire le vulnerabilità CSRF
Ci sono due metodi principali con cui il Cross-site Request Forgery può essere prevenuto.
- Impedire al browser di inviare cookie di terze parti all'applicazione web.
- Sincronizzare il cookie con un token anti-CSRF che è già stato fornito al browser.
- Richiedere una "risposta di sfida", che è spesso utilizzata in combinazione con le altre due tecniche di prevenzione disponibili.
Tecnica #1: cookie same-site
L'attributo cookie same-site è un attributo di nuova concezione che può essere impostato sui cookie per istruire il browser a disabilitare l'uso di terze parti per cookie specifici. Questo attributo è impostato dal server mentre allo stesso tempo imposta il cookie stesso e richiede al browser di inviare il cookie solo in un contesto di prima parte. Per questo motivo, la richiesta deve provenire dalla stessa posizione. Pertanto, le richieste effettuate da siti di terze parti non possono includere il cookie same-site. Questo elimina efficacemente il CSRF senza richiedere l'uso di token di sincronizzazione. L'unico svantaggio è che i cookie same-site sono disponibili solo in alcuni browser moderni.
Tecnica #2: token anti-CSRF
Il metodo di prevenzione raccomandato e più ampiamente adottato per il cross-site request forgery è un token anti-CSRF, altrimenti noto come token di sincronizzazione. Quando un utente invia informazioni o interagisce con il sito, o fa qualsiasi altra cosa che genera un cookie, il token anti-CSRF dovrebbe essere incluso anche nella richiesta del cookie. Questa richiesta viene quindi eseguita attraverso un processo di verifica, in cui l'autenticità o anche l'esistenza di questo token viene verificata prima di elaborare la richiesta. Se il token è mancante o errato, la richiesta può essere respinta.
Per garantire la qualità della protezione con i token anti-CSRF, è essenziale che la libreria di token conosciuti sia regolarmente aggiornata per corrispondere alle minacce esistenti. Molte di queste librerie sono open source e facilmente accessibili. In un mondo perfetto, entrambi i metodi sarebbero combinati per aiutare a difendersi da un attacco CSRF.
Tecnica #3: risposta di sfida
Come ulteriore livello di protezione, puoi richiedere una risposta di sfida da un utente quando viene inviato un modulo. Alcuni esempi di risposte di sfida includono:
- Riautenticazione della password o delle informazioni personali
- Validazione CAPTCHA
- Emettere un token monouso
Sebbene la risposta di sfida possa essere un deterrente efficace contro il CSRF quando progettata e implementata correttamente, ha un impatto sull'esperienza utente. Per le applicazioni che necessitano di alta sicurezza, dovrebbero essere utilizzati sia i token che la risposta di sfida per garantire la sicurezza.
Perché il CSRF è importante
Gli attacchi CSRF possono essere utilizzati su un'enorme gamma di siti. Se un sito consente di modificare i dati sul lato utente, allora è un potenziale bersaglio per un attaccante. Con alcune delle correzioni elencate sopra, il tuo sito web può garantire un livello di sicurezza molto più elevato su una vasta gamma di siti. Qualsiasi sito in cui i dati possono essere modificati è un potenziale bersaglio.
L'impatto di un attacco CSRF riuscito può variare notevolmente a seconda dei privilegi della vittima. Se il bersaglio è un utente base, tutto, dalle informazioni personali ai privilegi del sito, può essere compromesso. Sebbene sembri grave, se un account amministratore viene compromesso, un attacco può paralizzare l'intero sito. Questo mostra la portata di un possibile attacco e perché la protezione CSRF è una parte essenziale di qualsiasi pacchetto di sicurezza web.
Scopri di più sul CSRF
Ulteriori letture
- Guida rapida alla prevenzione del Cross-Site Request Forgery (CSRF)
- Wikipedia: Cross-Site Request Forgery
In che modo Barracuda può essere di aiuto
Il Barracuda Web Application Firewall protegge automaticamente il tuo sito web e le applicazioni web dagli attacchi CSRF insieme a migliaia di altre minacce informatiche, incluse le minacce OWASP Top 10. Se non hai ancora un firewall per applicazioni web, puoi richiedere una prova gratuita da Barracuda. Puoi anche utilizzare il Barracuda Vulnerability Manager per fare una scansione gratuita del tuo sito web per verificare se è vulnerabile a un attacco CSRF.
Oltre a fornire protezione basata su firewall, Barracuda offre anche protezione CSRF nel nostro prodotto Barracuda Load Balancer ADC. Il load balancer è un Application Delivery Controller sicuro progettato per garantire disponibilità, accelerazione e controllo del sito web. Gli aggiornamenti automatici garantiscono una sicurezza completa per le minacce di Layer 7 esistenti ed emergenti, come cross-site scripting, iniezioni SQL e cross-site request forgery.
Hai altre domande sul Cross Site Request Forgery? Contattaci oggi.