Hey folks! I now have a CL <https://chromium-review.googlesource.com/c/chromium/src/+/6408111> for Integrity-Policy (that also removes the require-sri-for implementation), and a PR <https://github.com/w3c/webappsec-subresource-integrity/pull/133> is being reviewed.
Should I send a new intent for this? Or can we assume that this intent is still valid, despite the now inaccurate name? On Thu, Mar 27, 2025 at 10:04 PM Yoav Weiss (@Shopify) < yoavwe...@chromium.org> wrote: > Thanks for reviewing!! > > In discussions with Mozilla folk, we eventually landed on a very > different API shape > <https://github.com/w3c/webappsec-subresource-integrity/pull/129#issuecomment-2757716392>, > to enable them to expand the concept of "integrity policy", rather than > doing this as a one-off CSP directive. As a result, I'd need to revamp the > implementation and spec. I'll let y'all know when it's time to reapprove (I > can do that as a separate intent, if that would be more convenient) > > On Wed, Mar 26, 2025 at 11:02 AM Chris Harrelson <chris...@chromium.org> > wrote: > >> LGTM3 >> >> On Tue, Mar 25, 2025 at 6:48 AM Mike Taylor <miketa...@chromium.org> >> wrote: >> >>> >>> On 3/24/25 10:24 PM, Domenic Denicola wrote: >>> >>> >>> >>> On Mon, Mar 24, 2025 at 4:37 PM Yoav Weiss (@Shopify) < >>> yoavwe...@chromium.org> wrote: >>> >>>> >>>> >>>> On Mon, Mar 24, 2025 at 6:45 AM Domenic Denicola <dome...@chromium.org> >>>> wrote: >>>> >>>>> Great to hear! >>>>> >>>>> I see you've already updated the spec PR. My instinct is that we >>>>> should give folks a week-ish to react to the new name, finish the spec >>>>> review, etc. What do you think? >>>>> >>>> >>>> Normally I would think this makes perfect sense. But given the 136 >>>> branch point a week from now, I prefer one of the two options: >>>> * Enable the flag in 136 before it branches and revert in the unlikely >>>> case there's some disagreement on the spelling. >>>> >>> >>> This option sounds good to me. LGTM1. >>> >>> Me too, LGTM2 >>> >>> >>> >>>> * Get help from Google folks to Finch enable it in 136 after branch >>>> point. >>>> >>>> Does that make sense? >>>> >>>> >>>>> (Also, I can't quite understand what's blocking the spec PR from >>>>> landing... I guess there's still some discussion about whether the bar is >>>>> "2 interested implementers" or "2 actively implementing implementers"? >>>>> Maybe it's worth poking to see if you can get more clarity on that?) >>>>> >>>> >>>> I believe it's held back on getting SRI L2 to FPWD >>>> <https://lists.w3.org/Archives/Public/public-webappsec/2025Mar/0011.html> >>>> (as a future Living Standard), and then potentially on getting a working >>>> mode agreed on, and for the PR to meet it. So it may take a while to land >>>> the PR. >>>> >>>> +Mike West <mk...@chromium.org> - Is my understanding correct? >>>> >>>> >>>>> On Mon, Mar 24, 2025 at 2:28 PM Yoav Weiss (@Shopify) < >>>>> yoavwe...@chromium.org> wrote: >>>>> >>>>>> Following discussions >>>>>> <https://github.com/w3c/webappsec/blob/main/meetings/2025/2025-03-19-minutes.md#require-sri-for-compatibility-and-spelling> >>>>>> at WebAppSec and the WAICT >>>>>> <https://docs.google.com/document/d/16-cvBkWYrKlZHXkWRFvKGEifdcMthUfv-LxIbg6bx2o/edit?tab=t.0> >>>>>> proposal, I'm renaming the directive to `integrity-required`. (CL >>>>>> <https://chromium-review.googlesource.com/c/chromium/src/+/6382018>) >>>>>> >>>>>> That would also reduce the compatibility risk to zero AFAICT. >>>>>> >>>>>> On Monday, March 10, 2025 at 10:55:02 AM UTC+1 Yoav Weiss wrote: >>>>>> >>>>>>> FWIW, I'm planning to discuss >>>>>>> <https://github.com/w3c/webappsec/issues/668#issuecomment-2709995028> >>>>>>> a syntax change at next week's WebAppSec meeting, that can help us avoid >>>>>>> these compat issues. >>>>>>> >>>>>>> On Tue, Feb 25, 2025 at 7:54 PM Yoav Weiss (@Shopify) < >>>>>>> yoavwe...@chromium.org> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Feb 25, 2025 at 6:08 PM Mike Taylor <miketa...@chromium.org> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> >>>>>>>>> On 2/24/25 4:24 PM, Yoav Weiss (@Shopify) wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Mon, Feb 24, 2025 at 7:18 PM Mike Taylor < >>>>>>>>> miketa...@chromium.org> wrote: >>>>>>>>> >>>>>>>>>> On 2/21/25 8:33 AM, Yoav Weiss (@Shopify) wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thursday, February 20, 2025 at 1:56:59 PM UTC+1 Yoav Weiss >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thursday, February 20, 2025 at 11:47:00 AM UTC+1 Yoav Weiss >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> Contact emailsyoavwe...@chromium.org >>>>>>>>>> >>>>>>>>>> Explainerhttps://github.com/w3c/webappsec-subresource-inte >>>>>>>>>> grity/pull/129#:~:text=for%20some%20assets.-,require%2Dsr >>>>>>>>>> i%2Dfor%20CSP%20directive,-Subresource%2DIntegrity%20 >>>>>>>>>> >>>>>>>>>> Specificationhttps://github.com/w3c/webappsec-subresource- >>>>>>>>>> integrity/pull/129 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> The feature and PR were discussed >>>>>>>>>> <https://github.com/w3c/webappsec/blob/main/meetings/2025/2025-02-19-minutes.md#reviving-require-sri-for> >>>>>>>>>> at the WebAppSec WG call. >>>>>>>>>> >>>>>>>>>> No objection beyond questions on whether we'd need to expand this >>>>>>>>>> to cover stylesheets as well. We'd be able to do that in the future >>>>>>>>>> (as a >>>>>>>>>> separate intent) if needed. >>>>>>>>>> >>>>>>>>>> Summary >>>>>>>>>> >>>>>>>>>> The `require-sri-for` directive gives developers the ability to >>>>>>>>>> assert that every resource of a given type needs to be integrity >>>>>>>>>> checked. >>>>>>>>>> If a resource of that type is attempted to be loaded without >>>>>>>>>> integrity >>>>>>>>>> metadata, that attempt will fail and trigger a CSP violation report. >>>>>>>>>> This >>>>>>>>>> intent covers the "script" value of this directive. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Blink componentBlink>SecurityFeature>ContentSecurityPolicy >>>>>>>>>> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3ESecurityFeature%3EContentSecurityPolicy%22> >>>>>>>>>> >>>>>>>>>> TAG reviewhttps://github.com/w3ctag/design-reviews/issues/1048 >>>>>>>>>> >>>>>>>>>> TAG review statusPending - No response just yet >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Risks >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Interoperability and Compatibility >>>>>>>>>> >>>>>>>>>> On the compatibility front: >>>>>>>>>> >>>>>>>>>> This directive was already implemented in the past, and there are >>>>>>>>>> some developer docs >>>>>>>>>> <https://udn.realityripple.com/docs/Web/HTTP/Headers/Content-Security-Policy/require-sri-for> >>>>>>>>>> that still describe it. The current PR and implementation did not >>>>>>>>>> diverge >>>>>>>>>> from the past implementation. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> If developers deployed the feature in the past and are now >>>>>>>>>> relying on it *not really working*, that may result in >>>>>>>>>> surprising breakage. The HTTPArchive shows *0.0011% of page >>>>>>>>>> responses* (178 out of 15760519) have an existing >>>>>>>>>> `require-sri-for` directive. That's an upper bound - only those that >>>>>>>>>> enforce scripts, and have no integrity attributes on some scripts >>>>>>>>>> may get >>>>>>>>>> broken. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Doing some more HA digging I found that it's 153 sites, which is >>>>>>>>>> not significantly different. >>>>>>>>>> I downloaded their URLs >>>>>>>>>> <https://docs.google.com/spreadsheets/d/1NlFHLytc8lQcdP5FXXDltKEPQVE0e8oyjw9k1S-9KPI/edit?usp=sharing> >>>>>>>>>> and >>>>>>>>>> started going to these sites with the feature enabled. >>>>>>>>>> Of those 153, 22 had any blocked assets, 9 had broken >>>>>>>>>> functionality or layout and 1 had missing ads. >>>>>>>>>> Non-visiblity broken but blocked sites mostly had their analytics >>>>>>>>>> blocked. >>>>>>>>>> >>>>>>>>>> Extrapolating that data brings us to 0.000158% for any blocked >>>>>>>>>> assets, and 0.000065% for broken functionality. >>>>>>>>>> >>>>>>>>>> I'm planning to reach out to the broken sites and make them aware >>>>>>>>>> of this change. Many of them seem to be coming from a single provider >>>>>>>>>> (similar site and breakage). >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I also found ~3500 sites that have the `require-sri-for` string >>>>>>>>>> in their response bodies (and hence may have it applied). >>>>>>>>>> I put together a script that so far scanned ~1800 of them and >>>>>>>>>> found no blocked assets. So, it seems like the risk is very low on >>>>>>>>>> that >>>>>>>>>> front. >>>>>>>>>> >>>>>>>>>> Thanks, I appreciate you digging in to understand the possible >>>>>>>>>> risks. My understanding of the compat risk goes something like >>>>>>>>>> (please let >>>>>>>>>> me know if I'm missing something): >>>>>>>>>> >>>>>>>>>> 1. This feature never really shipped, but was implemented behind >>>>>>>>>> a flag. >>>>>>>>>> >>>>>>>>>> 2. Early adopter developers (or menu framework authors?) added >>>>>>>>>> require-sri-for for some scripts that they wanted to lock down >>>>>>>>>> >>>>>>>>> Tiny correction: they added it to the document's CSP, not specific >>>>>>>>> scripts. >>>>>>>>> >>>>>>>>>> (to prevent 3rd-party attackers from modifying them, etc). >>>>>>>>>> >>>>>>>>>> 3. Now, you actually ship the feature. >>>>>>>>>> >>>>>>>>>> That means the risks are: >>>>>>>>>> >>>>>>>>>> a) Some CDN was compromised at some point, and now some sketchy >>>>>>>>>> scripts will fail to load. Seems like that's security positive, even >>>>>>>>>> if it >>>>>>>>>> surprises users or developers. >>>>>>>>>> >>>>>>>>>> b) Perhaps more likely, a page was redesigned and they updated >>>>>>>>>> their analytics provider but didn't remember to add hashes. Now some >>>>>>>>>> things >>>>>>>>>> don't work. >>>>>>>>>> >>>>>>>>> I suspect it's >>>>>>>>> c) they added the header but never actually tested with the >>>>>>>>> feature enabled, as it never shipped. >>>>>>>>> >>>>>>>>> It seems like they added the CSP header, but never added an >>>>>>>>> "integrity" attribute to many/most of their scripts. >>>>>>>>> >>>>>>>>> >>>>>>>>>> From your sheet (which is great, thanks), it seems like largest >>>>>>>>>> impact is busted menus. Is this a single library? Or common pattern? >>>>>>>>>> >>>>>>>>>> It seems like a common provider. 6 out of the 9 sites with issues >>>>>>>>> are Canadian health/edu related sites. >>>>>>>>> >>>>>>>>> Breaking health/edu-releated sites is not good... >>>>>>>>> >>>>>>>> Indeed, although I'm not sure how load-bearing they are.. >>>>>>>> >>>>>>>>> When broken, is it cosmetic, or are the links in the menu still >>>>>>>>> accessible? (I see you're gathering contact info - let me know if you >>>>>>>>> need >>>>>>>>> help with that.) >>>>>>>>> >>>>>>>> It seems like the desktop view is functional, but the mobile view's >>>>>>>> hamburger menu is not working (at least in some cases). >>>>>>>> >>>>>>>>> Assuming we can sort out the menu breakage somehow, I think for >>>>>>>>> the rest - the best we can do is roll it out and be ready to >>>>>>>>> killswitch if >>>>>>>>> needed. >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> *Gecko*: No signal (https://github.com/mozilla/st >>>>>>>>>> andards-positions/issues/1173) >>>>>>>>>> >>>>>>>>>> *WebKit*: No signal (https://github.com/WebKit/sta >>>>>>>>>> ndards-positions/issues/458) >>>>>>>>>> >>>>>>>>>> *Web developers*: Shopify is interested in this. I suspect PCIv4 >>>>>>>>>> <https://docs.google.com/document/d/1RcUpbpWPxXTyW0Qwczs9GCTLPD3-LcbbhL4ooBUevTM/edit?tab=t.0> >>>>>>>>>> would >>>>>>>>>> make some developers interested in making sure their documents' >>>>>>>>>> scripts >>>>>>>>>> have complete integrity checks. >>>>>>>>>> >>>>>>>>>> *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? >>>>>>>>>> >>>>>>>>>> None >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Debuggability >>>>>>>>>> >>>>>>>>>> None >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Will this feature be supported on all six Blink platforms >>>>>>>>>> (Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?Yes >>>>>>>>>> >>>>>>>>>> Is this feature fully tested by web-platform-tests >>>>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>>>>>>>> ?Yes >>>>>>>>>> >>>>>>>>>> https://wpt.fyi/results/content-security-policy/tentative/ >>>>>>>>>> require-sri-for?label=experimental&label=master&aligned >>>>>>>>>> <https://chromium-review.googlesource.com/c/chromium/src/+/5877633> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Flag name on about://flagsNone >>>>>>>>>> >>>>>>>>>> Finch feature nameCSPRequireSRIFor >>>>>>>>>> >>>>>>>>>> Requires code in //chrome?False >>>>>>>>>> >>>>>>>>>> Estimated milestonesShipping on desktop135DevTrial on >>>>>>>>>> desktop134Shipping >>>>>>>>>> on Android135DevTrial on Android134Shipping on WebView135 >>>>>>>>>> >>>>>>>>>> Anticipated spec changes >>>>>>>>>> >>>>>>>>>> Open 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). >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> None >>>>>>>>>> >>>>>>>>>> Link to entry on the Chrome Platform Statushttps://chromestatus. >>>>>>>>>> com/feature/5090023365672960?gate=5186570942152704 >>>>>>>>>> >>>>>>>>>> Links to previous Intent discussionsIntent to Prototype: >>>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/ >>>>>>>>>> CAOmohSJUygAmobR9dRkDr%3DBWQ1h5hv2Lj3WUFN31QZF360A47A >>>>>>>>>> %40mail.gmail.com >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> This intent message was generated by Chrome Platform Status >>>>>>>>>> <https://chromestatus.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. >>>>>>>>>> To view this discussion visit >>>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/8d3107ca-61cc-47f6-badd-8bc6a1f30145n%40chromium.org >>>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/8d3107ca-61cc-47f6-badd-8bc6a1f30145n%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/49037f78-2795-4d2e-9645-361e632c61f7n%40chromium.org >>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/49037f78-2795-4d2e-9645-361e632c61f7n%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/0b112bbd-5132-4d64-a85f-78afb6ba3005%40chromium.org >>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/0b112bbd-5132-4d64-a85f-78afb6ba3005%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/CAOmohSK%3DGs4hkSgirwRjkyKiiVveDR_XFb7Xc%2BggY%3DJ4jxqW2g%40mail.gmail.com.