- From: Christoph Kerschbaumer <ckerschbaumer@mozilla.com>
- Date: Thu, 8 Sep 2016 10:02:39 +0200
- To: Artur Janc <aaj@google.com>
- Cc: "Hodges, Jeff" <jeff.hodges@paypal.com>, W3C Web App Security WG <public-webappsec@w3.org>
- Message-ID: <CAGy2MrURpfxR4gnrjG93YVjJAOT+SLxLZ2pwEBQLz+kD_taSoA@mail.gmail.com>
On Wed, Sep 7, 2016 at 10:14 PM, Artur Janc <aaj@google.com> wrote: > This paper is based on the results that we've discussed a bit at the last > F2F, and which were the original motivation for 'strict-dynamic' -- they > came up in some of the discussions we had here around the feature, so many > folks are probably familiar with the details. > > The best outcome I can hope for is if we could consider the past failings > of CSP and think about how we can fix them to build something more useful. > There are lessons that can be applied right away in CSP3 (e.g. promoting > nonces/hashes as a better script blessing mechanism), and some general > takeaways to consider when designing its successor (e.g. avoiding > unnecessary complexity, improving developer understanding of the mechanism > and the security benefits it offers, less ugly syntax, etc). > > There's probably also a meta-discussion to be had around the types of > threats we're trying to mitigate, and an attempt to map how various parts > of CSP or other specs address them. For example, there's almost never a > security benefit of setting img-src, > Well, that's debatable. Historically, images have been used as a channel to exfiltrate sensitive user data. If we could completely prevent XSS, then I could see img-src go away, but until then I see the benefit of having a defense in depth mechanism that blocks such exfiltration attacks. E.g. if an attacker manages to exploit some XSS vulnerability, the attacker could do https://attacker.com/foo.jgp?sensitive-data, but a strongly crafted img-src directive would block the attack. > and it adds maintenance overhead and risks breakage when URLs change, but > it's present in a large majority of policies; refocusing on the few bits > that actually improve security would be really beneficial for the ecosystem. > > As a final meta-note I think so far we've been fairly lucky as an industry > that malicious exploitation of XSS has been fairly limited (for many > reasons; long story). However, we're giving webapps access to more powerful > APIs and keep blurring the line between the web and native apps (we're > already in a situation where XSS in some webapps is equivalent to remote > code execution on the user's device) so these attacks will become more > compelling. The web platform should really have stronger defenses against a > class of vulnerabilities that's simultaneously the most common and the most > damaging; solving other problems but not addressing this one means we're > not serving our users as well as we should. > > -A > > On Wed, Sep 7, 2016 at 6:16 PM, Hodges, Jeff <jeff.hodges@paypal.com> > wrote: > >> Apologies if this has already been posted here, I looked and didn't see >> that it had... >> >> CSP Is Dead, Long Live CSP! On the Insecurity of Whitelists and the Future >> of Content Security Policy >> <https://static.googleusercontent.com/media/research.google. >> com/en//pubs/ar >> chive/45542.pdf >> <https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45542.pdf> >> > >> >> Lukas Weichselbaum >> Michele Spagnuolo >> Sebastian Lekies >> Artur Janc >> >> >> ABSTRACT >> Content Security Policy is a web platform mechanism de- >> signed to mitigate cross-site scripting (XSS), the top security >> vulnerability in modern web applications [24]. In this paper, >> we take a closer look at the practical bene ts of adopting >> CSP and identify signi cant aws in real-world deployments >> that result in bypasses in 94.72% of all distinct policies. >> We base our Internet-wide analysis on a search engine cor- >> pus of approximately 100 billion pages from over 1 billion >> hostnames; the result covers CSP deployments on 1,680,867 >> hosts with 26,011 unique CSP policies { the most compre- >> hensive study to date. We introduce the security-relevant >> aspects of the CSP speci cation and provide an in-depth >> analysis of its threat model, focusing on XSS protections. >> We identify three common classes of >> CSP bypasses >> and ex- >> plain how they subvert the security of a policy. >> We then turn to a quantitative analysis of policies de- >> ployed on the Internet in order to understand their secu- >> rity bene ts. We observe that 14 out of the 15 domains >> most commonly whitelisted for loading scripts contain >> un- >> safe endpoints >> ; as a consequence, 75.81% of distinct policies >> use script whitelists that allow attackers to bypass CSP. In >> total, we nd that 94.68% of policies that attempt to limit >> script execution are ine ective, and that 99.34% of hosts >> with CSP use policies that o er no bene t against XSS. >> Finally, we propose the >> 'strict-dynamic' >> keyword, an >> addition to the speci cation that facilitates the creation of >> policies based on cryptographic nonces, without relying on >> domain whitelists. We discuss our experience deploying such >> a >> nonce-based >> policy in a complex application and provide >> guidance to web authors for improving their policies. >> >> >> >> 6. CONCLUSION >> In this paper, we presented an assessment of the practical >> security bene ts of adopting CSP in real-world applications, >> based on a large-scale empirical study. >> We performed an in-depth analysis of the security model >> of CSP and identi ed several cases where seemingly safe poli- >> cies provided no security improvement. We investigated the >> adoption of CSP on over 1 billion hostnames, and identi ed >> 1.6 million hosts using 26,011 unique policies in the Google >> search index. >> Unfortunately, the majority of these policies are inher- >> ently insecure. Via automated checks, we were able to demon- >> strate that 94.72 % of all policies can be trivially bypassed >> by an attacker with a markup-injection bug. Furthermore, >> we analyzed the security properties of whitelists. Thereby, >> we found that 75.81 % of all policies and 41.65 % of all strict >> policies contain at least one insecure host within their white- >> lists. These numbers lead us to the believe that whitelists >> are impractical for use within CSP policies. >> Hence, we proposed a new way of writing policies. In- >> stead of whitelisting entire hosts, we recommend enabling >> individual scripts via an approach based on CSP nonces. >> In order to ease the adoption of >> nonce-based >> CSP, we fur- >> thermore proposed the >> 'strict-dynamic' >> keyword. Once >> speci ed within a CSP policy, this keyword enables a mode >> inside the browser to inherit nonces to dynamic scripts. >> Hence, if a script trusted with a nonce creates a new script at >> runtime, this new script will also be considered legitimate. >> Although this technique departs from the traditional host >> whitelisting approach of CSP, we consider the usability im- >> provements signi cant enough to justify its broad adoption. >> Because this is designed to be an opt-in mechanism, it does >> not reduce the protective capabilities of CSP by default. >> We expect that that the combination of a nonce-based ap- >> proach and the >> 'strict-dynamic' >> keyword will allow devel- >> opers and organizations to nally enjoy real security bene ts >> o ered by the Content Security Policy. >> >> >> >> end >> >> >> >
Received on Thursday, 8 September 2016 08:03:12 UTC