Curso Acelerado de Seguridad - Episodio 4 - CSRF
Este artículo fue escrito por Damien Metzger y publicado por primera vez en el blog de PrestaShop, el 30 de noviembre de 2011.
La infracción CSRF consiste en explotar una identidad de confianza del usuario al forzar al navegador para enviar comandos sin que lo sepa el usuario. Básicamente, si una página está protegida por un sistema de login / contraseña (ej., almacenada en una cookie), entonces usted no puede acceder a él sin iniciar sesión, a diferencia de la tienda la cual ya ha iniciado sesión.
Por lo tanto un hacker sólo necesita enviar al vendedor a la página de su elección mediante el envío de un mensaje instantáneo o correo electrónico como "¡Hola! Echa un vistazo a mis nuevas fotos ... ¿Crees que soy bella?" con un enlace para redirigir a la víctima a http://www.maboutique.com/admin/index.php?tab=AdminCustomers&deletecustomer&id_customer=1.
En teoría, este enlace elimina el cliente número 1 de la tienda maboutique.com. Esto no funciona con PrestaShop, ya que el software ha sido creado seguro para evitar este tipo de uso: el hacker sólo necesita que el vendedor haga un clic en un enlace el cual lleva a cabo la acción requerida. No puede hacerlo usted mismo, pero el vendedor pudiera hacerlo en su lugar sin saberlo.
Este es un ataque muy dañino, ya que la tienda no tiene porqué haber sido directamente infringida. Un sistema de protección más activo al utilizado para XSS o inyecciones es requierido.
La solución está en el uso de tokens de seguridad, como puede observar en PrestaShop o phpMyAdmin por ejemplo. El desarrollador debe generar un código hash único basado en datos específicos para del vendedor para cada página, e incluso para cada actividad: para un código hash completo combine el nombre de usuario, la URL de tienda generado después de la instalación, la página de actividad y la URL como parámetro de la función sha1()
. Luego, cada vez que una página carga y antes de la transformación, vuelva a calcular la señal y comparela con lo que pasó como parámetro de cada enlace. De esta manera el hacker tendrá la tarea imposible de calcular el sha1 correcto para explotar la infracción.
Pero no podemos terminar aquí. Por ejemplo, un hacker puede tratar de combinar XSS y CSRF. Mediante la explotación de una infracción de XSS el hacker puede hacer que usted utilice un código JavaScript. El hacker puede entonces utilizar este código de JavaScript para obtener el token en la URL o un token en otros enlaces en la página. Esta es la razón por la cual la seguridad es esencial. Una sola infracción es suficiente para entrar y una vez que se encuentra en el primer obstáculo, es mucho más fácil para un hacker tejer su red.*
Last updated