OWASP define falsificación de solicitudes entre sitios (CSRF) como
un ataque que obliga a un usuario final a ejecutar acciones no deseadas en una web aplicación en la que se autentican actualmente .
(énfasis mío)
Un ejemplo de ataque es el enlace http://example.com/logout
enviado a un usuario autenticado que, al hacer clic en él, se desconecta. Conseguimos cambiar el estado del sistema (en ese caso, el inicio de sesión del usuario) haciendo que el usuario haga clic en el enlace que le proporcionamos.
Ahora imagine un sistema de votación donde todos puedan votar, sin importar si están autenticados o no. El sistema no realiza un seguimiento de quién votó (lo que obviamente es un problema).
Puedo reproducir sin limitaciones las llamadas HTTP que aumentarán el contador de votación. ¿Enviar ese enlace de reproducción a otra persona que (sin haber iniciado sesión) haga clic en él y aumente el contador de votos se considerará una vulnerabilidad CSRF?
Mi opinión es que esto no es un CSRF porque:
- nos falta la parte "autenticada" de la definición (que sería para la semántica)
- Creo que la intención de esta clasificación era resaltar que un atacante puede hacer que ejecutes comandos que de otro modo no podría hacer (porque necesitas autenticarse). El caso del voto no autenticado arriba es IMO mejor descrito por A4 (Control de acceso roto)