¿Cómo protege ViewState contra CSRF?

2

De acuerdo con OWASP CSRF Cheat Sheet viewStateUserKey para ASP.NET ViewState es aceptable para prevenir ataques csrf, pero realmente no entiendo cómo. Entiendo que esto hace que sea difícil para un atacante modificar el estado de vista, ya que básicamente tendrían que conocer el ID de sesión del usuario, pero los parámetros de publicación de un formulario no se almacenan en el estado de la sesión, por lo que no es necesario modificar eso en su ataque .

¿El concepto general se basa en el hecho de que es difícil obtener un estado de visualización válido para empezar, o me falta algo?

¿Se considera esto realmente como una técnica válida para prevenir csrf?

    
pregunta Jarrod Everett 23.08.2012 - 21:14
fuente

2 respuestas

4

Si habilita ViewStateUserKey, entonces el servidor protegerá la integridad del estado de la vista agregando una suma de comprobación aleatoria e indiscutible. Esta suma de control actúa como un token CSRF aleatorio.

En particular, ViewStateUserKey calculará un Código de autenticación de mensaje (MAC) en los campos de estado de la vista. Un MAC es como una suma de comprobación codificada de los datos, donde la clave solo la conoce el servidor. Debido a que el atacante no conoce la clave, no puede generar una suma de comprobación válida (resumen de MAC) para algún otro valor de parámetros de estado de vista.

Si usa un ViewStateUserKey, entonces la clave utilizada es específica para el usuario en particular. Esto significa que un atacante malintencionado Mandy no puede aprender un valor válido del resumen MAC para el usuario Bob. Mandy no puede adivinarlo, porque un algoritmo de MAC está diseñado para evitar adivinar el resumen de MAC. Mandy no puede aprenderlo contactando con el servidor, porque si se conecta al servidor, el servidor usará su clave criptográfica, no la clave de Bob, por lo que el resumen de MAC que se envía a Mandy no estará relacionado con el que se usó para Bob.

En efecto, el resumen de MAC actúa como una cadena aleatoria de 128 bits que el atacante no puede adivinar. Esto es lo que previene CSRF. Las defensas CSRF estándar incluyen la inclusión de una cadena aleatoria en los parámetros de la solicitud (aleatoria, de modo que el atacante no pueda predecirla). Con un ViewStateUserKey, el resumen de MAC actúa como una cadena aleatoria.

Vea también Microsoft en el estado de seguridad de la vista y ¿ASP.NET Viewstate previene implícitamente los ataques CSRF? ¿Qué significa esto para MVC? .

    
respondido por el D.W. 24.08.2012 - 05:48
fuente
3

Tal como lo entiendo, el punto de vista de ViewStateUserKey es que garantiza que ViewState sea específico para un usuario determinado. Como ViewState es un campo oculto que debe enviarse como parte de un formulario similar a la mayoría de los tokens de defensa CSRF, si el atacante no puede predecir su valor, será difícil para él ejecutar un ataque exitoso.

Debe tenerse en cuenta que debe usarse junto con ViewStateMAC para que esto funcione (como se señaló aquí) ya que eso es lo que verifica la aplicación en la devolución de datos.

    
respondido por el Rоry McCune 23.08.2012 - 22:25
fuente

Lea otras preguntas en las etiquetas