Índice
¿Qué es la falsificación de solicitudes entre sitios (CSRF)?
La falsificación de solicitudes entre sitios, a menudo abreviada como CSRF, es un posible ataque que puede ocurrir cuando un sitio web, blog, mensaje de correo electrónico, mensaje instantáneo o aplicación web malintencionada hace que el navegador web de un usuario realice una acción no deseada en un sitio de confianza en el que el usuario está autenticado actualmente.
El impacto de un ataque de CSRF se determina por las capacidades expuestas dentro de la aplicación vulnerable. Los ataques CSRF, en su nivel más básico, son utilizados por un atacante para que un sistema objetivo ejecute cualquier función maliciosa disponible a través del navegador del objetivo sin que el usuario objetivo lo sepa. La víctima no suele conocer esta función hasta que se ha producido.
Una vulnerabilidad CSRF puede otorgar a un atacante la capacidad de forzar a un usuario autenticado y con sesión iniciada a realizar una acción importante sin su consentimiento o conocimiento. Es el equivalente digital a que alguien falsifique la firma de una víctima en un documento importante. De hecho, es más eficaz, porque el atacante no deja rastro alguno de pruebas. Esto se debe a que la solicitud falsificada contiene toda la información y proviene de la misma dirección IP que una solicitud real de la víctima. Esto significa que cualquier aplicación que permita a un usuario enviar o actualizar datos es un posible objetivo para un atacante.
Una cosa importante que debe recordar es que para que el CSRF funcione, la víctima debe haber iniciado sesión en el sitio objetivo. Aunque esto puede parecer un obstáculo para el atacante, muchos sitios web permiten al usuario elegir "mantenerme conectado". Esto incrementa significativamente la duración del periodo en el que se puede efectuar una falsificación.
Posibles usos maliciosos de CSRF
El objetivo más común de un CSRF es el robo: ya sea de datos, de identidad o financiero. Algunos usos comunes de CSRF son los siguientes:
- Transferir dinero de una cuenta bancaria a otra. Su sesión en línea en su banco se ve comprometida y trata esto como una solicitud legítima, enviando 1000 $ de su cuenta a la cuenta de Mallory. Todas las pruebas indican que usted realizó legítimamente esta transacción desde su navegador con sesión iniciada.
- Utilizar un sistema de gestión de contenido para añadir o eliminar contenido de un sitio web. Si la víctima es un usuario que es administrador, todo el sitio web estaría bajo el control del atacante.
- Cambiar la contraseña de un usuario. Si una víctima ha iniciado sesión en su cuenta, el atacante puede simplemente falsificar una solicitud de cambio de correo electrónico. Una vez que esto se complete, si el atacante logra falsificar una solicitud de restablecimiento de contraseña, podría obtener el control total de la cuenta de la víctima.
- Añadir artículos a la cesta de la compra de un usuario o cambie la dirección de entrega de un pedido. Muchos sitios web tienen una página de "Mi cuenta" u otras páginas similares que almacenan la información de un usuario y, a menudo, permiten al usuario cambiar su dirección o ajustar su carrito de compras. Con CSRF, un atacante puede modificar esta información y, para el sitio web, parecerá que la víctima fue el origen de todos los cambios.
Prevenir las vulnerabilidades CSRF
Existen dos métodos principales mediante los cuales se puede prevenir la falsificación de solicitudes entre sitios.
- Evitar que el navegador envíe cookies de terceros a la aplicación web.
- Sincronizar la cookie con un token anti-CSRF que ya fue proporcionado al navegador.
- Requerir una "respuesta de desafío", que a menudo se utiliza junto con las otras dos técnicas de prevención disponibles.
Técnica n.º 1: cookies del mismo sitio
El atributo de cookie SameSite es un atributo recientemente desarrollado que se puede establecer en las cookies para instruir al navegador a desactivar el uso de terceros para cookies específicas. Este atributo lo establece el servidor al mismo tiempo que configura la cookie en sí misma y solicita al navegador que envíe la cookie solo en un contexto de primera parte. Por este motivo, la solicitud debe originarse desde la misma ubicación. Por lo tanto, las solicitudes realizadas por sitios de terceros no pueden incluir la cookie de mismo sitio. Esto elimina eficazmente el CSRF sin necesidad de utilizar tokens de sincronización. El único inconveniente es que las cookies del mismo sitio solo están disponibles en algunos navegadores modernos.
Técnica n.º 2: tokens anti-CSRF
El método de prevención recomendado y más adoptado para la falsificación de solicitudes entre sitios es un token anti-CSRF, también conocido como token sincronizador. Cuando un usuario envía información o interactúa con el sitio, o realiza cualquier otra acción que genere una cookie, el token anti-CSRF también debe incluirse en la solicitud de cookies. Luego, esta solicitud se somete a un proceso de verificación, donde se comprueba la autenticidad o incluso la existencia de este token antes de procesar la solicitud. Si falta el token o es incorrecto, la solicitud puede ser rechazada.
Para asegurar la calidad de la protección con tokens anti-CSRF, es esencial que la biblioteca de tokens conocidos se actualice regularmente para enfrentar las amenazas existentes. Muchas de estas bibliotecas son de código abierto y de fácil acceso. En un mundo perfecto, ambos métodos se combinarían para ayudar a defenderse de un ataque CSRF.
Técnica #3: respuesta de desafío
Como capa adicional de protección, usted puede requerir una respuesta de desafío de un usuario cuando se envíe un formulario. Algunos ejemplos de respuestas a los desafíos incluyen:
- Reautenticación de contraseña o información personal
- Validación de CAPTCHA
- Emitir un token de un solo uso
Aunque el desafío-respuesta puede ser un elemento disuasorio eficaz contra el CSRF cuando se diseña e implementa adecuadamente, sí tiene un impacto en la experiencia del usuario. Para aplicaciones que requieren alta seguridad, se deben utilizar tanto los tokens como el mecanismo de desafío-respuesta para garantizar la seguridad.
¿Por qué es importante el CSRF?
Los ataques CSRF pueden ser utilizados en una amplia gama de sitios. Si un sitio permite que se alteren los datos del lado del usuario, entonces es un objetivo potencial para un atacante. Con algunas de las correcciones enumeradas anteriormente, su sitio web puede garantizar un nivel de seguridad mucho más alto en una amplia gama de sitios. Cualquier sitio donde se puedan modificar datos es un objetivo potencial.
El impacto de un ataque CSRF exitoso puede variar mucho según los privilegios de la víctima. Si el objetivo es un usuario básico, todo, desde su información personal hasta los privilegios del sitio, puede verse comprometido. Aunque eso suena mal, si una cuenta de administrador se ve comprometida, un ataque puede paralizar todo el sitio. Esto demuestra la magnitud de un posible ataque y por qué la protección CSRF es una parte fundamental de cualquier paquete de seguridad web.
Obtenga más información sobre CSRF
Lecturas complementarias
- Guía de prevención de falsificación de solicitudes entre sitios (CSRF)
- Wikipedia: Falsificación de solicitudes entre sitios
Cómo puede ayudar Barracuda
El Barracuda Web Application Firewall protege automáticamente su sitio web y sus aplicaciones web de ataques CSRF y de miles de otras ciberamenazas, incluidas las principales 10 amenazas de OWASP. Si aún no tiene un firewall para aplicación web, puede solicitar una prueba gratuita a Barracuda. También puede utilizar el Barracuda Vulnerability Manager para realizar un escaneo gratuito de su sitio web y verificar si es vulnerable a un ataque CSRF.
Además de proporcionar protección basada en firewall, Barracuda también ofrece protección CSRF en nuestro producto Barracuda Load Balancer ADC. El equilibrador de carga es un controlador de entrega de aplicaciones seguro diseñado para asegurar la disponibilidad, la aceleración y el control del sitio web. Las actualizaciones automáticas garantizan una seguridad integral frente a las amenazas de capa 7 existentes y emergentes, como el Cross-Site Scripting, las inyecciones de SQL y la falsificación de solicitudes entre sitios.
¿Tiene más preguntas sobre la falsificación de solicitudes entre sitios? Póngase en contacto con nosotros hoy.