In your slides you write:

const handle = window.open(“a.com/”)
...
<Use timing to infer prior visit>

I assume here that you can poll "handle" to see when it changes from a document you can access to one you cannot access? Could that information leakage have been fixed instead of making a.com load slower?

/Daniel

On 2025-02-24 19:58, Andrew Williams wrote:
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
                <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 <http://bad.com> navigates the user to victim.com
            <http://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 <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEa0%2BkWHa_GyD6%3Du7emyXTOxWwrRvM%2B_xXSUCiVUHod9ihsEnQ%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
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/f4419d38-36bc-4170-ba02-d324cbab516b%40gmail.com.

Reply via email to