Encontré una falla importante en el modo de navegación privada de Mozilla.

Si no se corrigiera, esta falla podría haber causado estragos, pero las correcciones rápidas de Mozilla salvaron el día.

En este artículo, discutiré los detalles de un error que descubrí con el modo de navegación privada de Mozilla Firefox que hizo posible el seguimiento de las sesiones de navegación privada.

La navegación privada es una de las funciones más conocidas y utilizadas en los navegadores modernos en la actualidad. Los navegadores agregan continuamente muchas mejoras a la navegación privada para mejorar la privacidad de los usuarios.

Las funciones ofrecidas pueden diferir de un navegador a otro, pero al menos un usuario que utiliza la navegación privada tiene los dos requisitos más básicos:

1. Los sitios web visitados en privado no pueden guardar ningún dato

2. Las páginas visitadas no se guardan

Bueno, descubrí que el modo de navegación privada del navegador Firefox no cumplía con ninguno de los requisitos anteriores.

Detalles técnicos

Para que un sitio web rastree a un usuario a través de sesiones de navegación privada, necesita usar algo de almacenamiento persistente en el nivel del navegador.

Hay varias formas de almacenar datos en un navegador: LocalStorage, WebSQL e IndexedDB.

Recientemente me encontré con el almacenamiento IndexedDB.

IndexedDB es una API de bajo nivel para el almacenamiento en el lado del cliente de cantidades significativas de datos estructurados, incluidos archivos / blobs - Mozilla Developer Network

Aunque, según la documentación, IndexedDB no debería estar disponible en modo de navegación privada.

Si usa IndexedDB directamente en la página web, arrojará un error:

Pero, ¿qué sucede si combina IndexedDB con Web Workers?

Web Workers hace posible ejecutar una operación de script en un hilo de fondo separado del hilo de ejecución principal de una aplicación web - Mozilla Developer Network

Detalles del problema: Fallout

Se puede acceder a IndexedDB en modo de navegación privada a través de Web Workers. No solo eso, sino que cuando se cierra el navegador, los datos de IndexedDB no se borran. Estos datos almacenados persistirán en varias sesiones de navegación privada porque no se borran al salir. ?

Así que veamos algunas formas en las que se podría abusar de este problema.

Sitios web

Un sitio web malicioso puede aprovechar IndexedDB y rastrear a los usuarios a través de sesiones de navegación privada. Por ejemplo, digamos que visitó badsite.com, que usa Web Workers e IndexedDB en modo de navegación privada. Cierre la ventana de navegación privada, cierre Firefox, vuelva a iniciar Firefox, inicie el modo de navegación privada y vuelva a visitar badsite.com. El sitio web podrá acceder a los datos de su anterior sesión de navegación privada, ya que los datos aún se almacenan en IndexedDB.

Terceros

Supongamos que siteA.com carga un script de análisis de BadAnalyticsSite.com. Luego, otro sitio web, siteB.com , también carga un script de análisis del mismo sitio web BadAnalyticsSite.com . Dado que el sitio web malicioso BadAnalyticsSite.com utiliza Web Workers e IndexedDB, el sitio web BadAnalyticsSite.com ahora puede rastrear a los usuarios de los sitios web siteA.com y siteB.com en todas sus sesiones de navegación privada.

Fugas de disco

IndexedDB se adhiere a una política del mismo origen, lo que significa que cada base de datos tiene un nombre que la identifica dentro de un origen. Debido a que el nombre de dominio se usa como parte del nombre de archivo, esto puede resultar en problemas graves cuando se usa en modo privado.

Por ejemplo, si un usuario visita una página web de prueba (demostración) que utiliza Web Workers + IndexedDB alojado cdn.cliqz.comy carga un recurso konarkmodi.github.io, las dos entradas siguientes se crean en el disco.

Debido a la falla anterior, un sitio web / rastreador podría generar efectivamente una huella digital y guardarla. Incluso si un usuario borrara el historial del sitio web o seleccionara la opción "olvidarse de este sitio", el almacenamiento de IndexDB no se elimina. Esto puede crear un almacenamiento permanente para un sitio web o un rastreador que se puede aprovechar para siempre.

Informe y correcciones

Mozilla fomenta la investigación de seguridad para sus productos. En sus propias palabras:

El programa Mozilla Client Security Bug Bounty está diseñado para fomentar la investigación de seguridad en el software de Mozilla y recompensar a quienes nos ayudan a crear el software de Internet más seguro que existe.

Informé este problema en octubre de 2017 a través de su programa Bug Bounty, y el problema se solucionó en noviembre de 2017. Fueron rápidos para identificar y solucionar los problemas.

Para obtener más detalles, puede leer el informe de errores completo en Bugzilla de Mozilla.

Realmente aprecio los esfuerzos y acciones de Mozilla para solucionar problemas con la más alta prioridad cuando se trata de la privacidad de sus usuarios.

¡Feliz piratería!

Puedes seguirme en Twitter en Konark Modi

Gracias por leer y compartir ! :)

Si te gustó esta historia, no dudes en hacerlo ??? unas cuantas veces (hasta 50 veces. En serio).

Créditos: Un agradecimiento especial a Remi y Pallavi por revisar esta publicación :)