Red Hot Cyber

Sicurezza informatica, cybercrime, hack
news, e altro ancora
  • English

Cosa è il cross-site request forgery (CSRF)

Autore: Damiano Capo

Data Pubblicazione: 31/01/2022

Il Cross Site Request Forgery, o più semplicemente CSRF, è una vulnerabilità che affligge i siti web dinamici quando sono implementati per ricevere richieste da un client senza meccanismi di controllo sull’intenzionalità della richiesta.

A differenza del Cross Site Scripting (XSS) che sfrutta la fiducia di un utente in un particolare sito, il CSRF sfrutta la fiducia di un sito nel browser di un utente.

Advertisements

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 è sfruttabile 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 Facebook 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.

Advertisements

Il problema si presenta quando un’attaccante 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.

Scenario di attacco

Ecco come si svolge un attacco cross site request al conto bancario online di un’utente:

  1. Mario Rossi, il nostro utente fittizio, si collega a Banca.com per consultare il saldo del suo conto.
  2. Mario NON fa il logout su Banca.com e chiude la scheda del browser. La sessione sul sito di e-banking è ancora attiva.
  3. Mario 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.
  4. 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.

Advertisements



Figure 1: Scenario di un CSRF

Cybersecurity 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:

  1. 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.
  2. 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.
  3. 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.

Advertisements

Mitigazione 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).

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.

Advertisements