Por lo que he aprendido hasta ahora, el propósito de los tokens es evitar que un atacante falsifique el envío de un formulario.
Por ejemplo, si un sitio web tenía un formulario que ingresaba artículos agregados a su carrito de compras, y un atacante podría enviar spam a su carrito de compras con artículos que no desea.
Esto tiene sentido porque podría haber múltiples entradas válidas para el formulario de carrito de compras, todo lo que el atacante tendría que hacer es conocer un artículo que el sitio web está vendiendo.
Entiendo cómo funcionan los tokens y agrego seguridad en este caso, porque aseguran que el usuario haya completado y presionado el botón "Enviar" del formulario para cada artículo agregado al carrito.
Sin embargo, ¿los tokens agregan seguridad a un formulario de inicio de sesión de usuario, que requiere un nombre de usuario y contraseña?
Dado que el nombre de usuario y la contraseña son muy únicos, el atacante tendría que saber ambos para que la falsificación de inicio de sesión funcione (incluso si no tenía la configuración de tokens), y si un atacante ya lo sabía, podría iniciar sesión en el sitio web él mismo. Sin mencionar que un ataque CSRF que hace que el usuario inicie sesión no tendría ningún propósito práctico de todos modos.
¿Es correcto mi comprensión de los ataques y tokens CSRF? ¿Y son inútiles para los formularios de inicio de sesión de usuario como sospecho?
Respuestas:
Si. En general, debe proteger sus formularios de inicio de sesión de los ataques CSRF como cualquier otro.
De lo contrario, su sitio es vulnerable a una especie de ataque de "phishing de dominio de confianza". En resumen, una página de inicio de sesión vulnerable a CSRF permite a un atacante compartir una cuenta de usuario con la víctima.
La vulnerabilidad se desarrolla así:
Como un ejemplo pertinente, considere YouTube . YouTube permitió a los usuarios ver un registro de "su propio" historial de visualización, ¡y su formulario de inicio de sesión era vulnerable a CSRF! Como resultado, un atacante podría configurar una cuenta con una contraseña que conociera, registrar a la víctima en YouTube usando esa cuenta, acosando qué videos estaba viendo la víctima.
Hay una discusión en este hilo de comentarios que implica que "solo" podría usarse para violaciones de privacidad como esa. Quizás, pero para citar la sección en el artículo CSRF de Wikipedia :
Énfasis en "nuevos ataques". ¡Imagine el impacto de un ataque de phishing contra sus usuarios, y luego imagine que dicho ataque de phishing funciona a través del marcador de confianza del usuario en su sitio! El documento vinculado en el hilo de comentarios antes mencionado ofrece varios ejemplos que van más allá de los simples ataques a la privacidad.
fuente
http://good.com/login.html
en un cliente, analizar el token CSRF anidado y luego publicarlohttp://bad.com/login.html
que contenga un formulario modificado que envíe su nombre de usuario, contraseña y token independientemente de lo que escriba la víctima. CORS no se aplica porque usted ' Tengo dos clientes separados: el atacante y la víctima. Entonces, para reiterar la pregunta: ¿la protección CSRF realmente funciona para los formularios de inicio de sesión?Su comprensión es correcta: el objetivo de CSRF es que el atacante puede falsificar una solicitud de apariencia legítima de antemano. Pero esto no se puede hacer con un formulario de inicio de sesión a menos que el atacante conozca el nombre de usuario y la contraseña de la víctima, en cuyo caso hay formas más eficientes de atacar (inicie sesión usted mismo).
En última instancia, lo único que puede hacer un atacante es incomodar a sus usuarios enviando spam por inicios de sesión fallidos, cuando el sistema de seguridad puede bloquear al usuario por un período de tiempo.
fuente
Sí , ¡otros sitios web no pueden imitar su formulario de inicio de sesión! Tan sencillo como eso.
¿Qué pueden lograr al hacerlo?
n
no. de veces, se puede evitar.fuente
El inicio de sesión previo de validación CSRF no tiene demasiado sentido en mi humilde opinión.
Gracias a @squiddle por el enlace: seclab.stanford.edu/websec/csrf/csrf.pdf , podemos leer en la primera página:
Si intenta la validación CSRF antes del inicio de sesión, ¡entonces le da a un atacante potencial la oportunidad de raspar un código válido de su sitio web! Él / ella sería capaz de volver a publicar el token para derrotar el propósito.
Quizás un atacante pueda intentar adivinar un nombre de usuario de su sitio. Lo que he hecho, si la dirección IP intenta adivinar 10 nombres de usuario sin éxito, simplemente lo incluyo en la lista negra.
fuente