¿Debería la técnica 'Double Submit Cookie' de CSRF tener un valor semilla diferente para la cookie en comparación con la POST de HTTP?

1

Estoy leyendo sobre OWASP doble submit cookies método de protección y allí indica que el valor de la cookie entre el encabezado y la forma debe coincidir.

Eso parece ser un riesgo, como lo indica el artículo, ya que el DOM & puede acceder al valor incluido en el formulario. Javascript.

¿No sería más seguro tener un valor de semilla diferente para la cookie y el valor incorporado HTTP POST, de modo que un script malicioso no pueda inferir el valor de la cookie

El AntiForgeryToken de ASP.NET es un ejemplo de una cookie de envío doble. No me queda claro si ese token usa el mismo valor para la cookie que para el formulario.

    
pregunta random65537 09.02.2011 - 16:57
fuente

2 respuestas

3

Algunos puntos de nota:

  • No utilice cookies de doble envío, como dijo y como dice el artículo, esto no es muy seguro y lo abre a otros ataques.
  • "a differently seeded value for the cookie and the HTTP POST embedded value" : sí, este enfoque es muy preferido, pero esto es no una cookie de doble envío: se refiere a lo que se conoce como token de formulario.
  • El uso de tokens de formulario solía ser más problemático, ya que era difícil hacerlo bien y evitar los errores sutiles que invalidan la solución. Hoy en día, hay muy buenos paquetes que hacen esto por usted, como CSRFGuard de OWASP . También se incorporan mecanismos similares en muchos marcos, incluido ASP.NET.
  • Como mencioné, el AntiForgeryToken de ASP.NET (en realidad, es MVC de ASP.NET ...) se basa en tokens de formulario y no envía cookies de forma doble. Lo cual, como se mencionó, no es seguro.
  • ASP.NET también incluye protección basada en ViewState cuando se usa el atributo UserKey.
  • Muchos otros marcos modernos también tienen alguna protección integrada, incluidos Spring, RoR, etc.
  • Otra alternativa, que podría o no ser relevante, es la re-autenticación del usuario, para acciones específicas. P.ej. antes de transferir una gran cantidad de dinero a un tercero desde su cuenta bancaria, o autorizar conexiones en LinkedIn.
  • No utilice cookies de doble envío.
respondido por el AviD 09.02.2011 - 17:59
fuente
1

Creo que tiene razón en que proporcionaría una mayor protección si la cookie y la forma tuvieran valores diferentes. La desventaja es que, en lugar de solo verificar si el valor de la cookie coincide con el valor del formulario, ahora debe hacer un seguimiento de qué valor de la cookie coincide con cada valor del formulario. Además, como indica la documentación de OWASP, todo esto se basa en que el navegador aplique correctamente la política del mismo origen ( que puede ser más complicado de lo que parece ), así como una generación de valor pseudoaleatoria adecuada (impredecible).

    
respondido por el Eugene Kogan 09.02.2011 - 17:44
fuente

Lea otras preguntas en las etiquetas