Introducción a CSRF?

CSRF, XSRF o Cross Site Reference Forgery es un tipo de ataque que ocurre en un sitio web cuando un sitio web malicioso delega su solicitud a un sitio web o aplicación web diferente que tiene un usuario autenticado. En este tipo de ataque, utilizando el navegador autenticado de la víctima, un atacante puede acceder al sitio web total o parcialmente.

¿Como funciona?

  • Funciona solo si la víctima potencial está autenticada.
  • Un atacante puede ingresar a un sitio web evitando el proceso de autenticación mediante un ataque CSRF.
  • Los ataques CSRF entran en uso, en los escenarios donde una víctima que tiene derechos adicionales realiza alguna acción y otros no pueden acceder o realizar estas acciones. Por ejemplo, banca en línea.

El ataque CSRF se ejecuta en dos partes principales

  • El primer paso es atraer al usuario / víctima para que haga clic en un enlace o cargue una página maliciosa. El atacante utiliza la ingeniería social para engañar a la víctima.
  • El segundo paso es engañar a la víctima enviando una solicitud falsificada al navegador de la víctima. Este enlace redirigirá las solicitudes de aspecto legítimo a un sitio web. El atacante tendrá los valores o detalles de la víctima que debe estar buscando, una víctima lo habría llenado pensando que la solicitud es legítima. El atacante también tendrá los detalles de las cookies asociadas con el navegador de la víctima.

Conceptos clave de CSRF

  • Un atacante envía solicitudes maliciosas a un sitio en el que el usuario visita a un atacante cree que la víctima está validada en ese sitio en particular.
  • El navegador de la víctima se autentica en el sitio de destino y se utiliza para enrutar las solicitudes maliciosas al sitio de destino.
  • Aquí, el navegador de una víctima o un sitio con métodos preventivos CSRF implementados en él, no son vulnerables, un sitio web afectado es la principal vulnerabilidad.

¿Cómo se puede prevenir la falsificación de solicitudes entre sitios (CSRF)?

Existen varios métodos preventivos de CSRF, algunos de ellos son:

  • Cierre la sesión de las aplicaciones web sin trabajar en ellas.
  • Asegure sus nombres de usuario y contraseñas.
  • No permita que los navegadores recuerden la contraseña.
  • Mientras trabaja en una aplicación e inicia sesión, evite navegar.

Fichas anti-CSRF

La implementación más común para detener la falsificación de solicitudes entre sitios (CSRF) es utilizar un token relacionado con un usuario seleccionado y que se puede encontrar como una forma oculta en cada estado, forma dinámica presente en la aplicación en línea.

1. Este token denominado CSRF Token funciona de la siguiente manera:

  • El cliente solicita una página HTML que tiene un formulario.
  • En la respuesta de esta solicitud, el servidor agrega dos tokens. Envía uno como una cookie y mantiene otros tokens en un campo de formulario que está oculto. Estas fichas se generan aleatoriamente.
  • El cliente envía ambos tokens al servidor una vez que envía el formulario. El token de cookie se envía como un token y el token de formulario se envía dentro de los datos del formulario
  • El servidor no responde o rechaza la solicitud si una solicitud no tiene ambas solicitudes.

Ahora, un atacante que intenta falsificar la solicitud tendrá que adivinar los tokens anti-CSRF junto con las contraseñas de autenticación del usuario. Estos tokens se invalidan después de un tiempo y una vez que finaliza la sesión. Esto hace que el atacante adivine la ficha difícil.

2. Las mismas cookies del sitio

Hay algunas cookies asociadas con un origen o sitio web y cuando se envía una solicitud a ese origen en particular, las cookies se envían junto con él. Dichas solicitudes se denominan solicitudes de origen cruzado. Durante este proceso, las cookies se envían a terceros, lo que hace posible los ataques CSRF.

3. Mismo atributo de cookies del sitio

  • Para evitar ataques CSRF, se puede usar el mismo atributo de cookie del sitio. Inhabilita el uso de terceros para una cookie específica.
  • Lo realiza el servidor mientras configura la cookie; luego solicita al navegador que envíe la cookie solo cuando el usuario está utilizando la aplicación web directamente.
  • Ahora, si alguien intenta solicitar algo de la aplicación web, el navegador no enviará la cookie.
  • Sin embargo, evita el ataque CSRF.

Esto tiene una limitación, las cookies del mismo sitio no son compatibles con los navegadores modernos, mientras que las aplicaciones web que utilizan cookies del mismo sitio no son compatibles con los navegadores más antiguos.

Ejemplos de CSRF

A continuación hemos explicado algunos ejemplos de CSRF:

1. Uso de solicitudes GET:

Supongamos que ha implementado y diseñado un sitio web, banking.com, para realizar acciones tales como transacciones en línea mediante el uso de solicitudes GET. Ahora, un atacante inteligente que sabe cómo crear una URL maliciosa puede usar elemento para que el navegador cargue silenciosamente la página

Ejemplo de un elemento de imagen HTML que contiene una URL maliciosa:

2. Una de las siguientes técnicas se puede utilizar para hacer lo mismo:

  • Al enviar un correo electrónico que tiene contenido HTML
  • Al plantar un script o una URL maliciosa en las páginas que es probable que un usuario visite mientras realiza transacciones en línea.

3. Uso de solicitudes POST

Existe una idea errónea general sobre las solicitudes HTTP POST de que los ataques CSRF se pueden evitar al permitir solicitudes HTTP POST, lo que en realidad no es cierto. El atacante puede crear un formulario usando HTML o JavaScript y usar la funcionalidad de envío automático para enviar la solicitud POST sin requerir que el usuario haga clic en un botón de envío.

Conclusión

Las cookies son vulnerables, ya que se envían automáticamente con la solicitud, lo que permite a los atacantes implementar CSRF y enviar solicitudes maliciosas. El efecto de una vulnerabilidad CSRF también depende del privilegio de la víctima, cuya Cookie se envía con la solicitud del atacante. Si bien la recuperación de datos no es el alcance principal de un ataque CSRF, los cambios de estado seguramente tendrán un efecto adverso en la aplicación web que se explota. Por lo tanto, se recomienda evitar que su sitio web utilice métodos preventivos para proteger su sitio web contra CSRF.

Artículos recomendados

Esta ha sido una guía de lo que es CSRF. Aquí discutimos el concepto clave, los tokens anti-CSRF, cómo funciona y ejemplos de CSRF. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. ¿Qué es la hibernación de Java?
  2. ¿Qué es ASP.NET?
  3. ¿Qué es AWS Lambda?
  4. ¿Qué es XHTML?