Cross Site Request Forgery (CSRF, anche XSRF o Session Riding) e un attacco web che costringe un utente autenticato a eseguire un azione indesiderata su un applicazione dove ha sessione aperta. L attaccante prepara un link, un immagine o un form malevolo su un sito che controlla. Quando la vittima visita quella pagina mentre e ancora loggata sul sito bersaglio (online banking, admin WordPress, webmail), il browser invia automaticamente la richiesta con il cookie di sessione valido. Il server non distingue la falsa dalla vera e la esegue. CSRF era al 5 posto nell OWASP Top 10 del 2007 e 2010, e uscito dalla Top 10 nel 2017 grazie alle difese nei framework, e nell OWASP Top 10 2021 e dentro A01 Broken Access Control. Il worm Samy su MySpace (ottobre 2005, oltre 1 milione di profili infetti in 20 ore) e l incidente CSRF piu celebre della storia.
Come funziona un attacco CSRF?
- La vittima e loggata sul bersaglio.
- Il bersaglio esegue azioni di stato basate solo sui cookie.
- La vittima visita una pagina controllata dall attaccante.
<img src="https://banca.example.it/bonifico?a=ATTACCANTE&importo=10000">Obiettivi tipici
- Banche e pagamenti.
- Webmail.
- Pannelli admin.
- Social network (worm Samy).
- E-commerce.
- Router e IoT.
CSRF vs XSS
| Proprieta | CSRF | XSS |
|---|---|---|
| Effetto | Forza invio richiesta | Esegue JS dell attaccante |
| Codice sul bersaglio | No | Si |
| Legge risposta | No | Si |
| Aggira token CSRF | No | Si |
| Difesa principale | Token, SameSite | Encoding, CSP |
Difese standard
- Token anti CSRF (synchronizer token).
- Cookie SameSite (default Chrome da febbraio 2020).
- Double submit cookie.
- Verifica Origin e Referer.
- Header custom per AJAX.
- Riautenticazione per azioni critiche.
- POST invece di GET per modifiche.
Protezione WordPress
WordPress usa i Nonces. Funzioni: wp_nonce_field(), wp_create_nonce(), check_admin_referer(), check_ajax_referer(). Durata 24 ore.
SPA e REST API
SameSite=Strictsul cookie di sessione.- Header
X-CSRF-Tokena ogni chiamata. - JWT in
Authorization: Bearerelimina CSRF ma aumenta rischio XSS.
Incidenti reali
- Worm Samy MySpace, ottobre 2005.
- YouTube 2008, Netflix 2006.
- Plugin WordPress nel 2024 (Forminator, LiteSpeed Cache).
- Router domestici (studio 2018, oltre 70 percento vulnerabili).
Come InspectWP aiuta?
InspectWP analizza gli header Set-Cookie e segnala gli attributi SameSite e Secure.