OWASP definisce Cross-Site Request Forgery (CSRF) come
an attack that forces an end user to execute unwanted actions on a web application in which they're currently authenticated.
(sottolineatura mia)
Un esempio di attacco è il collegamento http://example.com/logout
inviato a un utente autenticato che, dopo aver fatto clic su di esso, viene disconnesso. Siamo riusciti a modificare lo stato del sistema (in questo caso, l'accesso dell'utente) facendo clic su un link che gli abbiamo fornito.
Ora immagina un sistema di votazione in cui tutti possano votare, indipendentemente dal fatto che siano autenticati o meno. Il sistema non tiene traccia di chi ha votato (che è ovviamente un problema).
Posso riprodurre senza limitazioni le chiamate HTTP che aumenteranno il contatore delle votazioni. L'invio di tale replay si collega a qualcun altro che farebbe clic su di esso senza effettuare il login e aumentare il contatore delle votazioni come vulnerabilità CSRF?
La mia opinione è che questo è non un CSRF perché:
- ci manca la parte "autenticata" della definizione (che sarebbe per la semantica)
- Credo che l'intento di questa classificazione fosse di evidenziare che un utente malintenzionato può farti eseguire comandi che altrimenti non avrebbe potuto fare (perché devi essere autenticato). Il caso del voto non autenticato sopra è IMO meglio descritto da A4 (Broken Access Control)