Anne has put together a PR draft <https://github.com/whatwg/fetch/pull/1442>. Thanks Anne! :)
Can y'all provide feedback on it? Also, how far is the PR draft from what y'all are planning to ship? On Tue, May 17, 2022 at 9:08 AM Mike West <mk...@chromium.org> wrote: > I'm comfortable with the risk here, given both the low overall upper bound > on the number of requests that might be affected (and the presumably lower > number of page views), coupled with the security benefits of hardening CORB > and simplifying the mental model for developers. LGTM1. > > That said, I agree with Yoav that we should get the spec into Fetch to the > extent possible. Given support from Mozilla and us, that could hopefully be > a straightforward replacement of https://fetch.spec.whatwg.org/#corb, > with TODO blocks around the bits we're not sure of yet (JavaScript > sniffing, for instance). Łukasz, perhaps you could collaborate with +Anne > van Kesteren <ann...@annevk.nl> to get that done? If you don't have time, > I can look around for someone to support y'all (+Daniel Vogelheim > <vogelh...@chromium.org>, for instance! Hello, Daniel!). > > -mike > > > On Tue, May 17, 2022 at 8:50 AM Yoav Weiss <yoavwe...@chromium.org> wrote: > >> >> >> On Thu, May 12, 2022 at 12:12 AM Łukasz Anforowicz <luka...@chromium.org> >> wrote: >> >>> >>> >>> On Wed, May 11, 2022 at 12:24 AM Yoav Weiss <yoavwe...@chromium.org> >>> wrote: >>> >>>> >>>> >>>> On Wed, May 11, 2022 at 2:56 AM Łukasz Anforowicz <luka...@chromium.org> >>>> wrote: >>>> >>>>> On Mon, May 9, 2022 at 11:35 PM Mike West <mk...@chromium.org> wrote: >>>>> >>>>>> Hey Łukasz, >>>>>> >>>>>> I'm in favor of shipping this change. It will harden our defenses >>>>>> against side-channel attacks at minimal web-visible cost, and clear a >>>>>> path >>>>>> for a WebKit implementation that some folks have expressed interest in >>>>>> (see >>>>>> the CORB thread on webkit-dev@ >>>>>> <https://lists.webkit.org/pipermail/webkit-dev/2022-March/032167.html>). >>>>>> That said, I have two questions: >>>>>> >>>>>> 1. The ORB telemetry results - Mar 2022 >>>>>> >>>>>> <https://docs.google.com/document/d/1MbYQbL4WQyZdCQcZcKyzxHA0UxbHTC0O4bQXFgm8o6A/edit?usp=sharing> >>>>>> document >>>>>> suggests a substantially smaller impact than the 0.01% number you >>>>>> mention a >>>>>> few times in this intent: 0.002% - 0.006% (it would be ideal if you >>>>>> could >>>>>> create a public version of that document :) ). Can you help me >>>>>> understand >>>>>> the distinctions between those measurements? >>>>>> >>>>>> 0.01% is just a conservative rounding of the 0.002%-0.006% numbers >>>>> from the other doc. (Sorry about that... https://xkcd.com/2585/ >>>>> seems somewhat applicable I guess...) >>>>> >>>> >>>> Also, that number is presented as a percentage from HTTP requests. Do >>>> you have the data on how this presents itself as a percentage of page >>>> views? >>>> >>> >>> No, we don't have such a breakdown of the data. >>> >>> One reason is that ORB (and code gathering ORB's telemetry data) is >>> hosted inside the NetworkService process which is mostly unaware of pages >>> and page views (I think; I guess UKM would require knowing about pages, >>> but I wasn't able to find UKM-related code under //services/network). We >>> could try to count the various ORB outcomes per URLLoaderFactory (which >>> roughly corresponds to a single HTML frame; I note that in the past >>> about:blank frame might have shared a URLLoaderFactory with their >>> opener/parent/initiator - that's probably ok), but getting this data would >>> take time... >>> >> >> OK, would it be fair to assume that at least for no-cors range requests >> (most likely video/audio requests), there would be more than one per page >> view, and hence we could expect page view based %ages to be significantly >> lower? >> >> >>> >>> If the majority of these requests are range requests, there's reason to >>>> believe there was more than one per page view. >>>> >>> >>> We can try to estimate how many responses report HTTP 206 status code. >>> I looked at Net.HttpResponseCode and "206: Partial Content" accounts for >>> around 0.35% - 1.13% of all HTTP responses (depending on the platform I >>> looked at). I've added more detailed data + links to a new section in the >>> ORB >>> telemetry results - Mar 2022 >>> <https://docs.google.com/document/d/1MbYQbL4WQyZdCQcZcKyzxHA0UxbHTC0O4bQXFgm8o6A/edit?usp=sharing> >>> document. >>> >>>> >>>> >>>>> >>>>> >>>>>> >>>>>> 1. >>>>>> 2. The current specification situation is confusing. >>>>>> https://fetch.spec.whatwg.org/#corb doesn't match what Chrome >>>>>> does, and https://github.com/annevk/orb doesn't match what this >>>>>> v0.1 implementation does. Is there something we can point developers >>>>>> to >>>>>> which would explain Chrome's behavior once we ship this initial stab >>>>>> at ORB? >>>>>> >>>>>> Hmmm... this is a fair point. We have some docs, but I am not sure >>>>> if they are distilled/clear enough for public consumption. Notably, the >>>>> "Gradual >>>>> CORB -> ORB transition <http:///>" doc talks about the main >>>>> difference between full ORB and ORB v0.1 (JS sniffing -vs- HTML/JSON/XML >>>>> sniffing) and also provides a fairly comprehensive list of other, minor >>>>> differences is in the "Appendix: ORB v0.1 vs full ORB differences >>>>> <https://docs.google.com/document/d/1qUbE2ySi6av3arUEw5DNdFJIKKBbWGRGsXz_ew3S7HQ/edit#heading=h.mptmm5bpjtdn>" >>>>> section of the doc. >>>>> >>>>> But... I think that explaining Chrome behavior can be done by just >>>>> referring to the full ORB spec. Chrome's ORB v0.1 blocks only a subset of >>>>> resources that full ORB would block, but the ones that are blocked by >>>>> Chrome can be explained by the full ORB algorithm (adding a disclaimer to >>>>> that explanation as needed and pointing out that Chrome only implements a >>>>> subset of the full ORB algorithm). Does that seem reasonable? >>>>> >>>> >>>> Another point on that front - we don't typically ship things that are >>>> specified in personal repos. While this case is somewhat different than the >>>> typical case (that is, it's not a personal repo of someone working on >>>> Chrome), it'd still be good to move the spec to a more official space, >>>> where more folks feel free to contribute to it. >>>> Have y'all talked to Anne about moving the repo to the WHATWG or to >>>> some incubation venue? >>>> >>> >>> No, we haven't discussed it yet. FWIW @Anne van Kesteren >>> <ann...@annevk.nl> is in CC of this email thread, so maybe they can >>> chime in? >>> >>>> >>>> >>>>> >>>>>> Thanks! >>>>>> >>>>>> -mike >>>>>> >>>>>> >>>>>> On Mon, May 9, 2022 at 8:26 PM Łukasz Anforowicz < >>>>>> luka...@chromium.org> wrote: >>>>>> >>>>>>> On Fri, May 6, 2022 at 4:45 PM Mike Taylor <miketa...@chromium.org> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi there, >>>>>>>> >>>>>>>> While we review this, can we ask WebKit for a signal? ( >>>>>>>> bit.ly/blink-signals). >>>>>>>> >>>>>>> >>>>>>> Done - see: >>>>>>> https://lists.webkit.org/pipermail/webkit-dev/2022-May/032222.html >>>>>>> >>>>>>> >>>>>>>> Also, https://github.com/w3ctag/design-reviews/issues/618 is the >>>>>>>> TAG review for this, correct? >>>>>>>> >>>>>>> >>>>>>> Not quite. This was a review of just one aspect of ORB - having a >>>>>>> list of MIME types for which it is never allowed to have a response in >>>>>>> mode=no-cors (this aspect is shared across ORB and CORB) . OTOH some >>>>>>> comments in this review >>>>>>> <https://github.com/w3ctag/design-reviews/issues/618#issuecomment-806017154> >>>>>>> did highlight that ORB has no impact on behavior and >>>>>>> functionality (assuming HTTP responses use correct `Content-Type`). >>>>>>> >>>>>>> For now, I assume that no additional reviews are needed given that >>>>>>> >>>>>>> - No new API surface >>>>>>> - No behavior change if HTTP responses use correct >>>>>>> `Content-Type`. >>>>>>> - If an incorrect or inaccurate `Content-Type` is used, then ORB >>>>>>> v0.1 introduces minimal change in behavior compared to CORB (blocking >>>>>>> additional 0.01% of HTTP responses; see the original email for more >>>>>>> details and examples). >>>>>>> >>>>>>> FWIW, since ORB does cause known changes in 0.01% of HTTP responses, >>>>>>> we thought that an official intent-to-ship route is the safest path >>>>>>> going >>>>>>> forward. OTOH, feel free to guide us toward another process if needed - >>>>>>> e.g. maybe an argument can be made to use the "web developer facing >>>>>>> change to existing code >>>>>>> <https://www.chromium.org/blink/launching-features/#web-developer-facing-change-to-existing-code>" >>>>>>> path instead. >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> -Lukasz >>>>>>> >>>>>>> >>>>>>>> On 5/5/22 2:02 PM, Łukasz Anforowicz wrote: >>>>>>>> >>>>>>>> Hello! >>>>>>>> >>>>>>>> The goal of this email is to: >>>>>>>> >>>>>>>> - Seek LGTMs from Blink API owners for the intent to ship ORB >>>>>>>> v0.1 <https://chromestatus.com/feature/4933785622675456> in >>>>>>>> Chrome M103. A formal, semi-automatically-generated intent-to-ship >>>>>>>> data >>>>>>>> can be found at the end of this email. >>>>>>>> - Provide an overview of ORB, motivations for shipping it, and >>>>>>>> its (low) risks. >>>>>>>> - Highlight scenarios where web developers might want to >>>>>>>> double-check the MIME types used by their HTTP servers when serving >>>>>>>> certain >>>>>>>> resources. >>>>>>>> >>>>>>>> >>>>>>>> *Overview of ORB* >>>>>>>> >>>>>>>> Opaque Response Blocking (ORB) is a replacement for Cross-Origin >>>>>>>> Read Blocking (CORB). CORB and ORB are both heuristics that attempt to >>>>>>>> prevent cross-origin disclosure of “no-cors” subresources. An example >>>>>>>> attack that ORB and CORB prevent is where an attacker’s frame contains >>>>>>>> <img >>>>>>>> src=”https://victim.example.com/secret.json”> which an attacker >>>>>>>> reads using either Spectre or a compromised renderer. Site Isolation >>>>>>>> depends on either CORB or ORB to keep cross-site secrets out of the >>>>>>>> renderer process. For more information please see >>>>>>>> https://www.chromium.org/Home/chromium-security/corb-for-developers >>>>>>>> . >>>>>>>> >>>>>>>> We are considering replacing CORB with ORB because ORB is more >>>>>>>> secure: CORB fails open (it only blocks what its heuristics recognize >>>>>>>> as >>>>>>>> blockable) and ORB fails closed (it only allows what its heuristics >>>>>>>> recognize as scripts, stylesheets, images, audio, or video). Improved >>>>>>>> security properties mean that ORB is more likely to be a broadly >>>>>>>> adopted >>>>>>>> standard. >>>>>>>> >>>>>>>> ORB spec is being iterated on at https://github.com/annevk/orb. >>>>>>>> ORB has not been shipped by any browser today (Firefox tracks their >>>>>>>> efforts >>>>>>>> in 1532642 >>>>>>>> <https://bugzilla.mozilla.org/show_bug.cgi?id=1532642#c19> and >>>>>>>> plans to resume the work soon). CORB is partially covered by >>>>>>>> https://fetch.spec.whatwg.org/#corb (HTML, JSON, >>>>>>>> JS-parser-breaker, nor XML sniffing is not covered). Chromium is the >>>>>>>> only >>>>>>>> browser that implements CORB today. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *Motivation for ORB v0.1 * >>>>>>>> >>>>>>>> At this point, there remain open questions about the feasibility of >>>>>>>> the JS detection heuristics required by full ORB. Still, the >>>>>>>> incremental >>>>>>>> benefits of adopting even a subset of ORB are definitely desirable. We >>>>>>>> call this subset ORBv0.1 - the main difference from full ORB is >>>>>>>> replacing >>>>>>>> JS sniffing/parsing with CORB’s more limited HTML, JSON, and XML >>>>>>>> sniffers. >>>>>>>> In other words, ORBv0.1 still fails open and only blocks a subset of >>>>>>>> known >>>>>>>> response types, but it blocks more than CORB. >>>>>>>> >>>>>>>> *ORBv0.1 offers incremental security benefits compared to CORB*. >>>>>>>> ORBv0.1 blocks the following kinds of HTTP responses that CORB wouldn’t >>>>>>>> block: >>>>>>>> >>>>>>>> - CORB blocks responses that contain HTML and XML only if they >>>>>>>> are labeled with HTML mime type >>>>>>>> <https://mimesniff.spec.whatwg.org/#html-mime-type> or XML mime >>>>>>>> type <https://mimesniff.spec.whatwg.org/#xml-mime-type>. >>>>>>>> ORBv0.1 blocks responses that contain HTML and XML even if they are >>>>>>>> mislabeled (e.g. HTML served as application/octet-stream, or XML >>>>>>>> served as >>>>>>>> text/html). >>>>>>>> - CORB blocks range request responses only if they are labeled >>>>>>>> with HTML, JSON, or XML mime type. ORBv0.1 blocks all range request >>>>>>>> responses, unless they come from a URL that ORBv0.1 has earlier >>>>>>>> recognized >>>>>>>> (via sniffing, or via mime type) as audio or video. >>>>>>>> >>>>>>>> Note that both CORB and ORBv0.1 would block responses that contain >>>>>>>> JSON or JS-parser-breakers. OTOH, this CORB protection can be >>>>>>>> bypassed if >>>>>>>> the victim’s server allows range requests (which are not blocked by >>>>>>>> CORB, >>>>>>>> except for HTML, JSON, or XML mime type). ORBv0.1 closes that gap. >>>>>>>> >>>>>>>> ORBv0.1 is also an incremental step toward full ORB compliance. At >>>>>>>> the very least ORBv0.1 makes it easier to experiment with JS detection >>>>>>>> heuristics (including full Javascript parsing if necessary and >>>>>>>> acceptable >>>>>>>> from performance perspective). >>>>>>>> >>>>>>>> >>>>>>>> *Shipping ORBv0.1 in Chrome 103* >>>>>>>> >>>>>>>> Implementing ORB in Chromium is tracked in >>>>>>>> https://crbug.com/1178928 - *we plan to ship ORBv0.1 in Chrome >>>>>>>> M103*. Chrome’s implementation of CORB and ORBv0.1 covers all >>>>>>>> platforms except iOS. This also includes Android WebView. Chrome’s >>>>>>>> implementation is hosted in the NetworkService. >>>>>>>> >>>>>>>> >>>>>>>> *Backcompatibility risks of ORBv0.1* >>>>>>>> >>>>>>>> *The backcompatibility risk of shipping ORB seems low: less than >>>>>>>> 0.01% of all HTTP requests are at risk* because they are blocked >>>>>>>> by ORB and not by CORB. Note that this is an *upper* bound for the >>>>>>>> amount >>>>>>>> of possible breakage: >>>>>>>> >>>>>>>> - This number includes responses with payload that is *not* >>>>>>>> valid in no-cors contexts. For example - <img src=” >>>>>>>> https://example.com/document.html”> will not work regardless of >>>>>>>> whether ORB blocks such a response or not. >>>>>>>> - This number is based on older telemetry results. Recent CLs >>>>>>>> should further reduce the risk: >>>>>>>> - https://crrev.com/c/3554875: Always allowing all audio/* >>>>>>>> and video/* reduces the risk of breaking range responses. >>>>>>>> - https://crrev.com/c/3599601: Always allowing “text/css” >>>>>>>> removes the risk of breaking html/css polyglot documents (which >>>>>>>> used to be >>>>>>>> blocked by ORBv0.1 when they sniffed as HTML or has >>>>>>>> JS-parser-breakers) >>>>>>>> >>>>>>>> Still, there are certain scenarios that have a higher risk profile >>>>>>>> - ORBv0.1 risks breaking the following scenarios: >>>>>>>> >>>>>>>> - HTTP 200 responses for audio / image / video subresources >>>>>>>> that 1) are not labeled as audio/*, image/*, nor video/* mime type, >>>>>>>> and >>>>>>>> that 2) do *not* sniff as media according to the audio/video >>>>>>>> >>>>>>>> <https://mimesniff.spec.whatwg.org/#audio-or-video-type-pattern-matching-algorithm> >>>>>>>> or image sniffing >>>>>>>> >>>>>>>> <https://mimesniff.spec.whatwg.org/#image-type-pattern-matching-algorithm> >>>>>>>> algorithms used by ORB, and that 3) *do* sniff as HTML, JSON, or >>>>>>>> XML. >>>>>>>> - *Hypothetical* example: DASH manifests (a format that >>>>>>>> sniffs as XML), labeled as application/octet-stream or >>>>>>>> text/html. These >>>>>>>> are only *hypothetical* (i.e. there is no real backcompatibility >>>>>>>> risk), >>>>>>>> because there is no native DASH support in Chrome - polyfills use >>>>>>>> CORS-mediated `fetch(...)` and are therefore unaffected by ORB. >>>>>>>> - HTTP 206 range request responses for audio / video >>>>>>>> subresources that are not labeled as audio/*, image/*, nor video/* >>>>>>>> mime >>>>>>>> type, and that have not been earlier (e.g. when processing a HTTP >>>>>>>> 200 >>>>>>>> response) sniffed as media according to the audio/video sniffing >>>>>>>> >>>>>>>> <https://mimesniff.spec.whatwg.org/#audio-or-video-type-pattern-matching-algorithm> >>>>>>>> algorithms used by ORB. >>>>>>>> - Example: hypothetical future/under-development/new video >>>>>>>> format served as application/octet-stream or text/html and >>>>>>>> requested via >>>>>>>> range requests. >>>>>>>> - Example: format covered by the sniffing spec >>>>>>>> >>>>>>>> <https://mimesniff.spec.whatwg.org/#matching-a-mime-type-pattern>, >>>>>>>> but not implemented by Chromium sniffers (we have decided >>>>>>>> against updating >>>>>>>> Chromium code when discussing https://crrev.com/c/3352765). >>>>>>>> For example, AIFF or AVI video served as >>>>>>>> application/octet-stream or >>>>>>>> text/html and requested via range requests. >>>>>>>> - Example: mp4 video that is labeled as >>>>>>>> application/octet-stream and requires range requests that start >>>>>>>> reading the >>>>>>>> media resources from its middle bytes (giving ORB no chances to >>>>>>>> sniff the >>>>>>>> initial bytes as video). >>>>>>>> - Telemetry shows that out of all responses blocked by ORB >>>>>>>> and not by CORB (so out of 0.01% of all HTTP responses) between >>>>>>>> 4.1% (on >>>>>>>> Windows) and 39.6% (on Android) have been blocked because of an >>>>>>>> unexpected >>>>>>>> range response (this data was gathered before the fix in >>>>>>>> https://crrev.com/c/3554875). >>>>>>>> >>>>>>>> In the scenarios outlined above, web developers should double-check >>>>>>>> that the HTTP responses use a Content-Type that indicates multimedia >>>>>>>> content - e.g. audio/*, video/*, application/dash+xml, application/ogg, >>>>>>>> text/vtt, etc. >>>>>>>> >>>>>>>> For more details, please see the (Google-internal) “ORB telemetry >>>>>>>> results - Mar 2022 >>>>>>>> <https://docs.google.com/document/d/1MbYQbL4WQyZdCQcZcKyzxHA0UxbHTC0O4bQXFgm8o6A/edit?usp=sharing>” >>>>>>>> document. >>>>>>>> >>>>>>>> >>>>>>>> *Managing the backcompatibility risk* >>>>>>>> >>>>>>>> Given low risk of shipping ORB v0.1 (less than 0.01% of all HTTP >>>>>>>> responses), we have considered but ultimately decided against taking >>>>>>>> the >>>>>>>> following actions: >>>>>>>> >>>>>>>> - We don’t plan to implement support for a reverse Origin Trial >>>>>>>> (that could be used by ORB-affected websites in an emergency, to >>>>>>>> opt-out of >>>>>>>> ORB). We believe that a base::Feature-based kill-switch is a >>>>>>>> sufficient >>>>>>>> precaution. >>>>>>>> - We don’t plan to emit additional notifications about >>>>>>>> responses blocked by ORB. We believe that the existing CORB >>>>>>>> warning in >>>>>>>> DevTools is sufficient: >>>>>>>> >>>>>>>> Cross-Origin Read Blocking (CORB) blocked cross-origin response >>>>>>>> https://www.example.com/example.html with MIME type text/html. See >>>>>>>> https://www.chromestatus.com/feature/5629709824032768 for more >>>>>>>> details. >>>>>>>> >>>>>>>> >>>>>>>> - For now we plan to keep referring to the feature as CORB >>>>>>>> (e.g. in DevTools warnings), because >>>>>>>> - ORB builds on top of CORB (e.g. wrt blocking behavior >>>>>>>> where a blocked response has its HTTP response headers stripped >>>>>>>> and is >>>>>>>> injected with an empty response body). >>>>>>>> - Plenty of CORB documentation exists and applies equally >>>>>>>> well to ORB (e.g. rationale and description of security benefits >>>>>>>> provided >>>>>>>> at >>>>>>>> >>>>>>>> https://www.chromium.org/Home/chromium-security/corb-for-developers >>>>>>>> ). >>>>>>>> - We don’t gather additional information about affected HTTP >>>>>>>> resources: >>>>>>>> - We want to avoid gathering URLs of HTTP resources, since >>>>>>>> they may be PII (Personally Identifiable Information). We also >>>>>>>> note that >>>>>>>> Rappor >>>>>>>> >>>>>>>> <https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/42852.pdf> >>>>>>>> is deprecated and UKM only allows logging of certain, limited >>>>>>>> URLs (e.g. >>>>>>>> URLs of top-level pages, and of installed Chrome Extensions). >>>>>>>> - Non-PII information gathered via temporary crash keys >>>>>>>> >>>>>>>> <https://chromium-review.googlesource.com/c/chromium/src/+/3465612> >>>>>>>> have been sufficient for identifying and fixing some incorrect >>>>>>>> behavior >>>>>>>> (see https://crrev.com/c/3554875: which fixed handling of >>>>>>>> range requests). >>>>>>>> >>>>>>>> We did or plan to take the following actions to manage the risk of >>>>>>>> shipping ORB: >>>>>>>> >>>>>>>> - We tweaked CORB's >>>>>>>> https://chromestatus.com/feature/5629709824032768 entry to call >>>>>>>> out what is changing in Chrome 103. >>>>>>>> - We plan to respond to bug reports (if any) by >>>>>>>> - Identifying whether the blocked response affected page >>>>>>>> behavior, or only changed what type of error occurred (which is >>>>>>>> the typical >>>>>>>> outcome for bugs filed about CORB). >>>>>>>> - Recommending to use a more specific MIME type in the >>>>>>>> Content-Type HTTP response header. >>>>>>>> - Consider deploying a base::Feature-based kill switch if >>>>>>>> required (possibly only on some platforms; we’ve determined that >>>>>>>> deploying >>>>>>>> the kill-switch on Android-WebView-only is feasible). >>>>>>>> >>>>>>>> >>>>>>>> *Implementation risks* >>>>>>>> >>>>>>>> PerFactoryState will be stored per URLLoaderFactory and will >>>>>>>> remember URLs of cross-origin audio/video responses that didn’t have >>>>>>>> audio/* nor video/* mime type, but that sniffed as audio/video. We >>>>>>>> think >>>>>>>> that the additional memory pressure should be acceptable. We will >>>>>>>> monitor >>>>>>>> existing memory metrics during launch. >>>>>>>> >>>>>>>> >>>>>>>> *Plans beyond ORB v0.1* >>>>>>>> >>>>>>>> Shipping ORB v0.1 will allow the following tasks to move forward: >>>>>>>> >>>>>>>> - Deleting code associated with CORB. >>>>>>>> - Removing remaining differences between ORB spec and Chrome’s >>>>>>>> ORB implementation. For more details please see the “ORB v0.1 >>>>>>>> vs full ORB differences >>>>>>>> >>>>>>>> <https://docs.google.com/document/d/1qUbE2ySi6av3arUEw5DNdFJIKKBbWGRGsXz_ew3S7HQ/edit#heading=h.mptmm5bpjtdn>” >>>>>>>> section in the “Gradual CORB -> ORB transition >>>>>>>> >>>>>>>> <https://docs.google.com/document/d/1qUbE2ySi6av3arUEw5DNdFJIKKBbWGRGsXz_ew3S7HQ/edit?usp=sharing>” >>>>>>>> document. Lack of Javascript sniffing is one major difference, but >>>>>>>> there >>>>>>>> are also minor other differences (e.g. blocking by injecting an >>>>>>>> empty >>>>>>>> response body VS a network error). >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Lukasz Anforowicz (on behalf of the Chrome Security Architecture >>>>>>>> team) >>>>>>>> >>>>>>>> PS. Below is the more formal, >>>>>>>> automatically-generated(-and-then-slightly-edited) intent-to-ship data >>>>>>>> based on https://chromestatus.com/feature/4933785622675456: >>>>>>>> >>>>>>>> *Contact emails:* >>>>>>>> luka...@chromium.org, cr...@chromium.org, vogelh...@chromium.org >>>>>>>> >>>>>>>> *Specification:* >>>>>>>> https://github.com/annevk/orb >>>>>>>> >>>>>>>> *Summary:* >>>>>>>> Opaque Response Blocking (ORB) is a replacement for Cross-Origin >>>>>>>> Read Blocking (CORB - >>>>>>>> https://chromestatus.com/feature/5629709824032768). CORB and ORB >>>>>>>> are both heuristics that attempt to prevent cross-origin disclosure of >>>>>>>> “no-cors” subresources. This entry tracks v0.1 of ORB - Chrome's first >>>>>>>> step toward full ORB implementation. >>>>>>>> >>>>>>>> For interop web authors should check Content-Type headers of their >>>>>>>> resources and indicate multimedia content when needed (e.g. audio/*, >>>>>>>> application/dash+xml, etc). >>>>>>>> >>>>>>>> *Blink component:* >>>>>>>> Internals>Sandbox>SiteIsolation >>>>>>>> >>>>>>>> *TAG review status:* >>>>>>>> Not applicable >>>>>>>> >>>>>>>> *Interoperability and Compatibility Risk:* >>>>>>>> The backcompatibility risk of shipping ORB v0.1 seems low: less >>>>>>>> than 0.01% of all HTTP requests are at risk because they are blocked >>>>>>>> by ORB >>>>>>>> and not by CORB. >>>>>>>> >>>>>>>> For more information, see the draft of the "Backcompatibility risks >>>>>>>> of ORBv0.1" and the "Managing the backcompatibility risk" sections at >>>>>>>> https://docs.google.com/document/d/1dO1NP6xchEiCN990zMczXcSvgcRzSnWBtAgflVBXoTg/edit?usp=sharing >>>>>>>> >>>>>>>> Gecko: In development ( >>>>>>>> https://bugzilla.mozilla.org/show_bug.cgi?id=1532642). >>>>>>>> >>>>>>>> WebKit: No signal >>>>>>>> >>>>>>>> Web developers: No signals >>>>>>>> >>>>>>>> Other signals: >>>>>>>> >>>>>>>> *Ergonomics:* >>>>>>>> N/A (no public API) >>>>>>>> >>>>>>>> *Activation:* >>>>>>>> N/A >>>>>>>> >>>>>>>> *Security:* >>>>>>>> N/A >>>>>>>> >>>>>>>> *WebView application risks:* >>>>>>>> No known WebView-specific risks >>>>>>>> >>>>>>>> *Debuggability:* >>>>>>>> No changes compared to CORB - mostly relying on a DevTools console >>>>>>>> warning that gets emitted when CORB/ORB block a HTTP response. >>>>>>>> >>>>>>>> *Is this feature fully tested by web-platform-tests?* >>>>>>>> Not really… >>>>>>>> >>>>>>>> CORB and ORBv0.1 do have coverage via wpt/fetch/corb but: >>>>>>>> >>>>>>>> >>>>>>>> 1. CORB and ORBv0.1 are Chrome-only technologies (the latter is >>>>>>>> a step toward adopting the full, cross-browser ORB standard). And >>>>>>>> therefore right now wpt/fetch/corb are Chrome-specific tests. >>>>>>>> 2. Covering full ORB will require significant refactoring of >>>>>>>> the tests - among other things we might need to change whether a >>>>>>>> blocked >>>>>>>> response is verified by checking for A) an empty response body VS >>>>>>>> B) a >>>>>>>> network/fetch error. >>>>>>>> >>>>>>>> *Flag name:* >>>>>>>> --enable-features=OpaqueResponseBlockingV01 >>>>>>>> >>>>>>>> *Requires code in //chrome?:* >>>>>>>> False >>>>>>>> >>>>>>>> *Tracking bug:* >>>>>>>> https://crbug.com/1178928 >>>>>>>> >>>>>>>> *Measurement:* >>>>>>>> Google-internal "ORB telemetry results - Mar 2022" doc can be found >>>>>>>> at >>>>>>>> https://docs.google.com/document/d/1MbYQbL4WQyZdCQcZcKyzxHA0UxbHTC0O4bQXFgm8o6A/edit?usp=sharing >>>>>>>> >>>>>>>> *Estimated milestones:* >>>>>>>> Shipping on desktop 103 >>>>>>>> Shipping on Android 103 >>>>>>>> >>>>>>>> -- >>>>>>>> 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 on the web visit >>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA_NCUH%3Df4KJK7F1rZ9PugP4O9kPQ%2BSzot0VjD6hyxZ%3Dqn_Bjw%40mail.gmail.com >>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA_NCUH%3Df4KJK7F1rZ9PugP4O9kPQ%2BSzot0VjD6hyxZ%3Dqn_Bjw%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 on the web visit >>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA_NCUGAOpNbCx-gZsttKo1cSGAoHugVJJBEjGrqA9AjQ1KtOw%40mail.gmail.com >>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA_NCUGAOpNbCx-gZsttKo1cSGAoHugVJJBEjGrqA9AjQ1KtOw%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 on the web visit >>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA_NCUG3%2ByUxFwTnrA0ahvAuvfXP4%2BKhbMyhO9XPfpLySDF8jg%40mail.gmail.com >>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA_NCUG3%2ByUxFwTnrA0ahvAuvfXP4%2BKhbMyhO9XPfpLySDF8jg%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 on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfUU98WAdzrePPPi_R%3D4ow%3D1s0YJg1hMQXF2exDZA1arKA%40mail.gmail.com.