CSPAutoGen: 一个自动生成并执行内容安全策略的黑盒系统
CSPAutoGen: Black-box Enforcement of Content Security
作者:潘翔 (美国西北大学)
原文发表在ACM CCS 2016
Content security policy (CSP) 是一项基于白名单的,保护用户免受XSS攻击的机制。目前所有主流浏览器皆支持CSP。CSP允许网站开发者在每个页面上制定CSP策略:规定一组信任的JavaScript的hosts来作为这个页面JavaScript的白名单。当这个页面在用户浏览器上渲染执行的时候,支持CSP的浏览器会确保只有来自于白名单上的JavaScript能够被执行。同时,默认情况下,CSP会禁止所有的inline script以及eval script。由于CSP允许用户设置一些“非安全”的关键字(i.e., unsafe-inline and unsafe-eval) 来放松这些限制,因此CSP的安全性会受到这些关键字的严重影响。
虽然CSP被所有主流浏览器支持,但目前由于部署成本太高,部署CSP的网站还是少数:在Alexa Top前一百万的网站中,只有20个网站部署了CSP [1]。 同时,在部署CSP的网站中,很多网站都使用了“非安全”的关键字,这样虽然网站能正常执行,但是CSP的安全性却被降至最低:攻击者可以用很多种方式轻松绕过CSP来实施XSS攻击。举例来说,“非安全”关键字unsafe-inline被很多网站写进了CSP策略里,这样攻击者可以通过注入恶意的inline script来实施XSS攻击,却没有违反CSP的策略,因此完全绕过了CSP的防御。
为了让更多的网站能够利用CSP来提高安全性,并减少CSP策略配置的错误,我们提出了一个黑盒系统CSPAutoGen, 它运行在网站的Web Application Firewall (WAF)上,能够通过实时改写网页的方式来自动为该网站部署CSP。具体来说,CSPAutoGen运行在三个阶段下:training phase, rewriting phase 以及 runtime phase。 在部署CSPAutoGen到目标网站之前,CSPAutoGen需要运行在training phase来产生目标网站的模版;接下来,CSPAutoGen可以被部署在目标网站的WAF上来保护该网站的用户:它通过实时修改输出网页的方式,来产生部署了CSP网页。该网页上所有正常的JavaScript都会被保存且在客户端正确执行;当修改后的网页被传输到客户端并被浏览器渲染时,CSPAutoGen进入runtime phase。在这个阶段, CSPAutoGen能保证所有在客户端产生的JavaScript都能被实时正确处理。
CSPAutoGen拥有以下几个特点,首先,作为一个黑盒系统,它不需要服务器端代码的改变,不会增加网站开发人员负担;其次,CSPAutoGen通过一个创新的模版机制,能够准确匹配到未知的JavaScript; 然后,通过若干核心技术,CSPAutoGen能够正确的将所有类型的script都转化为CSP可兼容的:正常的JavaScript会被执行,恶意的JavaScript会被禁止。这样,CSPAutoGen设置的策略中,不需要使用任何“非安全”的关键字,还能保证部署过CSP的页面正常执行,不会出现兼容问题 (i.e., 正常的JavaScript被CSP禁掉)。
通过我们的详尽的测试评估,CSPAutoGen能够和Alexa Top 50网站兼容。其产生的额外运行开销是可以接受的(9.1%),且这部分开销可以通过选择更快捷的DOM解析器来进一步降低。具体细节请参见原文 [2]。
References:
- M. Weissbacher, T. Lauinger, and W. Robertson. Why is CSP Failing? Trends and Challenges in CSP Adoption. in RAID. 2014.
- X. Pan, Y. Cao, S. Liu, Y. Zhou, Y. Chen and T. Zhou, CSPAutoGen: Black-box Enforcement of Content Security, in CCS, 2016
Xiang Pan
Xiang pan is a 6th year computer science PhD student at Northwestern University, advised by professor Yan Chen. Xiang received his B.S. degree in Computer Science from Nanjing University, Nanjing, China in 2011. Before majoring Computer Science, I studied Education Science in Nanjing University from 2006 to 2008.
Xiang’s research projects cover a wide range of topics, ranging from web security, SDN security, Android security and credit card security. In the past five years, he has published six papers in the field of security and privacy, among which he has served as the first author of two papers published in top-tier conferences (i.e., NDSS and CCS); another paper won the best paper award and has been featured by more than 30 media outlets; two projects he built have been adopted by two large companies.