Post215 nn

Anti-CSRF Tokens para prevenir Cross Site Request Forgery (CSRF)


Foto
Alvaro Alexander Palacios Carrillo

Antes que nada,

¿Qué es la vulnerabilidad CSRF?

La técnica llamada falsificación de petición en sitios cruzados, proviene de su nombre en inglés Cross Site Request Forgery (CSRF o XSRF). Este ataque fuerza al navegador web de su víctima, validado en algún servicio (como por ejemplo correo o home banking) a enviar una petición a una aplicación web vulnerable.

Esta aplicación se encarga de realizar la acción elegida a través de la víctima, debido que la actividad maliciosa será procesada en nombre del usuario logueado. Al contrario de los ataques conocidos como Cross Site Scripting (su traducción sería ordenes en sitios cruzados – XSS) los cuales explotan la confianza del usuario para con un sitio particular; el Cross Site Request Forgery explota la confianza que un sitio web tiene en un usuario particular.

Si quieres profundizar un poco más sobre ésta vulnerabilidad, te recomiendo este artículo:

https://backtrackacademy.com/articulo/comprendiendo-la-vulnerabilidad-csrf

 

Bien y entonces ¿Cómo evitarla? 

Si eres programador, y estás usando algún framework como: Laravel, Ruby on Rails, Django, etc. Pues bien por ti, la solución viene implementada sin tener que hacer nada, me refiero a que estos, protegen tu aplicación con un Anti-CSRF token, que funciona de la siguiente manera:

Supongamos que estás haciendo una transferencia mediante la plataforma de un banco llamada: nuestrobanco.com. Y eres víctima de un ataque CSRF, la petición maliciosa se verá algo así:

                                                             

 

Si la plataforma no se encuentra protegida contra estos ataques, lamentablemente acabas de perder mucho dinero.

 

                                                           Resultado de imagen para meme triste

 

¡Pero tranquilo! Cómo sabemos que: nuestrobanco.com, es una entidad seria y tiene un departamento de seguridad informática muy actualizado para proteger a sus clientes, ellos ya detectaron y parcharon esta vulnerabilidad aplicando un Anti-CSRF token, la petición se vería algo así:

 

                                                           

 

Entonces.. ¿Notaste la diferencia? Si, el token. Este es una cadena de caracteres aleatorios muy extensa, generados por la aplicación, entonces cada vez que vamos a hacer una petición, ésta validará que el token sea el correcto, de esta manera se generará un token diferente cada vez que se realice una petición. Las páginas externas no tienen como conseguirlo.

                                                                Resultado de imagen para not bad

 

Volviendo a nuestro caso anterior, la petición maliciosa enviada, será rechazada, debido a que no se validó correctamente el token, y se mantiene el dinero seguro en tu cuenta de nuestrobanco.com

Pero si, esto se puede deshabilitar en tu aplicación, obviamente NO es lo recomendable, y menos si estás tratando con datos sensible de los usuarios que utilizan la plataforma.

¿Cómo debo cuidarme yo, como usuario?

A continuación unos consejos:

 

  1. Que tu navegador no recuerde usuarios ni contraseñas: Puedes configurar tu navegador para evitar que estos recuerden tus credenciales, usar el modo incógnito también es una buena opción.
  2. Cierra tu sesión: Si ya no vas a hacer uso de alguna aplicación y/o servicio, te recomiendo que no mantengas la sesión abierta.
  3. NO recordar sesiones: los navegadores tienen una funcionalidad para recordar sesiones, cuando el navegador te pregunte si deseas recordar tus credenciales,  dile que NO.
  4. Usar diferentes navegadores: esto es una buena alternativa si sueles navegar mucho en internet y manejas data sensible, puedes utilizar un navegador para cualquier cosa en general, y uno diferente para cuando vayas a entrar a tu cuenta de banco, hacer una compra por internet, pagar servicios y cualquier otra operación que maneje datos importantes para ti.
  5. Complementos: existen algunos que bloquean la ejecución de scripts, así los formularios que se envíen por método POST, no podrán ser enviados sin tu consentimiento.

Es fundamental estar constantemente alertas ante comportamientos extraños y fuera de lo habitual. Incorporar buenas prácticas de seguridad a la navegación cotidiana permitirá reducir en gran parte la superficie de estos ataques, impidiendo que tengan éxito y contribuyendo a una mejor experiencia online.

 

 



Artículos que te pueden interesar