FYI, it looks like WebKit is trending supportive on this change:
https://github.com/WebKit/standards-positions/issues/462#issuecomment-2693662676
On 3/2/25 9:32 PM, Domenic Denicola wrote:
LGTM2.
I'm saddened by the way the implementer community has not been able to
converge upon and specify a unified keying scheme, but I agree we
shouldn't block further improvements on that, since none of the
browsers seem to be making movements toward such alignment. I
appreciate that you pinged
<https://github.com/whatwg/fetch/issues/1035#issuecomment-2658239821>
the relevant thread to see if there's any movement.
On Thursday, February 27, 2025 at 1:23:43 AM UTC+9 Chris Harrelson wrote:
LGTM1
On Tue, Feb 25, 2025 at 7:54 AM Mike Taylor
<miketa...@chromium.org> wrote:
On 2/25/25 2:55 AM, Yoav Weiss (@Shopify) wrote:
Thanks for pushing this!
On Monday, February 24, 2025 at 8:04:31 PM UTC+1 Andrew
Williams wrote:
Contact emailsmiketa...@chromium.org, awil...@chromium.org
Explainer
HTTP cache partitioning in general is covered by
https://github.com/shivanigithub/http-cache-partitioning
<https://github.com/shivanigithub/http-cache-partitioning>,
and this proposal extends partitioning to navigations.
This I2S and the linked resources discuss the
partitioning scheme changes and the specific attack
scenarios that are mitigated.
Specificationhttps://fetch.spec.whatwg.org/#http-cache-partitions
<https://fetch.spec.whatwg.org/#http-cache-partitions>
The spec doesn't seem to indicate any of this logic (nor does
it include triple keying AFAIU).
I don't think it's a blocker, but it'd be nice to get
cross-implementer alignment on the strategy here, or barring
that, add UA-defined conditions.
Triple-keying should be covered by
https://fetch.spec.whatwg.org/#determine-the-network-partition-key
<https://fetch.spec.whatwg.org/#determine-the-network-partition-key>
(see "an implementation-defined value). There's ongoing
discussion in https://github.com/whatwg/fetch/issues/1035
<https://github.com/whatwg/fetch/issues/1035> as well.
A TPAC or three ago we had some conversations in on this
topic, and IMO there is interest in perhaps converging on the
perfect design one day, but I don't see cross-implementer
alignment on a single keying scheme coming any time soon. I
think gsnedders also makes a good point in the fetch issue
that experimentation on keying schemes by UAs for different
modes is also useful to consider.
SummaryChrome’s HTTP cache keying scheme will be updated
to include an “is-cross-site-main-frame-navigation”
boolean to mitigate cross-site leak attacks involving
top-level navigation. Specifically, this will prevent
cross-site 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. This change
also improves privacy by preventing a malicious site from
using navigations to infer whether a user has visited a
given site previously.
For an overview of the attacks mitigated by the
“is-cross-site-main-frame-navigation” boolean, see:
-
https://xsleaks.dev/docs/attacks/navigations/#partitioned-http-cache-bypass
<https://xsleaks.dev/docs/attacks/navigations/#partitioned-http-cache-bypass>
-
https://docs.google.com/presentation/d/1StMrI1hNSw_QSmR7bg0w3WcIoYnYIt5K8G2fG01O0IA/edit?usp=sharing
<https://docs.google.com/presentation/d/1StMrI1hNSw_QSmR7bg0w3WcIoYnYIt5K8G2fG01O0IA/edit?usp=sharing>
Do I understand correctly that this will prevent "Attack 1"
and "Attack 2", but "Attack 3" is already mitigated by triple
keying?
While attack 1 is clear, I'm not sure how come attack 2 isn't
mitigated by the fact that a.com/img <http://a.com/img> is
already partitioned.
Blink componentInternals>Network>Cache
<https://issues.chromium.org/issues?q=customfield1222907:%22Internals%3ENetwork%3ECache%22>
TAG reviewHTTP cache partitioning was originally reviewed
in https://github.com/w3ctag/design-reviews/issues/424
<https://github.com/w3ctag/design-reviews/issues/424>. We
did not submit for a new TAG review since cache
partitioning standardization hasn’t changed much since
then, and since it’s unclear whether there’s support for
updating standards to partitioning by more than just
top-level site.
TAG review statusNot applicable
Risks
Interoperability and CompatibilityInterop risk: We do not
expect compatibility impacts here since the behavior is
not web-visible (other than affecting navigation
completion times), and our earlier 1% experiment didn’t
indicate any significant changes to performance as a
result of this. Regarding interop, Safari and Firefox
currently ship partitioned HTTP caches but with different
partitioning schemes that don’t partition navigations
differently from other network requests.
Gecko:
https://github.com/mozilla/standards-positions/issues/1177
<https://github.com/mozilla/standards-positions/issues/1177>
WebKit:
https://github.com/WebKit/standards-positions/issues/462
<https://github.com/WebKit/standards-positions/issues/462>
Web developers: No signals
Other 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 - cache partitioning is not
enabled for WebView
DebuggabilityPartition keys are visible in net logs, and
whether something was served from the HTTP cache is
visible in DevTools.
Will this feature be supported on all six Blink platforms
(Windows, Mac, Linux, ChromeOS, Android, and Android
WebView)?No, it will be supported on all platforms 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,
this isn’t web visible.
Flag name on chrome://flagsNone
Finch feature
nameSplitCacheByCrossSiteMainFrameNavigationBoolean
Requires code in //chrome?False
Launch bughttps://launch.corp.google.com/launch/4345002
<https://launch.corp.google.com/launch/4345002>
Estimated milestones
Shipping on desktop
135
Shipping on Android
135
Anticipated spec changesOpen questions about a feature
may be a source of future web compat or interop issues.
Please list open issues (e.g. links to known github
issues in the project for the feature specification)
whose resolution may introduce web compat/interop risk
(e.g., changing to naming or structure of the API in a
non-backward-compatible way).The spec already leaves the
HTTP cache key as implementation-defined apart from
partitioning by top-level site. It's unclear whether
other browsers support standardizing any portion of what
we are shipping.
Link to entry on the Chrome Platform
Statushttps://chromestatus.com/feature/5190577638080512
<https://chromestatus.com/feature/5190577638080512?gate=5181053938171904>
Links to previous Intent discussions
Intent to Experiment:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEa0%2BkV1oQg2cc_MWW_RtG9de%3DVk2i1rUv8MrQ49GV0yWZwy_w%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEa0%2BkV1oQg2cc_MWW_RtG9de%3DVk2i1rUv8MrQ49GV0yWZwy_w%40mail.gmail.com>
--
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
<mailto:blink-dev+unsubscr...@chromium.org>.
To view this discussion visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/0e9fd7e0-87ba-4a07-ba77-2d4178ca881b%40chromium.org
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/0e9fd7e0-87ba-4a07-ba77-2d4178ca881b%40chromium.org?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/c9e93ea5-0b83-4389-a8b5-d15a48e1153f%40chromium.org.