¿Cuál es la solución rápida para el ataque CSRF?

4

La aplicación está construida en lenguaje Java y framework JSF. He informado de un ataque CSRF y el equipo de desarrollo tiene que solucionarlo pronto ya que la aplicación está en producción.

Recomendé usar tokens CSRF pero el equipo de desarrollo dice que la implementación puede demorar un poco.

¿Puede alguno de ustedes sugerir una forma mejor y más rápida de remediar CSRF? Si es una solución temporal por ahora, eso también está bien. Más adelante, implementarán los tokens CSRF adecuados en el código en un tiempo razonable.

    
pregunta Ekalavya 10.05.2018 - 13:34
fuente

3 respuestas

4

Una solución rápida contra CSRF es verificar el encabezado HTTP Referer y / o Origin . Al menos uno de estos debe configurarse y el dominio que contiene debe ser su dominio (es decir, el mismo origen).

Tenga en cuenta que esto interrumpirá los casos en los que se accede a su sitio desde un marcador, un enlace dentro de un correo o similar, ya que en este caso no se enviará Referer . Pero en ningún caso, simplemente debe aceptar un Referer vacío (a menos que tenga un encabezado Origin no vacío) ya que es fácil de crear para un atacante.

También debe asegurarse de que sus comprobaciones para el dominio sean correctas. Esto es, si su sitio es www.example.com , no debe aceptar Referer como http://www.example.com.attacker.com o http://www.attacker.com/www.example.com o http://www-example.com .

También debe asegurarse de que el atacante no pueda usar otras funciones (o errores) en su aplicación como trampolín para crear una solicitud personalizada con carga maliciosa pero con el mismo origen Referer . Como Arminius bien señalado en un comentario, los redireccionamientos abiertos pueden ser un trampolín. Por lo tanto, debe asegurarse de que todas las solicitudes al dominio tengan un Referer del mismo origen o que las partes que puedan necesitar aceptar un Referer de origen cruzado no se puedan utilizar como trampolín.

Para obtener más información acerca de este método de protección contra CSRF y sobre sus problemas potenciales, consulte en Forgery de solicitud de sitios cruzados (CSRF) Prevention Cheat Sheet de OWASP.

    
respondido por el Steffen Ullrich 10.05.2018 - 13:51
fuente
1

Otra posibilidad es usar las cookies del mismo sitio ( SameSite=Strict; ). Esencialmente, este atributo, cuando está habilitado, evita que el navegador envíe cookies de solicitudes entre sitios. Esto podría potencialmente romper alguna funcionalidad, sin embargo, es otra idea que podría agregarse rápidamente:

enlace

Downfall: no todos los navegadores lo admiten.

    
respondido por el sxcurity 10.05.2018 - 18:36
fuente
-1

La única forma de mitigar esta vulnerabilidad es una patrón de sincronización del token / a>. Sólo con un token.

Intente utilizar OWASP CSRFGuard project

    
respondido por el Masaniello 10.05.2018 - 14:39
fuente

Lea otras preguntas en las etiquetas