Hey everyone,

We ran this experiment and found no significant changes for the core web
vital metrics or for the Chrome Guardrail metrics. We also conducted an
in-depth analysis of multiple internal performance metrics and the results
from that support moving forward with adding the
"is-cross-site-main-frame-navigation" boolean to the HTTP cache. We will
follow-up with an Intent-to-Ship for this soon. :)

If anyone has any questions about this experiment please let me know.
Thanks!

-Andrew

On Fri, Sep 13, 2024 at 10:51 AM Andrew Williams <awil...@chromium.org>
wrote:

> > I'd love to better understand the attack scenario.
>
> I recently put together the following presentation that illustrates the
> attack scenarios this aims to mitigate:
> https://docs.google.com/presentation/d/1xnGpRCyLQnLjvGLMqKZUUDCKZANFhedJyF063S7ifLE/edit?usp=sharing
>
> TL;DR: the attacks involve a malicious site triggering a navigation to a
> cross-site document and/or resource and using timing to leak state.
>
> > I understand that this experiment is going to collect data for
> presenting potential changes to the behaviour.
>
> That is correct, the goal of the experiment is to collect data so that we
> can decide whether/how to proceed w.r.t. addressing cross-site leaks from
> navigations. We would continue to use the blink-dev process for actually
> shipping changes related to this.
>
> Thank you!
>
> -Andrew
>
> On Wed, Sep 11, 2024 at 5:53 PM Alex Russell <slightly...@chromium.org>
> wrote:
>
>> Per today's API OWNERS conversation, I understand that this experiment is
>> going to collect data for presenting potential changes to the behaviour.
>> Assuming that's right, LGTM1.
>>
>> Best,
>>
>> Alex
>>
>> On Wednesday, September 11, 2024 at 6:17:26 AM UTC-7 Yoav Weiss wrote:
>>
>>> I'd love to better understand the attack scenario.
>>>
>>> On Friday, September 6, 2024 at 5:40:55 AM UTC+2 Andrew Williams wrote:
>>>
>>> Contact emails
>>>
>>> miketa...@chromium.org, awil...@chromium.org
>>>
>>> Explainer
>>>
>>> None yet.
>>>
>>> Specification
>>>
>>> https://fetch.spec.whatwg.org/#http-cache-partitions
>>>
>>> Summary
>>>
>>> We aim to experiment with utilizing the initiator site when caching the
>>> responses of cross-site navigations in the HTTP cache. This experiment is
>>> intended to test a potential mitigation for cross-site leak attacks in
>>> which an attacker can initiate a top-level navigation to a given page and
>>> then navigate to a resource known to be loaded by the page in order to
>>> infer sensitive information via load timing.
>>>
>>>
>>> bad.com navigates the user to victim.com (at the top-level??). What
>>> happens then?
>>>
>>> The tested mitigation is also intended as a privacy improvement since it
>>> will make it more difficult for a malicious site to use navigations to
>>> infer whether a user has visited a given site previously.
>>>
>>>
>>> But if one site navigated to another, it doesn't get any timing info
>>> about the "navigated to" site, right?
>>>
>>>
>>>
>>> Blink component
>>>
>>> Internals>Network>Cache
>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component%3AInternals%3ENetwork%3ECache&can=2>
>>>
>>> TAG review
>>>
>>> Not requested yet.
>>>
>>> Risks
>>> Interoperability and Compatibility
>>>
>>> We do not expect compatibility impacts here, but there may be some
>>> performance implications. Safari and Firefox currently ship some notion of
>>> partitioned HTTP caches. We will seek their input once we have a better
>>> idea of the tradeoffs between security/privacy and performance.
>>>
>>> Gecko: No signal requested yet.
>>>
>>> WebKit: No signal requested yet.
>>>
>>> Web developers: No signals
>>>
>>> WebView application risks
>>>
>>> Does this intent deprecate or change behavior of existing APIs, such
>>> that it has potentially high risk for Android WebView-based applications?
>>>
>>> No
>>>
>>> Goals for experimentation
>>>
>>> We would like to run a 1% stable experiment to understand the
>>> performance implications of several approaches to implementing this HTTP
>>> cache security improvement. We expect 6 weeks to be sufficient for
>>> analysis, beginning in M129, but are requesting permission to run from M129
>>> to M131 inclusive in case we run into any delays.
>>>
>>> The approaches we’d like to experiment with are:
>>>
>>>    -
>>>
>>>    Adding a boolean value to the HTTP cache key that is set to true for
>>>    top-level navigations to a URL that is cross-site from the initiator site
>>>    of the navigation
>>>
>>>
>>>
>>>    -
>>>
>>>    Adding the initiator site into the HTTP cache key for top-level
>>>    navigations to a URL that is cross-site from the initiator site of the
>>>    navigation. If the initiator has an opaque origin (for instance, if the
>>>    initiating page was loaded from a data: URL or is a sandboxed iframe) 
>>> then
>>>    no caching of the navigation response will occur.
>>>
>>>    -
>>>
>>>    Adding the initiator site into the HTTP cache key for all
>>>    navigations (including subframe navigations) in the same way as the
>>>    previous approach. With this scheme we’d also replace use of an existing
>>>    HTTP cache key component (called the “is-subframe-document-resource”
>>>    boolean, set to true for all subframe navigations) designed to mitigate
>>>    related attacks from malicious subframes. This scheme is expected to have
>>>    similar performance characteristics to the previous approach but would 
>>> make
>>>    Chromium’s handling of main frame and subframe navigations consistent.
>>>
>>>
>>> Incorporating the initiator into the HTTP cache key will mean that the
>>> responses from renderer-initiated navigations will not be re-used across
>>> contexts with different frame sites or top-frame sites. This could affect
>>> the page load times for previously visited sites in cases where loading a
>>> page over the network is slower than loading the page from the local disk
>>> cache. Renderer-initiated navigations corresponding to, for example,
>>> clicking links on a site, site redirects, and link prefetches that use
>>> “as=’document’”. Incorporating the ‘is-cross-site-top-level-navigation’
>>> boolean is expected to have the least impact on performance since it allows
>>> the most amount of response re-use. Incorporating the full initiator site
>>> is expected to have the most impact since there is less re-use with these
>>> cache partitioning schemes, but this approach may enable future HTTP cache
>>> performance optimizations that are not possible today due to cross-site
>>> leak risks.
>>>
>>> Debuggability
>>>
>>> No special needs.
>>>
>>> Will this feature be supported on all six Blink platforms (Windows, Mac,
>>> Linux, ChromeOS, Android, and Android WebView)?
>>>
>>> No
>>>
>>> All except WebView, which does not currently partition its HTTP cache.
>>>
>>> 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 on chrome://flags
>>>
>>> None
>>>
>>> Finch feature name
>>>
>>> There are several feature flags, one per experiment partition key format:
>>>
>>>    -
>>>
>>>    SplitCacheByCrossSiteMainFrameNavigationBoolean - Enables use of the
>>>    is-cross-site-navigation boolean in the HTTP cache key for main frame
>>>    navigations with cross-site initiators
>>>
>>>    -
>>>
>>>    SplitCacheByMainFrameNavigationInitiator - Enables use of the
>>>    initiator site in the HTTP cache key for main frame navigations with
>>>    cross-site initiators
>>>
>>>    -
>>>
>>>    SplitCacheByNavigationInitiator - Enables use of the initiator site
>>>    in the HTTP cache key for all navigations with cross-site initiators and
>>>    disables use of the existing “is-subframe-document-resource” boolean.
>>>
>>>
>>> Requires code in //chrome?
>>>
>>> To facilitate conducting the experiment we have code to clear chrome’s
>>> HTTP cache when the experiment is conducted, but otherwise no code in
>>> //chrome is needed.
>>>
>>> Estimated milestones
>>>
>>> M129 to M131 inclusive.
>>>
>>> Link to entry on the Chrome Platform Status
>>>
>>> https://chromestatus.com/feature/5190577638080512
>>> <https://chromestatus.com/feature/5190577638080512?gate=5181053938171904>
>>>
>>>

-- 
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 visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEa0%2BkWHa_GyD6%3Du7emyXTOxWwrRvM%2B_xXSUCiVUHod9ihsEnQ%40mail.gmail.com.

Reply via email to