Google anunció una importante mejora de seguridad para la versión 136 de Chrome. Esta actualización soluciona una vulnerabilidad de hace 23 años que podría permitir que sitios web maliciosos espíen los historiales de navegación de los usuarios.
La solución, llamada “:partición de enlaces visitados”, convierte a Chrome en el primer navegador importante que elimina por completo este riesgo de privacidad de larga data que ha afectado a los navegadores web desde los primeros días de CSS.
Desde los inicios de la web, los navegadores han utilizado el selector CSS: visitado para aplicar estilo a los enlaces en los que los usuarios hicieron clic anteriormente, normalmente volviéndolos de color violeta. Esta característica aparentemente inocente alberga un grave fallo de seguridad sobre el que los investigadores de seguridad han advertido durante décadas.
«¿Qué sucede cuando haces clic en un enlace? ¡Se vuelve violeta!» explica Google en su anuncio. Este cambio de color se produce porque los navegadores aplican un estilo especial utilizando el selector CSS: visitado:
Sin embargo, esta implementación tradicional permitió que cualquier sitio web detectara si un visitante había accedido previamente a URL específicas al verificar si el navegador mostraba esos enlaces como «visitados», filtrando efectivamente el historial de navegación en diferentes sitios.
El problema central surge de cómo los navegadores mantienen una lista global y sin particiones de URL visitadas.
Esto significaba que si un usuario visitaba el Sitio B a través de un enlace en el Sitio A, cualquier otro sitio web podría determinar posteriormente que el usuario había visitado el Sitio B, incluso si el usuario nunca hizo clic en un enlace al Sitio B desde ese tercer sitio.
Los sitios web maliciosos podrían crear enlaces invisibles a miles de sitios web populares y utilizar diversas técnicas para detectar cuáles el navegador designó como :visitados, creando un mecanismo eficaz de toma de huellas digitales que revelaba los patrones de navegación de los usuarios.
La solución de Chrome implementa una «particionamiento» que asocia los enlaces visitados con su contexto original. En lugar de mantener una única lista de historial global, Chrome ahora almacenará los enlaces visitados junto con información sobre dónde se hizo clic, que incluye:
- La URL del enlace
- El sitio de primer nivel
- El origen del marco
«La partición protege su historial de navegación al mostrar solo un enlace como visitado si ya hizo clic en ese enlace desde este sitio antes», explica Google.
«Esto previene eficazmente las filtraciones del historial entre sitios y al mismo tiempo preserva el beneficio de la experiencia del usuario del estilo del enlace visitado».
Para mantener la usabilidad, Chrome ha implementado una “exclusión de autoenlaces” que permite a los sitios web mostrar sus propias subpáginas según las visitas, incluso si el usuario accedió a ellas desde un sitio diferente.
Google justifica esta excepción señalando que «los sitios tienen otros métodos para rastrear si un usuario ha visitado sus subpáginas», por lo que no se introduce ningún nuevo riesgo para la privacidad.
Esta exclusión solo se aplica a las subpáginas del propio sitio. Los enlaces a sitios de terceros o en iframes de terceros permanecen estrictamente divididos, lo que impone límites de seguridad adecuados.
La solución se lanza con la versión 136 de Chrome, lo que convierte al navegador de Google en el primero en resolver por completo esta vulnerabilidad de seguridad de décadas. Otros navegadores han implementado previamente mitigaciones parciales que ralentizaron dichos ataques pero no los eliminaron por completo.
Los expertos en seguridad han elogiado este enfoque como el equilibrio adecuado entre mantener la compatibilidad web y proteger la privacidad del usuario, abordando una vulnerabilidad que ha persistido desde que la especificación CSS introdujo por primera vez la funcionalidad del selector visitado.