¿Qué es un CSFR?

CSRF

CSRF son las siglas en inglés de «Cross-Site Request Forgery» (falsificación de petición en sitios cruzados), una técnica de ataque en la que un atacante engaña a un usuario para que realice acciones no deseadas en un sitio web legítimo en el que el usuario está autenticado.

Funcionamiento del CSRF

El CSRF (Cross-Site Request Forgery) es un tipo de ataque en el que un atacante engaña a un usuario autenticado para que realice acciones no deseadas en un sitio web en el que el usuario tiene una sesión abierta. El atacante logra esto al hacer que el usuario visite una página web maliciosa que contiene código que envía solicitudes HTTP a otro sitio web en nombre del usuario, sin que este lo sepa. Aquí te explico cómo funciona el CSRF:

  • Sesión de Usuario Autenticada: El usuario inicia sesión en un sitio web legítimo (por ejemplo, su banco) y establece una sesión válida en el servidor. Esta sesión se identifica a través de una cookie o un token de sesión.
  • Visita de una Página Maliciosa: Mientras la sesión del usuario en el sitio legítimo aún está activa, el usuario visita una página web maliciosa (generalmente por medio de un enlace o imagen en un correo electrónico, foro, o sitio web comprometido). Esta página maliciosa contiene código que realiza solicitudes HTTP a sitios web legítimos en nombre del usuario sin su conocimiento.
  • Solicitud HTTP Fraudulenta: El código malicioso en la página web hace que el navegador del usuario realice solicitudes HTTP a acciones importantes en el sitio web legítimo. Por ejemplo, podría hacer que se realice una transferencia de dinero o que se cambie la contraseña del usuario en el sitio web legítimo.
  • Ejecución de la Solicitud CSRF: El navegador del usuario, que ya tiene una sesión válida en el sitio web legítimo, incluye automáticamente las cookies o tokens de sesión en las solicitudes HTTP generadas por el código malicioso. Como resultado, el servidor del sitio web legítimo recibe y procesa la solicitud como si fuera legítima, ya que las credenciales del usuario se utilizan sin su consentimiento.
  • Efecto en el Usuario: El ataque CSRF se lleva a cabo sin que el usuario sea consciente de ello. Puede que ni siquiera note que se realizaron acciones no deseadas en su cuenta.

¿Cómo prevenir ataques de CSRF?

Para prevenir ataques CSRF, los desarrolladores de sitios web pueden implementar medidas de seguridad. 

Utiliza Tokens Anti-CSRF

  • Genera un token único y aleatorio para cada sesión de usuario y asegúrate de que este token se incluya en cada formulario o solicitud que realice cambios en el estado del servidor.
  • Verifica que el token enviado por el usuario coincida con el token asociado a su sesión en el servidor antes de procesar la solicitud.

Implementa CORS de manera Adecuada

  • Configura correctamente las políticas de CORS (Cross-Origin Resource Sharing) para limitar las solicitudes solo a los dominios específicos que deberían tener acceso a tu aplicación web.
  • Utiliza encabezados como Origin y Access-Control-Allow-Origin para controlar las solicitudes cruzadas.

Utiliza el Encabezado SameSite para Cookies

  • Configura las cookies de sesión con el atributo «SameSite» para limitar su acceso a solicitudes del mismo sitio (Same-Site Cookies).
  • Esto evita que las cookies se envíen en solicitudes cruzadas y ayuda a prevenir ataques CSRF.

Establece Cookies como HttpOnly

  • Marca las cookies de sesión como «HttpOnly» para que no puedan ser accedidas ni modificadas por JavaScript. Esto reduce la exposición de las cookies a ataques CSRF.

Valida el Origen de las Solicitudes

  • Verifica que las solicitudes entrantes provengan de fuentes legítimas al comprobar el encabezado «Referer» y/o el encabezado «Origin«.

Implementa Protección de Tiempo

  • Limita la validez de los tokens anti-CSRF en tiempo y asocia un período de tiempo limitado durante el cual un token es válido.
  • Refresca o renueva los tokens regularmente para evitar la reutilización de tokens expirados.

Utiliza Autenticación de Doble Factor (2FA)

  • Implementa la autenticación de doble factor para ciertas acciones críticas o sensibles. Esto puede ayudar a prevenir ataques incluso si un atacante logra realizar solicitudes no autorizadas.

Mantén el Software Actualizado

  • Asegúrate de que todos los componentes de tu aplicación, como frameworks, bibliotecas y servidores web, estén actualizados con los últimos parches de seguridad.

Capacitación y Concienciación del Usuario

  • Educa a los usuarios sobre los riesgos de seguridad, como no abrir enlaces o correos electrónicos de fuentes no confiables, y fomenta buenas prácticas de seguridad.

