Skip to main content
Cómo funciona la vulnerabilidad CSRF

Cómo funciona la vulnerabilidad CSRF

La vulnerabilidad CSRF (Cross-Site Request Forgery) se da en aplicaciones web permitiendo a un atacante engañar a los usuarios para que realicen acciones que no harían en un principio como cambiar su dirección de correo o su contraseña con el fin de robar dichos datos.

 

Bienvenidos a un nuevo post en Byte Mind y para el caso de hoy vamos a explicar en qué consiste la vulnerabilidad Cross-Site Request Forgery (CSRF), como funciona la misma y, lo más importante, como podemos protegernos ante este tipo de ataques.

Cada vez más a menudo se ven noticias de ciberataques a usuarios en los cuales se han comprometido sus redes sociales, datos bancarios, correos, aunque hay muchos, quizá la mayoría, que no salen a la luz debido a que ni las propias víctimas se enteran de que han sido atacados.

En los días que corren las técnicas utilizadas por los atacantes son cada vez más sofisticadas, muchas de ellas imperceptibles para aquellos usuarios con perfiles no muy técnicos. 

 

¿Qué es el ataque Cross-Site Request Forgery?

El ataque de Cross-Site Request Forgery (CSRF o XSRF) o, en español, Falsificación de peticiones en sitios cruzados, también conocida como Session Riding, es un ataque utilizado para realizar estafas en internet. 

El principal objetivo de este tipo de ataque es utilizar situaciones en las que los usuarios no cierran de forma correcta las sesiones en alguna aplicación web, como puede ser de correo electrónico, banca digital, etc. y que siguen activas mientras se visitan otras páginas, en las que podrían haber insertado algún tipo de código malicioso con el fin de robar información sensible.

A tarvés de este tipo de ataque, el usuario con malas intenciones, puede llevar a cabo multitud de operaciones en función del tipo de aplicación, por ejemplo, si actúa sobre un webmail podría crear un filtro en el correo para que todos los correos se reenviasen a otra cuenta.

 

 

¿Cómo funciona un ataque de Cross-Site Request Forgery?

 

Para que quede más claro, vamos a ver un ejemplo completo y vamos a explicar cada paso para que no haya dudas. 

Como funciona un ataque de Cross-Site Request Forgery

Viendo la imagen anterior, el primer paso para llevar a cabo un ataque CSRF es que el atacante sea capaz de hackear un determinado portal web, en el cual insertar el código malicioso con el que llevará a cabo el ataque. Este código puede ser un simple enlace, un formulario de apariencia normal pero que al enviar los datos lleve a una url encargado de realizar la acción maliciosa, etc.

Una vez incrustado el código malicioso en el segundo portal, el usuario, debe de acceder a la aplicación web original con sus credenciales y, sin cerrar la sesión, ejecutar sin querer el código malicioso que actua sobre el segundo portal, consiguiendo entonces que se llevase a cabo el ataque sin que el usuario se entere de lo que ha pasado en realidad.

Por verlo con un ejemplo, supongamos que un atacante hackea el portal portalmalicioso.com e inyecta código malicioso que actúa sobre la web mibancoseguro.com mediante la ejecución de un enlace que ordena que se transfiera dinero desde la cuenta del usuario a la cuenta del atacante. Si la víctima accede a su perfil la web del banco, y sin cerrar su sesión accede al portal malicioso y ejecuta el código, de forma inmediata se hará la transferencia de fondos debido a que todavía tiene la cuenta del banco activa y por lo tanto, la petición será totalmente válida. Esto no ocurriría si, antes de acceder al portal malicioso, hubiese cerrado la sesión en el portal de su entidad bancaria.

Importante: El ejemplo de la cuenta bancaria es especialmente impactante porque muestra perfectamente la gravedad que pueden presentar este tipo de ataques, aunque en la práctica, los portales bancarios disponen de mecanismos capaces de evitar este tipo de ataques y por lo tanto llevar a cabo transferencias seguras.

 

 

¿Qué hace posible un ataque CSRF?

 

Visto en qué consiste y cómo funcionan este tipo de ataques vamos a ver que requisitos debe tener la aplicación para que sea posible explotarlo. 

Para ello son necesarios 3 requisitos:

  • Que exista una acción relevante que el atacante quiera inducir. Puede ser una acción privilegiada o una acción sobre los datos específicos de un usuario.
  • Que el manejo de las sesiones esté basado en cookies, debido a que realizar una acción implica la realización de una o más solicitudes HTTP, y si la apliación utiliza cookies, estas siempre serán enviadas para identificar al usuario que hace la solicitud.
  • Que las solicitudes no contengan parámetros impredecibles, es decir, no existen valores que el atacante tenga que determinar o adivinar. Por ejemplo, para que el usuario cambie su contraseña debe de indicar la password actual, si este dato no lo conoce el atacante no puede llevar a cabo la acción.

 

 

¿Cómo podemos protegernos ante este tipo de ataques?

Vamos a indicarlo desde ambos puntos de vista, es decir, desde el punto de vista de una aplicación que se quiera proteger ante este tipo de ataques, y desde el punto de vista de un usuario que no quiera ser víctima de los mismos.

 

Proteger una aplicación 

Cómo ya se ha mencionado en el punto anterior, son necesarios 3 requisitos para que una aplicación pueda ser vulnerable a este tipo de ataques y la forma más eficar de evitarlo en agregar parámetros impredecibles.

Aunque, no es la única forma de evitar este tipo de ataques sino que también existen los Tokens CSRF.

El Token CSRF es un valor único, secreto e impredecible que genera la aplicación desde el lado del servidor y que se transmite al cliente de tal forma que es incluida en la siguiente solicitud que realiza el cliente. Cuando este realiza la siguiente solicitud, la aplicación validará si el token recibido es válido o no, evitando que sea posible realizar este tipo de ataques.

Estos Token previenen de los ataques CSRF debido a que el atacante no puede predecir el código generado para un usuario concreto, por lo que no puede construir una solicitud que cumpla con todos los requisitos necesarios para poder completar la misma.

 

Protección de un usuario

Para estar protegidos a nivel de usuario ante este tipo de ataques se pueden tomar diferentes medidas como las descritas a continuación:

  • Cerrar la sesión una vez acabadas las acciones para las que fue abierta, ya que al cerrar la pestaña no se está cerrando la misma por completo
  • Uso de doble factor de autenticación, que añadiría un segundo valor impredecible a la sesión evitando que sea posible completar acciones sin conocer dicho código
  • Navegar con precaución y no entrar a un portal web si el mismo no es fiable o no sugiere seguridad

 

Y hasta aquí todo por hoy, espero que les haya sido de utilidad y les sirva para entender un poco mejor como funcionan este tipo de ataques. Y como siempre, cualquier duda, aporte o sugerencia es bienvenida en la sección de comentarios.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.