CRF
Come funziona il CSRF?
Una vulnerabilità CSRF consente a un utente malintenzionato di sfruttare la fiducia tra il browser Web di un utente e un server. L'aggressore mira a manipolare un utente autenticato affinché esegua azioni che l'utente non intendeva. Ciò si ottiene incorporando codice dannoso in un sito Web o in un'e-mail apparentemente innocui.
In un attacco CSRF riuscito, l'aggressore può cambiare le password, alterare le informazioni personali o persino eseguire transazioni se la vittima dispone di privilegi sufficienti. Se la vittima ricopre un ruolo amministrativo, l'intera applicazione web potrebbe essere a rischio, consentendo all'aggressore di compromettere l'integrità e la sicurezza del sistema.
Scenari CSRF nel mondo reale
- Scenario normale: implementazione CSRF sicura Considera uno scenario in cui accedi al tuo sito web bancario. Il sito Web utilizza i token CSRF per proteggere le azioni degli utenti. Quando invii un modulo per trasferire fondi, la richiesta include un token CSRF univoco che il server convalida prima di elaborare l'azione. Questo token garantisce che la richiesta sia legittima e avviata da te, proteggendo il tuo account da transazioni non autorizzate.
- Scenario vulnerabile: implementazione CSRF non sicura Immagina lo stesso sito web bancario senza un'adeguata protezione CSRF. Un utente malintenzionato crea un sito dannoso con un modulo nascosto che invia una richiesta di trasferimento di fondi al server della banca. Quando visiti questo sito dannoso mentre sei connesso al tuo conto bancario, il modulo nascosto viene inviato automaticamente, trasferendo fondi senza il tuo consenso. Il server elabora la richiesta come se fosse legittima, poiché non sono presenti token CSRF per convalidarne l'autenticità.
Esempi di vulnerabilità CSRF
Scenario di richiesta normale: Quando modifichi il tuo indirizzo email sul sito, il tuo browser invia una richiesta come questa:
Quando modifichi il tuo indirizzo email sul sito, il tuo browser invia una richiesta come questa:
POST /change-email HTTP/1.1
Gestore: my-secure-site.com
Origine:
https
http://my-secure-site.com
Tipo di contenuto: application/x-www-form-urlencoded
e-mail= new-email@example.com
Gestore: my-secure-site.com
Origine:
Tipo di contenuto: application/x-www-form-urlencoded
e-mail= new-email@example.com
Il server elabora questa richiesta perché proviene dalla stessa origine, my-secure-site.com.
Il server elabora questa richiesta perché proviene dalla stessa origine, my-secure-site.com.
Scenario di richiesta vulnerabile: Consideriamo ora che un utente malintenzionato configura un sito dannoso con il dominio malicious-site.com. Quando visiti questo sito, invia una richiesta di modifica del tuo indirizzo email su my-secure-site.com:
POST /change-email HTTP/1.1
Gestore: my-secure-site.com
Origine: https://malicious-site.com
Tipo di contenuto: application/x-www-form-urlencoded
e-mail= attacker-email@example.com
Gestore: my-secure-site.com
Origine: https://malicious-site.com
Tipo di contenuto: application/x-www-form-urlencoded
e-mail= attacker-email@example.com
Senza un'adeguata protezione CSRF, my-secure-site.com elabora questa richiesta ritenendola legittima. L'indirizzo email dell'aggressore sostituisce il tuo indirizzo email, compromettendo il tuo account.
Impatti del CSRF
In un attacco CSRF riuscito, le conseguenze possono essere gravi:
- Azioni non autorizzate: Gli aggressori possono eseguire azioni per conto di utenti autenticati, come modificare i dettagli dell'account o effettuare transazioni finanziarie.
- Manipolazione dei dati: I dati sensibili possono essere modificati o eliminati senza il consenso dell'utente, portando potenzialmente a violazioni dei dati.
- Compromissione dell'account: Se un utente malintenzionato ottiene l'accesso a un account con privilegi elevati, può sfruttare le funzionalità e i dati dell'intera applicazione.
Mitigazione delle vulnerabilità del CSRF
Per prevenire gli attacchi CSRF, implementa le seguenti misure di sicurezza:
Usa i token CSRF Implementa i token CSRF nei tuoi moduli e richieste. Questi token sono valori univoci generati sul lato server e inviati al client. Ogni richiesta successiva deve includere il token CSRF, che il server convalida prima dell'elaborazione. Ciò garantisce che la richiesta sia legittima.
Esempio di implementazione del token CSRF:
<form action="/update-profile" method="POST">
<input type="hidden" name="csrf_token" value="randomly_generated_token">
<input type="text" name="email" placeholder="Enter new email">
<button type="submit">Aggiorna email</button>
</form>
<input type="hidden" name="csrf_token" value="randomly_generated_token">
<input type="text" name="email" placeholder="Enter new email">
<button type="submit">Aggiorna email</button>
</form>
Usa l'attributo SameSite sui cookie L'attributo SameSite può essere impostato sui cookie per impedirne l'invio insieme alle richieste tra siti. Questo attributo aiuta a mitigare il CSRF garantendo che i cookie vengano inviati solo quando le richieste provengono dallo stesso sito.
Esempio di impostazione dei cookie SameSite:
Set-Cookie: sessionId=ABC123; sameSite=Strict; Sicuro; HttpOnly
Impostazione sameSite=Rigoroso
garantisce che i cookie vengano inviati solo in contesti proprietari, impedendo efficacemente alle richieste tra siti di includere questi cookie.
Conclusione
Le vulnerabilità CSRF possono avere gravi conseguenze, consentendo agli aggressori di eseguire azioni non autorizzate per conto di utenti autenticati. Implementando i token CSRF e utilizzando l'attributo SameSite sui cookie, è possibile ridurre significativamente il rischio di attacchi CSRF. Queste misure preventive assicurano che vengano elaborate solo le richieste legittime, proteggendo i dati degli utenti e mantenendo l'integrità delle applicazioni web.
Pronti a vedere di persona?
Prova tu stesso tutte le funzionalità della piattaforma. Nessun impegno e nessuna carta di credito!