Pruebas de Seguridad

  • Realiza pruebas de seguridad, como pruebas de penetración y escaneos de vulnerabilidades, para identificar posibles vulnerabilidades de CSRF en tu aplicación.

Ejemplos reales de ataques CSRF

Estos ataques demuestran la importancia de protegerse contra esta vulnerabilidad en las aplicaciones web para prevenir que los atacantes realicen acciones no deseadas en nombre de los usuarios autenticados. La implementación de tokens anti-CSRF y otras medidas de seguridad adecuadas es esencial para mitigar este tipo de amenazas.

  • Ataque CSRF en Facebook (2008):

En 2008, se descubrió un ataque CSRF en Facebook. Los atacantes podían engañar a los usuarios para que hicieran clic en un enlace malicioso que, sin su conocimiento, publicaba actualizaciones de estado o realizaba otras acciones en sus perfiles.

  • Ataque CSRF en Gmail (2007):

Un ataque CSRF en Gmail permitía a un atacante cambiar la configuración de la cuenta del usuario, incluyendo la reenviación de correos electrónicos o el cambio de contraseña. Esto podría dar lugar a un secuestro de la cuenta.

  • Ataque CSRF en YouTube (2008):

Un ataque CSRF en YouTube permitía a un atacante suscribir al usuario a canales de YouTube o agregar videos a sus listas de reproducción sin su consentimiento.

  • Ataque CSRF en Twitter (2010):

En 2010, se descubrió un ataque CSRF en Twitter que permitía a un atacante hacer que un usuario retwiteara mensajes o siguiera a cuentas sin su permiso.

  • Ataque CSRF en PayPal (2008):

Un ataque CSRF en PayPal permitía a un atacante realizar transacciones financieras en nombre de un usuario autenticado. Esto podría llevar al robo de fondos.

  • Ataque CSRF en WordPress (2018):

En 2018, se informó de un ataque CSRF que permitía a un atacante cambiar las credenciales de administrador de un sitio web WordPress, lo que podría dar lugar a la toma de control del sitio.

  • Ataque CSRF en Router (2015):

Un ataque CSRF en un router doméstico podría permitir a un atacante cambiar la configuración de red, como las contraseñas de Wi-Fi o las reglas de firewall, sin el conocimiento del propietario del router.

Comparte este Post:

Posts Relacionados

Build Computer

El término Build Computer puede tener diferentes interpretaciones dependiendo del contexto en el que se use, pero en términos generales, dentro de la programación, desarrollo de software y entornos técnicos, hace referencia a una computadora (o servidor) dedicada exclusivamente al proceso de build. Es decir, a compilar, ensamblar y preparar

Ver Blog »

Bugfairy

Bugfairy no es un término estándar ampliamente reconocido dentro de la informática o la ingeniería de software como lo son «bug» o «bug tracking», pero el término ha sido usado en algunos contextos de manera informal, humorística o incluso creativa, particularmente en la cultura del desarrollo de software. A continuación,

Ver Blog »

Bug Tracking

El bug tracking, o seguimiento de errores, es un proceso esencial dentro del desarrollo de software que permite a los equipos registrar, gestionar, priorizar y resolver fallos o comportamientos inesperados (bugs) en una aplicación. Lejos de ser una simple lista de problemas, el sistema de seguimiento de bugs es una

Ver Blog »

¿Qué es un «BUG» en programación?

Un bug es un error, defecto o fallo en el código de un programa de software que causa que este se comporte de manera inesperada, incorrecta o que directamente falle. Es uno de los términos más comunes en el ámbito del desarrollo de software, y forma parte integral del ciclo

Ver Blog »

BSD (Berkeley Software Distribution)

BSD —acrónimo de Berkeley Software Distribution— es una versión del sistema operativo Unix que fue desarrollada en la Universidad de California, Berkeley, a finales de los años 70 y principios de los 80. Aunque comenzó como una serie de modificaciones al Unix original de AT&T, BSD evolucionó hasta convertirse en

Ver Blog »

Browse: El Arte de Navegar

¿Qué significa «Browse» en programación y tecnología? En el ámbito de la informática y la programación, el término “browse” hace referencia al acto de navegar o explorar datos, documentos o recursos digitales. Aunque puede parecer un concepto simple, el verbo «browse» abarca una gama de funcionalidades clave en software, sistemas

Ver Blog »

Déjanos tus datos, nosotros te llamamos

Déjanos tus datos y 
te enviaremos el link del white paper

Déjanos tus datos y 
te enviaremos el link de la revista

Déjanos tus datos y 
te enviaremos el link del programa