Protección inherente de.NET contra CSRF

December 7, 2013
Pentestes

Protección CSRF en.NET — ViewStateUserKey

La falsificación de solicitudes entre sitios es uno de los ataques más frecuentes en Internet en la actualidad. A los atacantes les resulta fácil explotarlo, ya que no requiere ninguna información de autenticación, sino que utiliza cookies de sesión, sino que solo requiere que el usuario se autentique en la aplicación. Y esto funciona en todas las plataformas. No importa el tipo de autenticación que utilice la aplicación, la autenticación de ventanas o formularios. Supongamos que el atacante aloja una página en algún servidor X que ejecuta funciones críticas de la aplicación; un atacante que conoce la aplicación engaña a la víctima para que visite la página mediante ataques de suplantación de identidad, uso indebido del correo electrónico, errores de redireccionamiento, etc. La acción se ejecuta en segundo plano sin que la víctima lo sepa, utilizando el estado de sesión del usuario que ha iniciado sesión.

.NET 3.5 Framework tiene una funcionalidad integrada para prevenir el ataque CSRF. El marco tiene la propiedad ViewStateUserKey en el ensamblaje system.web que corrige parcialmente el problema. Sin embargo, esto no hace que la aplicación sea completamente segura contra el ataque CSRF si se usa sola. Esto es solo una parte del concepto de defensa en profundidad.

ViewStateUserKey asigna un valor aleatorio a la página de visita actual de un usuario individual. El valor aleatorio se asigna en un parámetro ViewState, que debe estar habilitado en una aplicación. Este valor aleatorio puede ser la cookie de autenticación, el identificador de sesión o cualquier token aleatorio. Un buen enfoque es establecer dos variables en la autenticación, es decir, la primera en viewstate, la segunda en el lado del servidor y, a continuación, eliminar la primera variable de viewstate después de una autenticación exitosa. Ahora, antes de enviar la página de funcionalidad crítica al cliente, defina la primera variable de la solicitud y compárela con la variable del lado del servidor como respuesta. Si coincide, procese la solicitud; de lo contrario, descarte la solicitud. Asegúrese de que la primera variable esté oculta.

Se recomienda utilizar el modo de cifrado viewstate junto con el método viewStateUserKey.

Más soluciones para CSRF:

  • Compruebe el campo Referer del dominio junto con la implementación mencionada anteriormente.
  • Agregue un token de página único y aleatorio a cada formulario. Este token debe cambiar en cada envío de formularios, por ejemplo, el token X es para agregar usuarios, el token X cambia a Y para actualizar usuarios, etc.

Share this post
Seguridad de Wordpress
Análisis de malware
Herramientas y técnicas
Pentestes
PTAAS
Suscríbase a nuestro boletín

Suscríbase a nuestro boletín hoy mismo y mejore sus conocimientos con información valiosa. ¡Es rápido, fácil y gratuito!

Be a Team Player
¡Gracias! ¡Su presentación ha sido recibida!
¡Uy! Algo salió mal al enviar el formulario.
Latest blogs

Latest updates in cybersecurity services

View All
Blacklock Blog Image