La crescente diffusione delle vulnerabilità rende cruciale, più che mai, preservare la sicurezza e la privacy degli utenti.
In particolare, siti web e applicazioni sono esposti a varie minacce informatiche. In questo contesto, concentriamoci su un particolare vettore di attacco: gli attacchi CSRF (Cross-Site Request Forgery). Questi attacchi sono particolarmente insidiosi in quanto possono verificarsi all’insaputa dell’utente e risultano difficili da individuare per sviluppatori e proprietari di siti web, poiché le richieste dannose appaiono molto simili a quelle legittime.

Quest’articolo esplora un attacco CSRF, analizzandone il funzionamento e suggerendo misure preventive essenziali per prepararsi ad affrontare questa minaccia. La consapevolezza e l’implementazione di tali precauzioni sono fondamentali per garantire una navigazione web sicura, proteggendo sia gli utenti che la sicurezza complessiva di siti e applicazioni web.

Attacchi CSRF

Cosa significa attacco CSRF?

L’acronimo CSRF sta per “Cross-Site Request Forgery”, che in italiano si traduce come “falsificazione di richiesta tra siti”.
Infatti, si tratta di un tipo di attacco informatico che sfrutta le credenziali di autenticazione di un utente per eseguire azioni non autorizzate su un’applicazione web a cui l’utente è attualmente autenticato.

In altre parole:

  • Cross-Site (Tra Siti): l’attacco coinvolge due o più domini differenti, ossia il sito web target e il sito da cui proviene la richiesta malevola.
  • Request (Richiesta): la richiesta HTTP che viene fatta al sito web target.
  • Forgery (Falsificazione): l’attaccante falsifica una richiesta HTTP che sembra provenire dall’utente legittimo ma che in realtà è stata iniziata dall’attaccante.

CSRF attack, come sono nati e sviluppati

Gli attacchi Cross-Site Request Forgery (CSRF), sono noti anche come attacchi XSRF o come “one-click attack“, rappresentano una delle minacce alla sicurezza delle applicazioni web più temibili.

La loro storia inizia con l’ascesa delle applicazioni web interattive: man mano che Internet evolve, e con esso la complessità delle interazioni online, si aprivala strada alla nascita di nuove vulnerabilità di sicurezza. I primi attacchi CSRF furono identificati all’inizio degli anni 2000, ma solo verso la metà del decennio hanno iniziato a guadagnare l’attenzione che meritano come problema di sicurezza critico.

Nello specifico, questi attacchi sfruttano il modo in cui i browser web gestiscono le richieste di autenticazione: un utente legittimamente autenticato su un sito può essere indotto, spesso attraverso inganni come link ingannevoli o script nascosti in pagine di terze parti, a eseguire azioni non intenzionali su un altro sito dove è già autenticato.

L’evoluzione di queste minacce è andata di pari passo con lo sviluppo di misure di sicurezza più sofisticate, spingendo gli attaccanti a ideare metodi sempre più strutturati per bypassarle.

Oggi, gli attacchi CSRF continuano ad essere una minaccia significativa, con gli attaccanti che sfruttano ogni lacuna nelle politiche di sicurezza e nelle pratiche di sviluppo. La loro continua evoluzione testimonia la necessità di approcci di sicurezza robusti e dinamici, capaci di adattarsi tanto rapidamente quanto le tecniche degli avversari. La storia degli attacchi CSRF è un promemoria costante che la sicurezza non è mai un obiettivo raggiunto definitivamente, ma un processo continuo di miglioramento e adattamento.

Come funziona un CSRF attack

