Contact emails

kyraseev...@chromium.org

Explainer

https://github.com/kyraseevers/Partitioning-visited-links-history

Specification

TBD

Summary

To eliminate user browsing history leaks, anchor elements will be styled as
:visited if and only if they have been visited from the same top-level site
and frame origin before. On the browser-side, this means that the
VisitedLinks hashtable will now be partitioned via "triple-keying", or by
storing the following for each visited link: <link URL, top-level site,
frame origin>. By only styling links that have been visited from this site
and frame before, the many side-channel attacks that have been developed to
obtain :visited links styling information will be obsolete, as they no
longer provide sites with new information about users.

Blink component

Blink>History>VisitedLinks
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EHistory%3EVisitedLinks>

Motivation

Since 2010, the number of side-channel attacks to leak the user’s browsing
history by abusing :visited links styling has grown, including user
interaction attacks, timing attacks, pixel color attacks, and process-level
attacks
<https://github.com/kyraseevers/Partitioning-visited-links-history#citations>.
While these attack vectors are slowed down by the 2010 mitigations
<https://developer.mozilla.org/en-US/docs/Web/CSS/Privacy_and_the_:visited_selector>,
they are not eliminated; browsers are still actively leaking user browsing
history today.

Triple-keyed history partitioning only styles links have been visited from
the same top-level site and frame origin before. As a result, the many
side-channel attacks that have been developed to obtain the global :visited
links state will now be obsolete, as they will no longer provide sites with
new information about users.

This feature will improve user privacy and security. The resulting
implementation will be relevant to users who will see slight changes to
which links appear styled on their screens, and to bad actors who will no
longer be able to use side-channel attacks to reveal user browsing history.

Initial public proposal

https://github.com/WICG/proposals/issues/100

Search tags

visited links <https://chromestatus.com/features#tags:visited%20links>,
:visited
selector <https://chromestatus.com/features#tags::visited%20selector>,
partitioning
history <https://chromestatus.com/features#tags:partitioning%20history>

TAG review

TBD

TAG review status

Not Started

Risks

Interoperability and Compatibility

Gecko: Positive initial signals from presentation at WebAppSec
<https://github.com/w3c/webappsec/blob/main/meetings/2023/2023-06-21-minutes.md>

WebKit: Positive initial signals from presentation at WebAppSec
<https://github.com/w3c/webappsec/blob/main/meetings/2023/2023-06-21-minutes.md>

Web developers: Feedback from UX that CSS extensibility is in-demand from
developers right now, and this work would pave the way for less restricted
CSS on anchor elements. In addition, support from various developers who
believe that taking care of this long-standing privacy leak will allow
their own security and privacy solutions to advance once history sniffing
is no longer an issue.

Other signals: N/a

WebView application risks

No - this feature deals with platform-specific code, and Android WebView
does style :visited links based on user browsing history, but we do not
expect significant challenges for WebView users.


Debuggability
Is this feature fully tested by web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
?

No

Flag name

(Tentatively) base::features::PartitionVisitedLinks

Requires code in //chrome?

False

Tracking bug

https://bugs.chromium.org/p/chromium/issues/detail?id=1448609

Launch bug

https://launch.corp.google.com/launch/4259382

Estimated milestones

No milestones specified yet

Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5101991698628608

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CA%2BmmbXbbLWwmRYH5SWx0%2BMWkfB2UY2miOAq4r0MZc34i_sWqBw%40mail.gmail.com.

Reply via email to