Restrict communication between same-origin documents in different pages with different COOP status #6178
Labels
normative change
topic: cross-origin-opener-policy
Issues and ideas around the new "inverse of rel=noopener" header
COOP was introduced with the goal of allowing browsers to provide greater isolation to pages even when browsers do not have Site Isolation. With the state of the spec, we are able to deliver this for COOP same-origin-plus-coep. Addressing #6177 should allow isolation of COOP same-origin pages. We would also like to provide greater isolation to COOP same-origin-allow-popups pages.
To do this we first need to address #6177. However, we would also need to make same-origin documents embedded in pages with different COOP status behave as cross-origin documents. Let's consider the case where a COOP same-origin-allow-popups on origin A embeds a subframe of origin B. This cross-origin popup opens a popup to page B with COOP unsafe-none. In a browser without Site Isolation, the top-level document A and its subframe B have to be placed in the same process. When the cross-origin iframe opens the page B, because they are same-origin, the browser has to put it in the same process as the iframe, which is page A's process. This is the exact same behavior as if A's COOP was unsafe-none. If subframe B and popup B were considered cross-origin for the purpose of communication because they are in pages with different COOP status, the browser could put them in different processes. This allows to key processes to COOP status and top-level origin when a page sets any COOP higher than unsafe-none.
We believe that this is a reasonable trade off for pages to protect themselves against Spectre. Pages would gain the same process-isolation as with COOP same-origin or same-origin-plus-coep, while preserving access to cross-origin properties on an opened popup. COOP same-origin-allow-popups was introduced to give pages extra security while allowing cross-origin OAuth flows to still work, and we believe this change would allow to do just that.
cc @annevk @domenic
The text was updated successfully, but these errors were encountered: