Intent to Ship: Origin Isolation By Default / Deprecate document.domain on stable

1017 views
Skip to first unread message

Daniel Vogelheim

unread,
Oct 27, 2022, 10:49:44 AM10/27/22
to blink-dev, Yoav Weiss

Hello all,


The approval for the Intent To Ship for Origin Isolation By Default / Deprecate document.domain asks for a separate intent for the actual default change. This is that separate intent.


A summary of what happened so far:

- Shipping Origin Isolation by Default (and thereby deprecating document.domain) has security benefits, but compatibility risk.

- We added warnings to the developer console and issues panel, published a blog post, and engaged in direct outreach. This has resulted in substantial, measurable reduction of usage. Some sites keep using document.domain, but have mitigated the deprecation with other means. This makes the risk difficult to measure.

- Sampling of sites with document.domain usage and manual inspection yields a potential breakage estimate at ~0.015% of page views.


What we're asking for here is:

- Enable the feature at 50% for beta (+ dev + canary) during M109, as a "last call" for web site authors.

- Launch on stable on M110. (~ Feb '23, so >12 weeks out from today)



------------------------


Contact emails

va...@chromium.org, voge...@chromium.org


Specification

Explainer: https://github.com/mikewest/deprecating-document-domain

HTML Spec draft: https://github.com/whatwg/html/compare/main...otherdaniel:dd


API spec

Yes


Summary

This is a follow-on to the Intent to Ship: Origin Isolation By Default / Deprecate document.domain. We'd like to ship this in M110, stable.


Summary (of the underlying change)

Change the default behavior of the Origin-Agent-Cluster: header / document.domain settability.


Presently, pages within Chromium have site-keyed agent clusters by default, unless the Origin-Agent-Cluster: header is explicitly set to true. This accommodates pages or frames which want to access each other's state, despite being on different origins (but within a site). This is fine for any pages that wish to do so, but because a page *might* set document.domain later on, Chromium currently must use site-keyed agent clusters for *all* pages by default even though the overwhelming majority of pages do not ever make use of this (mis-)feature. In turn, this requires Chromium to use sites as the basis for renderer process isolation (via Site Isolation), which exposes origins to same-site but cross-origin attacks involving compromised renderer processes or the "Spectre" family of side-channel attacks.


This proposal changes the default behaviour of Origin-Agent-Cluster. From a developer's point of view, the new default matches "Origin-Agent-Cluster: ?1". The initial implementation will use origin-keyed agent clusters for all (non-opted out) origins, without changing how many processes Chromium creates. Over time, we can then adapt Chromium's isolation strategy towards origin-keyed processes without further affecting web-visible behaviour.


The developer-visible aspect of this is that for pages with origin-keyed agent clusters, document.domain is no longer settable. Thus, we have marked this intent as a deprecation.


Note that this proposal is about the default. Both modes - site-keyed or origin-keyed agent clusters - remain available to any site, but origin-keyed agent clusters change from opt-in to opt-out. The current behaviour remains available by setting "Origin-Agent-Cluster: ?0".


Blink component

Blink>SecurityFeature


TAG review

https://github.com/w3ctag/design-reviews/issues/564


Risks: Interoperability and Compatibility

There are compatibility risks, which we have reduced with outreach and warnings, and we want to mitigate further by launching at 50% of beta first. An extended discussion of the risk (including attempts at quantitative assessment) can be found in the original intent to ship.


Gecko: Standards position request. ("Worth prototyping")


WebKit: https://lists.webkit.org/pipermail/webkit-dev/2021-December/032067.html (No signals.)


Web developers: No signals.


Activation - Deprecation plan

M109: Enable "Origin Agent Cluster by Default" for 50% of page loads on beta, dev, and canary.

M110: Enable "Origin Agent Cluster by Default" on stable.

 

Security

This change should be security-positive, since setting document.domain will not have any impact on the origin of the document any more.


Debuggability

A deprecation warning has been added to DevTools console and to the issues panel in M98. This warning will file a deprecation report as well using the Reporting API, if so configured.


Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?

Yes


Is this feature fully tested by web-platform-tests?

This is covered by Origin-keyed Agent Cluster tests.


Tracking bug

https://crbug.com/1139851


Launch bug

https://crbug.com/1246823


Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5428079583297536 (document.domain setter deprecation)

https://chromestatus.com/features/5683766104162304 (Origin-keyed agent clusters)


Mike Taylor

unread,
Nov 9, 2022, 12:10:46 PM11/9/22
to Daniel Vogelheim, blink-dev, Yoav Weiss
On 10/27/22 11:49 PM, 'Daniel Vogelheim' via blink-dev wrote:

Hello all,


The approval for the Intent To Ship for Origin Isolation By Default / Deprecate document.domain asks for a separate intent for the actual default change. This is that separate intent.


A summary of what happened so far:

- Shipping Origin Isolation by Default (and thereby deprecating document.domain) has security benefits, but compatibility risk.

- We added warnings to the developer console and issues panel, published a blog post, and engaged in direct outreach. This has resulted in substantial, measurable reduction of usage. Some sites keep using document.domain, but have mitigated the deprecation with other means. This makes the risk difficult to measure.

- Sampling of sites with document.domain usage and manual inspection yields a potential breakage estimate at ~0.015% of page views.


What we're asking for here is:

- Enable the feature at 50% for beta (+ dev + canary) during M109, as a "last call" for web site authors.

This sounds like a good idea. Is there any reason we couldn't go to 50% in M108 as well (or are you trying to avoid breakage over the winter holidays)?

Another question: do we have enterprise policies available for this change?

--
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+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALG6KPNEMgvrOehp5%2Bf48yQ62pY3xqXqATPNxWZ6aYQ%2BXeHHAg%40mail.gmail.com.


Daniel Vogelheim

unread,
Nov 9, 2022, 1:05:59 PM11/9/22
to Mike Taylor, blink-dev, Yoav Weiss
On Wed, Nov 9, 2022 at 6:10 PM Mike Taylor <mike...@chromium.org> wrote:
On 10/27/22 11:49 PM, 'Daniel Vogelheim' via blink-dev wrote:

Hello all,


The approval for the Intent To Ship for Origin Isolation By Default / Deprecate document.domain asks for a separate intent for the actual default change. This is that separate intent.


A summary of what happened so far:

- Shipping Origin Isolation by Default (and thereby deprecating document.domain) has security benefits, but compatibility risk.

- We added warnings to the developer console and issues panel, published a blog post, and engaged in direct outreach. This has resulted in substantial, measurable reduction of usage. Some sites keep using document.domain, but have mitigated the deprecation with other means. This makes the risk difficult to measure.

- Sampling of sites with document.domain usage and manual inspection yields a potential breakage estimate at ~0.015% of page views.


What we're asking for here is:

- Enable the feature at 50% for beta (+ dev + canary) during M109, as a "last call" for web site authors.

This sounds like a good idea. Is there any reason we couldn't go to 50% in M108 as well (or are you trying to avoid breakage over the winter holidays)?

No reason. I'd be happy to go to beta as soon as I receive the lgtms. I had conservatively budgeted that to be 109. :-)
 

Another question: do we have enterprise policies available for this change?


Yes; the policy is here: OriginAgentClusterDefaultEnabled

Yoav Weiss

unread,
Nov 10, 2022, 7:19:45 AM11/10/22
to Daniel Vogelheim, Mike Taylor, blink-dev
LGTM1 to roll this out to 50% of Beta/Dev/Canary for either M108 or M109, and carefully roll this out for M110, once it hits stable.

Chris Harrelson

unread,
Nov 10, 2022, 11:19:04 AM11/10/22
to Yoav Weiss, Daniel Vogelheim, Mike Taylor, blink-dev

Mike Taylor

unread,
Nov 10, 2022, 11:42:37 AM11/10/22
to Chris Harrelson, Yoav Weiss, Daniel Vogelheim, blink-dev
LGTM3

Yaseen Khan

unread,
Dec 5, 2022, 11:02:52 AM12/5/22
to blink-dev, Daniel Vogelheim, yoav...@chromium.org
Hi Daniel,

Need clarifications for the below points. 

Activation - Deprecation plan

M109: Enable "Origin Agent Cluster by Default" for 50% of page loads on beta, dev, and canary. 
--- As a developer, do I need to set  "Origin-Agent-Cluster: ?1" as a header for 50% of page visits or chromium enforcing for 50% of page visits from browser(Means 50% ( "Origin-Agent-Cluster: ?1")  and another 50% ( "Origin-Agent-Cluster: ?0")?. 

I have installed M109 beta and I have not set orginAgentCluster in my site and I can see in console "window.originAgentCluster" always return false for all sites/pages. Could you clarify on this?. How do I know whether Origin-Agent-Cluster enabled or not in M109?

Daniel Vogelheim

unread,
Dec 14, 2022, 12:36:56 PM12/14/22
to Mike Taylor, Chris Harrelson, Yoav Weiss, blink-dev
Hello all,

An update: Unfortunately we have discovered a bug with this feature, just as I was getting ready to enable it. The bug also affects pages that have not even set document.domain. Since I have now missed a substantial portion of the 109 beta cycle I'd like to delay the roll out once more, and shift it by one milestone (or two; depending on when everything is fixed).

On the positive side: Recently the last of the previously identified big document.domain users, that together accounted for about 50% of remaining usage, has dropped their usage. So current usage is lower than previously reported. See the usage dip around late November at deprecate.it (1st graph). 

Daniel Vogelheim

unread,
Dec 14, 2022, 12:47:52 PM12/14/22
to Yaseen Khan, blink-dev, yoav...@chromium.org
Hello Yaseen,

Sorry for not betting back earlier.

On Mon, Dec 5, 2022 at 10:05 AM Yaseen Khan <yase...@gmail.com> wrote:

Activation - Deprecation plan

M109: Enable "Origin Agent Cluster by Default" for 50% of page loads on beta, dev, and canary. 
--- As a developer, do I need to set  "Origin-Agent-Cluster: ?1" as a header for 50% of page visits or chromium enforcing for 50% of page visits from browser(Means 50% ( "Origin-Agent-Cluster: ?1")  and another 50% ( "Origin-Agent-Cluster: ?0")?. 

No, you should always set the header (or remove document.domain usage). Setting the header means you instruct the browser to cluster pages by origin ("?1") (or not, "?0"), and thus the change of the default will not affect you, since you're no longer relying on the default.

Note that origin-agent clustering has been implemented for quite a while. What changes now is how the default is handled: Pages that do not explicitly request clustering to be on or off used to get the off behaviour ("?0"), and will soon get the on behaviour ("?1"). In other words, it turns from an opt-in feature into an opt-out feature. By setting the header to off ("?0"), you request "off" behaviour - which in the past you got automatically. It's safe to always do that, since it retains current behaviour.

I have installed M109 beta and I have not set orginAgentCluster in my site and I can see in console "window.originAgentCluster" always return false for all sites/pages. Could you clarify on this?. How do I know whether Origin-Agent-Cluster enabled or not in M109?

M109 beta: Your observation is correct. Because of a bug found at the last minute, I have not actually enabled the feature. Unfortunately I have to delay the rollout.

Daniel Vogelheim

unread,
Jan 13, 2023, 9:53:57 AMJan 13
to Mike Taylor, Chris Harrelson, Yoav Weiss, blink-dev
Hello all,

We've now handled the bugs we've discovered, and I would like to make another attempt at launching. I'll follow the plan that was approved here, but two milestones later: Launch to 50% beta in M111 (or late M110, if I can still catch a bit of that release cycle), and then ramp on stable once M112 is out.

Rick Byers

unread,
Jan 13, 2023, 11:37:15 AMJan 13
to Daniel Vogelheim, Mike Taylor, Chris Harrelson, Yoav Weiss, blink-dev, Eiji Kitamura, Brandon Heenan
Thanks for the update Daniel, good luck!

In case others, like me, have missed or forgotten the long history of this difficult deprecation and what it means for web developers, this blog post is a good summary. One critical thing it doesn't mention, but probably should, is that the OriginAgentClusterDefaultEnabled enterprise policy can also be used to revert the default on managed devices (though it looks like the launching milestone needs to be updated there too).

Rick

Eiji Kitamura

unread,
Jan 16, 2023, 3:06:05 AMJan 16
to Rick Byers, Daniel Vogelheim, Mike Taylor, Chris Harrelson, Yoav Weiss, blink-dev, Brandon Heenan
I've updated the blog post stating Chrome 111 is where we ship the feature, but looks like it's rolling out through 111 and 112?
I'll update the blog post to mention `OriginAgentClusterDefaultEnabled` enterprise policy.

--
Eiji Kitamura / えーじ | Developer Advocate | @agektmr | Office Location: Tokyo Shibuya

Rick Byers

unread,
Jan 16, 2023, 9:46:52 AMJan 16
to Eiji Kitamura, Daniel Vogelheim, Mike Taylor, Chris Harrelson, Yoav Weiss, blink-dev, Brandon Heenan
Thanks so much Eiji!

Brandon Heenan

unread,
Jan 16, 2023, 11:21:33 AMJan 16
to Rick Byers, Eiji Kitamura, Daniel Vogelheim, Mike Taylor, Chris Harrelson, Yoav Weiss, blink-dev, Marijke Hoste
We'll make the update in the enterprise release notes too. Thanks for keeping us in the loop

Eiji Kitamura

unread,
Jan 20, 2023, 11:12:32 AMJan 20
to Brandon Heenan, Rick Byers, Daniel Vogelheim, Mike Taylor, Chris Harrelson, Yoav Weiss, blink-dev, Marijke Hoste
FYI, the enterprise bit has been added to the article.

Daniel Vogelheim

unread,
Mar 31, 2023, 9:54:21 AMMar 31
to Eiji Kitamura, Brandon Heenan, Rick Byers, Mike Taylor, Chris Harrelson, Yoav Weiss, blink-dev, Marijke Hoste
Hello all, I'm afraid I have to delay this a bit more. :(

We have a bug report (tracked in crbug.com/1429587) that breaks existing apps. The important thing here is that it does not break document.domain setting and subsequent cross-origin access, but that instead -- if the conditions are just right; or arguably just wrong -- the app can get into a state where same-origin accesses are mistakenly blocked. Apparently an app can get into a state where frames within the same page are inconsistently assigned to agent clusters (i.e., frames in the same origin end up in different processes), and thus subsequent accesses within that origin may fail.

My plan right now is to leave this on at 50% beta, but to not proceed to any stable releases at any percentage. I'll update this thread when I have a better handle on the bug and can suggest a good way to proceed.

Mike Taylor

unread,
Mar 31, 2023, 10:17:32 AMMar 31
to Daniel Vogelheim, Eiji Kitamura, Brandon Heenan, Rick Byers, Chris Harrelson, Yoav Weiss, blink-dev, Marijke Hoste

Thanks for the update Daniel, and good luck on fixing the bug. :)

Marijke Hoste

unread,
Apr 3, 2023, 1:01:54 PMApr 3
to Mike Taylor, Daniel Vogelheim, Eiji Kitamura, Brandon Heenan, Rick Byers, Chris Harrelson, Yoav Weiss, blink-dev
Thanks for the update indeed! 

On the Enterprise-side, we've mentioned this in the past 7 versions of the Enterprise Release Notes, so Admins are aware this is coming and have had sufficient notification. We don't think that it's necessary to update them of the (potential) delays. 
--
Google Logo
Marijke Hoste 
Program Manager, Chrome Enterprise
mho...@google.com

Eiji Kitamura

unread,
Apr 14, 2023, 1:05:29 AMApr 14
to Marijke Hoste, Mike Taylor, Daniel Vogelheim, Brandon Heenan, Rick Byers, Chris Harrelson, Yoav Weiss, blink-dev
I've updated the blog so that it's clear that this change is not happening in Chrome 112.
Has the new milestone been determined yet?

Daniel Vogelheim

unread,
May 26, 2023, 10:25:07 AMMay 26
to blink-dev, Brandon Heenan, Rick Byers, Mike Taylor, Chris Harrelson, Yoav Weiss, Eiji Kitamura, Marijke Hoste
Hello all, it's been a while... The bug reports should now be resolved, and we'd like to have another go at this in the M115 milestone. That is: Remain at 50% on beta; starting with 115 ramp up on stable to 1% / 10% / 50% / 100%, every 14d. Let's hope it sticks this time.

Daniel

Rick Byers

unread,
May 26, 2023, 11:21:08 AMMay 26
to Daniel Vogelheim, blink-dev, Brandon Heenan, Mike Taylor, Chris Harrelson, Yoav Weiss, Eiji Kitamura, Marijke Hoste
Thanks for the update Daniel. Still LGTM. Good luck!

Eiji Kitamura

unread,
May 26, 2023, 11:25:52 AMMay 26
to Rick Byers, Maud Nalpas, Daniel Vogelheim, blink-dev, Brandon Heenan, Mike Taylor, Chris Harrelson, Yoav Weiss, Marijke Hoste
@Maud Nalpas is taking over the DevRel work.
Reply all
Reply to author
Forward
0 new messages