Cross-site leaks, también conocido como XS-leaks, es un término de seguridad en Internet utilizado para describir una clase de ataques utilizados para acceder a la información sensible de un usuario en otro sitio web. Las fugas entre sitios permiten a un atacante acceder a las interacciones de un usuario con otros sitios web. Esto puede contener información sensible. Normalmente, los navegadores impiden que otros sitios web vean esta información. Esto se hace mediante un conjunto de reglas denominadas política del mismo origen. A veces, los atacantes pueden eludir estas normas mediante una "filtración entre sitios". Los ataques que utilizan una filtración entre sitios suelen iniciarse incitando a los usuarios a visitar el sitio web del atacante. Tras la visita, el atacante utiliza código malicioso en su sitio web para interactuar con otro sitio web. Esto puede ser utilizado por un atacante para conocer las acciones previas del usuario en el otro sitio web. La información de este ataque puede identificar de forma exclusiva al usuario para el atacante.
Estos ataques están documentados desde el año 2000. Uno de los primeros trabajos de investigación sobre el tema fue publicado por investigadores de la Universidad de Purdue. En él se describía un ataque en el que se explotaba la caché web para recopilar información sobre un sitio web. Desde entonces, las filtraciones entre sitios se han vuelto cada vez más sofisticadas. Los investigadores han descubierto nuevas filtraciones dirigidas a varios componentes del navegador web. Aunque la eficacia de algunas de estas técnicas varía, se descubren continuamente otras nuevas.Algunos métodos antiguos se bloquean mediante actualizaciones de los navegadores. La introducción y supresión de funciones en Internet también hace que algunos ataques pierdan eficacia.
Las filtraciones entre sitios son una forma diversa de ataque, y no existe una clasificación coherente de este tipo de ataques. Múltiples fuentes clasifican las filtraciones entre sitios según la técnica utilizada para filtrar la información. Entre las más conocidas se encuentran los ataques de sincronización, que dependen de eventos de sincronización dentro del navegador web. Los eventos de error constituyen otra categoría, utilizando la presencia o ausencia de eventos para revelar datos. Además, los ataques de temporización de caché se basan en la caché web para desvelar información. Desde 2023, también se han descubierto ataques más recientes que utilizan los sistemas operativos y los límites del navegador web para filtrar información.
Antes de 2017, la defensa contra las filtraciones entre sitios web se consideraba difícil. Esto se debía a que muchos de los problemas de fuga de información explotados por los ataques de fuga entre sitios eran inherentes a la forma en que funcionaban los sitios web. La mayoría de las defensas contra este tipo de ataques se han introducido después de 2017 en forma de extensiones del protocolo de transferencia de hipertexto (HTTP). Estas extensiones permiten a los sitios web indicar al navegador que no permita o anote determinados tipos de solicitudes de estado procedentes de otros sitios web. Uno de los enfoques más exitosos que han implementado los navegadores son las cookies SameSite.Las cookies SameSite permiten a los sitios web establecer una directiva que impide a otros sitios web acceder a las cookies sensibles y enviarlas. Otra defensa consiste en utilizar cabeceras HTTP para restringir qué sitios web pueden incrustar un sitio concreto. La partición de la caché también sirve como defensa contra las filtraciones entre sitios, impidiendo que otros sitios web utilicen la caché web para exfiltrar datos.
Antecedentes Las aplicaciones web tienen dos componentes principales: un navegador y uno o varios servidores web. El navegador suele interactuar con los servidores a través del protocolo de transferencia de hipertexto (HTTP) y conexiones WebSocket para ofrecer una aplicación web. Para que la aplicación web sea interactiva, el navegador también renderiza HTML y CSS, y ejecuta código JavaScript proporcionado por la aplicación web."Cómo funciona la web: aprenda sobre desarrollo web | MDN" . MDN Web Docs . 24 de julio de 2023. Archivado desde el original el 24 de septiembre de 2023 . Consultado el 1 de octubre de 2023 . A menudo, los usuarios interactúan con la aplicación web durante largos periodos de tiempo, realizando múltiples peticiones al servidor. Para hacer un seguimiento de estas peticiones, las aplicaciones web suelen utilizar un identificador persistente vinculado a un usuario concreto a través de su sesión actual o cuenta de usuario.Wagner, David; Weaver, Nicholas; Kao, Peyrin; Shakir, Fuzail; Law, Andrew; Ngai, Nicholas. "Cookies and Session Management" (Gestión de sesiones y cookies) . Libro de texto de seguridad informática CS-161 de la UC Berkeley . Consultado el 24 de marzo de 2024 . Este identificador puede incluir detalles como la edad o el nivel de acceso, que reflejan el historial del usuario con la aplicación web. Si se revelan a otros sitios web, estos atributos identificables podrían desanonimizar al usuario.
Idealmente, cada aplicación web debería funcionar de forma independiente sin interferir con las demás. Sin embargo, debido a varias decisiones de diseño tomadas durante los primeros años de la web, las aplicaciones web pueden interactuar regularmente entre sí. Para evitar el abuso de este comportamiento, los navegadores web aplican un conjunto de reglas llamado política del mismo origen que limita las interacciones directas entre aplicaciones web de distintas fuentes. A pesar de estas restricciones, las aplicaciones web a menudo necesitan cargar contenido de fuentes externas, como instrucciones para mostrar elementos en una página, diseños y vídeos o imágenes. Este tipo de interacciones, denominadas peticiones de origen cruzado, son excepciones a la política del mismo origen y se rigen por un conjunto de normas estrictas conocidas como marco de uso compartido de recursos de origen cruzado (CORS). CORS garantiza que estas interacciones se produzcan en condiciones controladas, impidiendo el acceso no autorizado a datos que una aplicación web no puede ver. Esto se consigue exigiendo un permiso explícito antes de que otros sitios web puedan acceder al contenido de estas peticiones."Política del mismo origen - Seguridad en la web | MDN" . MDN Web Docs . 20 de diciembre de 2023 . Consultado el 24 de marzo de 2024 .
Las fugas entre sitios permiten a los atacantes eludir las restricciones impuestas por la política del mismo origen y el marco CORS. Aprovechan los problemas de fuga de información (canales laterales) que históricamente han estado presentes en los navegadores. Utilizando estos canales laterales, un atacante puede ejecutar código capaz de deducir detalles sobre datos que la política del mismo origen habría protegido. Estos datos pueden utilizarse para revelar información sobre las interacciones previas de un usuario con una aplicación web.
Mecanismo Para llevar a cabo un ataque de filtración entre sitios, un atacante debe estudiar primero cómo interactúa un sitio web con los usuarios. Por ejemplo, si el atacante está tratando de atacar Gmail, podría tratar de encontrar una URL de búsqueda que devuelva una respuesta HTTP diferente basada en cuántos resultados de búsqueda se encuentran para un término de búsqueda específico en los correos electrónicos de un usuario. Una vez que un atacante encuentra una URL específica, puede alojar un sitio web y hacer phishing o atraer a usuarios desprevenidos al sitio web. Una vez que la víctima se encuentra en el sitio web del atacante, éste puede utilizar varias técnicas de incrustación para iniciar peticiones HTTP de origen cruzado a la URL identificada por el atacante. Sin embargo, dado que el atacante se encuentra en un sitio web diferente, la política del mismo origen impuesta por el navegador web impedirá que el atacante lea directamente cualquier parte de la respuesta enviada por el sitio web vulnerable.
Para sortear esta barrera de seguridad, el atacante puede utilizar métodos de filtración del navegador, para distinguir diferencias sutiles entre diferentes respuestas. Los métodos de fuga del navegador son fragmentos de JavaScript, CSS o HTML que aprovechan los problemas de fuga de información (canales secundarios) que existen desde hace tiempo en el navegador web para revelar características específicas sobre una respuesta HTTPEn el caso de Gmail, el atacante podría utilizar JavaScript para cronometrar el tiempo que tarda el navegador en analizar la respuesta HTTP devuelta por el resultado de la búsqueda. Si el tiempo empleado en analizar la respuesta devuelta por el endpoint era bajo, el atacante podía deducir que no había resultados de búsqueda para su consulta. Alternativamente, si el sitio tardó más, el atacante podría inferir que se devolvieron múltiples resultados de búsqueda. El atacante puede utilizar posteriormente la información obtenida a través de estas fugas de información para exfiltrar información sensible, que puede ser utilizada para rastrear y desanonimizar a la víctima. En el caso de Gmail, el atacante podría realizar una solicitud al punto final de búsqueda con una consulta y posteriormente medir el tiempo que tardó la consulta para averiguar si el usuario tenía o no algún correo electrónico que contuviera una cadena de consulta específicaSi una respuesta tarda muy poco tiempo en procesarse, el atacante puede asumir que no se devolvió ningún resultado de búsqueda.Por el contrario, si una respuesta tarda una gran cantidad de tiempo en procesarse, el atacante deduce que se han devuelto muchos resultados de búsqueda. Al realizar múltiples peticiones, un atacante podría obtener información significativa sobre el estado actual de la aplicación víctima, revelando potencialmente información privada de un usuario, lo que ayudaría a lanzar sofisticados ataques de spam y phishing.
Historia Las filtraciones entre sitios se conocen desde el año 2000; los artículos de investigación de ese año de la Universidad de Purdue describen un ataque teórico que utiliza la caché HTTP para comprometer la privacidad de los hábitos de navegación de un usuario. En 2007, Andrew Bortz y Dan Boneh de la Universidad de Stanford publicaron un libro blanco en el que detallaban un ataque que utilizaba información de tiempo para determinar el tamaño de las respuestas entre sitios. En 2015, investigadores de la Universidad de Bar-Ilan describieron un ataque de búsqueda entre sitios que utilizaba métodos de filtración similares. El ataque empleaba una técnica en la que la entrada se manipulaba para aumentar el tamaño de las respuestas, lo que provocaba un aumento proporcional del tiempo necesario para generar las respuestas, incrementando así la precisión del ataque.