I did some more research in httparchive. By filtering out only interesting CSPs delivered by workers and comparing them with their owner document's CSP, I was left with only two entries (out of the total 457,780 worker requests) which might actually break. The details are in this document <https://docs.google.com/document/d/16_TiDx3MOE7uO6vMhE6qE1jN78ZzzvUsaqcV0Cb3G0E/edit?usp=sharing>. Could this give us confidence that content won't break, even without adding user counters in the code?
Regarding Safari, I did some more experiments and checked their code <https://github.com/WebKit/WebKit/blob/5f99dfc43d30d3af1cabbf24d111acbff994808b/Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp#L60>. I would now say confidently that they do implement this. Thanks! On Wed, Sep 29, 2021 at 5:05 PM Yoav Weiss <yoavwe...@chromium.org> wrote: > > > On Wed, Sep 29, 2021 at 4:16 PM Antonio Sartori < > antoniosart...@chromium.org> wrote: > >> >> >> On Wed, Sep 29, 2021 at 2:50 PM Yoav Weiss <yoavwe...@chromium.org> >> wrote: >> >>> >>> >>> On Wed, Sep 29, 2021 at 2:14 PM Antonio Sartori < >>> antoniosart...@chromium.org> wrote: >>> >>>> From a quick search through httparchive (data from >>>> httparchive.requests.2021_07_01_desktop) it looks like out of 549,668 >>>> outgoing requests for dedicated workers, 457,780 of them returned a >>>> Content-Security-Policy header (hence ~80%). As a comparison, from the same >>>> data it looks like ~15% of document requests return a >>>> Content-Security-Policy. >>>> >>> >>> That's a lot! >>> >>> >>>> >>>> Better data could be gathered by building some use counters in >>>> chromium's code. >>>> >>> >>> Unless there's particular urgency here, I think use-counters would make >>> sense here. That can give us confidence that content won't break as a >>> result of this change in CSP rule application. >>> >> >> Just to double-check that I understand correctly: For giving us >> confidence that content won't break, we would have to build a mechanism to >> check workers' response CSPs (without enforcing them) and report via use >> counters in case a resource which is currently allowed would have been >> blocked. This is what I was sketching below, and requires quite some >> implementation work, which I am not sure when we would be able to >> prioritize. >> > > Maybe I'm missing the mark, but wouldn't that implementation work be > something that's on path to what you'd need to implement anyway for this? > I certainly have no interest in making you do extra work, but with 80% > (!!) of workers currently having CSP headers, I'm concerned that mismatches > between the worker headers and the main document headers exist, which can > result in broken content. > I take your point that if such discrepancies exist, they are currently > reflected in broken content in e.g. Firefox. At the same time, I'd be more > comfortable with taking a decision here based on a bit more data. > > >> I don't think there is a particular urgency, although this is a bugfix >> and I believe this is a big security improvement, since it allows servers >> to have different policies on their main page and on the worker (so for >> example an application which needs eval inside a worker would not need to >> enable eval in the main document). >> >> >>> >>>> >>>> I have not looked into how often that would remove restrictions from >>>> existing web contents. I don't see an easy way to do it without adding code >>>> to chrome to check both the inherited and the response CSP for each >>>> outgoing request from a worker and report when the two checks mismatch. It >>>> is surely doable but I have the impression it might be overkilled in this >>>> case. >>>> >>>> Since the proposed behaviour is already implemented by Firefox (and it >>>> seems also by Safari), I believe the probability of this breaking something >>>> to be fairly low (developer would have noticed their websites not working >>>> on Firefox/Safari already). >>>> >>>> On Wed, Sep 29, 2021 at 1:21 PM Yoav Weiss <yoavwe...@chromium.org> >>>> wrote: >>>> >>>>> Have you looked into the compatibility implications of changing >>>>> behavior here? How often would that remove restrictions from existing web >>>>> content? How often do dedicated workers currently get CSP headers which >>>>> will now be applied? >>>>> >>>>> On Mon, Sep 27, 2021 at 12:50 PM Antonio Sartori < >>>>> antoniosart...@chromium.org> wrote: >>>>> >>>>>> Contact emailsantoniosart...@chromium.org >>>>>> >>>>>> Specification >>>>>> https://html.spec.whatwg.org/#initialize-worker-policy-container >>>>>> >>>>>> https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy#csp_in_workers >>>>>> >>>>>> Summary >>>>>> >>>>>> Dedicated workers should be governed by the Content Security Policy >>>>>> delivered in their script response headers. Chrome incorrectly used to >>>>>> instead apply the Content Security Policy of the owner document. We would >>>>>> like to change chrome's behaviour to adhere to what is specified. >>>>>> >>>>>> >>>>>> For background, see the discussion on the github issue where this was >>>>>> agreed: https://github.com/w3c/webappsec-csp/issues/336 >>>>>> >>>>>> >>>>>> Blink componentBlink>SecurityFeature>ContentSecurityPolicy >>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3ESecurityFeature%3EContentSecurityPolicy> >>>>>> >>>>>> TAG review >>>>>> >>>>>> TAG review statusNot applicable >>>>>> >>>>>> Risks >>>>>> >>>>>> >>>>>> Interoperability and Compatibility >>>>>> >>>>>> >>>>>> >>>>>> Gecko: Shipped/Shipping See also the discussion on the issue >>>>>> https://github.com/w3c/webappsec-csp/issues/336 >>>>>> >>>>>> WebKit: N/A >>>>>> >>>>> >>> Why N/A? >>> >> >> Because I am not totally sure. While Firefox argued publicly that this is >> how they believe CSPs for workers should work and this is what they >> implement, there was no signal from WebKit AFAIK. From some manual testing, >> it looks to me like WebKit implements this. Unfortunately our WPTs here are >> not so great, since many of them time out on Safari ( >> https://wpt.fyi/results/content-security-policy/inside-worker?label=experimental&label=master&aligned >> ). >> > > Would be good to ask for their official opinion: > https://bit.ly/blink-signals > > >> >> >>> >>> >>>> >>>>>> Web developers: Positive ( >>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1012640) This >>>>>> has been reported as a bug to chrome. >>>>>> >>>>>> >>>>>> Debuggability >>>>>> >>>>>> Warnings regarding Content Security Policy are and will continue to >>>>>> be reported in the devtools console. >>>>>> >>>>>> >>>>>> Is this feature fully tested by web-platform-tests >>>>>> <https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md> >>>>>> ?Yes >>>>>> >>>>>> Flag name >>>>>> >>>>>> Requires code in //chrome?False >>>>>> >>>>>> Tracking bug >>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1253267 >>>>>> >>>>>> Estimated milestones >>>>>> >>>>>> No milestones specified >>>>>> >>>>>> >>>>>> Link to entry on the Chrome Platform Status >>>>>> https://chromestatus.com/feature/5715844005888000 >>>>>> >>>>>> This intent message was generated by Chrome Platform Status >>>>>> <https://www.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 on the web visit >>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOzWxF5EX2mHofXHLK_V7VTQ5v%3DPcunu_BiF%2BzFJQTFy9DSwTQ%40mail.gmail.com >>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOzWxF5EX2mHofXHLK_V7VTQ5v%3DPcunu_BiF%2BzFJQTFy9DSwTQ%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/CAOzWxF5TgWkd_rPFLPW_dZJNRHg_KsBqzTDLuG1JM0rX_B494A%40mail.gmail.com.