Un CSRF attack (Cross-Site Request Forgery) è un vettore di attacco che manipola il meccanismo di autenticazione implicita dei browser per eseguire azioni non autorizzate su un’applicazione web dove la vittima ha precedentemente stabilito una sessione autenticata.
Ecco come funziona un attacco CSRF in linea di massima:

  1. Il processo inizia quando l’utente che si autentica su un sito web legittimo, per esempio una banca online e il suo browser riceve un cookie di sessione.
    Questo cookie è una sorta di “biglietto d’ingresso” che permette all’utente di eseguire operazioni sensibili senza doversi ri-autenticare a ogni click.
  2. Successivamente, l’utente visita un altro sito web infetto o clicca su un link malevolo (questo potrebbe essere camuffato in un’email di phishing, ad esempio) che contiene un codice o una richiesta preparata dall’attaccante.

infografica cross site request forgeries

3. Questo sito infetto invia una richiesta al sito web legittimo (dove l’utente ha la sessione attiva) usando il browser dell’utente. Poiché il browser è già autenticato nel sito legittimo, esso esegue la richiesta come se fosse stata iniziata dall’utente legittimo.

4. Il sito web legittimo riceve la richiesta ingannevole, la considera valida perché proveniente dal browser dell’utente autenticato e quindi esegue l’azione richiesta. L’utente, inconsapevole, ha inavvertitamente permesso all’attaccante di compiere un’azione in suo nome.

Come mitigare un CSRF attack?

Esistono diverse strategie per prevenire e ridurre notevolmente gli effetti di un attacco CSRF sul vostro sito o sulla vostra applicazione web, tra le quali:

Utilizzo di Token CSRF

Un sito web che desidera proteggersi dagli attacchi CSRF assegna un token unico a ciascuna sessione e lo condivide con il server e il browser del client. Ogni volta che un browser invia una richiesta sensibile, il server richiede che questa contenga il token CSRF corrispondente. Se il token è assente o errato, il server rifiuta la richiesta. È importante notare che il token CSRF non è conservato nei cookie di sessione del browser per motivi di sicurezza.

Tuttavia, i token CSRF, sebbene efficaci, possono presentare alcune vulnerabilità, tra cui:

  • Bypass della validazione: non viene verificata la presenza del token CSRF, permettendo agli aggressori di eseguire attacchi CSRF rimuovendo il token dalla richiesta.
  • Token in pool: l’utilizzo di un pool di token per convalidare le sessioni degli utenti, anziché assegnare token specifici a ciascuna sessione, potrebbe permettere agli aggressori di acquisire uno qualsiasi dei token dal pool e di assumere l’identità di qualsiasi utente del sito.
  • CSRF tramite cookie: alcune applicazioni copiano il token CSRF nei cookie degli utenti, consentendo agli aggressori di creare un nuovo cookie contenente il token e di eseguire un attacco CSRF.
  • Token non validi: il mancato collegamento dei token CSRF alle sessioni degli utenti, consentendo agli aggressori di ottenere un token simile e di eseguire attacchi CSRF su sessioni vittime.

Utilizzo dell’intestazione Referrer

Un’altra strategia per prevenire i CSRF attack consiste nell’utilizzare l’intestazione Referrer.
Nell’HTTP, questa intestazione indica l’origine delle richieste ed è spesso utilizzata per analisi, ottimizzazioni e registrazione.

Attivando il controllo delle intestazioni Referrer sul lato server, è possibile impedire gli attacchi CSRF. Il server verifica l’origine e la destinazione della richiesta, consentendo solo le richieste che corrispondono. Tuttavia, questa strategia presenta anche alcune vulnerabilità:

  • Alcuni siti inviano richieste senza intestazioni Referrer. Se un’applicazione CSRF non gestisce correttamente queste richieste, gli aggressori possono sfruttarle per eseguire attacchi con cambio di stato.
  • Con l’introduzione del criterio del Referrer, la validità di questa strategia è stata ridotta. Questo criterio impedisce la divulgazione degli URL tra domini diversi, consentendo agli utenti di controllare le informazioni presenti nell’intestazione Referrer.

Verifica regolare delle vulnerabilità

Eseguire verifiche e test di sicurezza regolari per identificare e mitigare potenziali vulnerabilità CSRF.