Google如何利用内容安全策略缓解Web漏洞
作者:星期二, 四月 30, 20190

跨站脚本攻击(Cross Site Script,简称CSS),通常又被称为XSS,是当今网络上最常见的漏洞类型之一。

通过XSS漏洞,恶意攻击者可以在未经授权的情况下往Web页面里插入恶意html代码,当用户浏览该页面时,嵌入Web里面的html代码会被执行,从而达到恶意用户的特殊目的,如窃取各类用户账号(网银账号、设备登录账号等),读取、篡改、添加和删除企业敏感数据,非法转账以及网络挂马等等。

根据谷歌工程师Lukas Weichselbaum和Michele Spagnuolo的说法,XSS对于谷歌公司而言,同样是一个亟待解决的大问题,这也解释了为什么谷歌公司会通过使用一种称为 “内容安全策略”(CSP)的技术方法,来实现降低XSS风险的目的。

2019年4月17日,这两名谷歌工程师在夏威夷考艾岛举行的LocoMocoSec会议上详细介绍了谷歌 “内容安全策略”(CSP)的工作机制及成果。

LocoMocoSec会议创始人Jeremiah Grossman在其Twitter消息中激动地写道,谷歌公司花了12-18个月的时间来重构他们的JavaScript,以支持内容安全策略在其大约3/4的 properties配置文件中运行。现在,他们已经创建了新的开发框架,可以使用开发人员不可见的CSP自动生成代码。

事实上,内容安全策略并不是一个新出现的概念,因为至少从2010年开始,开发人员和浏览器供应商(包括Mozilla)就已经开始利用各种形式来实施CSP。在最基本的形式中,内容安全策略(CSP)可以作为一种“声明机制”,允许Web或应用程序开发人员在其应用程序上指定多个安全限制,由支持的用户代理(浏览器)来负责强制执行,以防止未经授权的注入脚本的运行。简单来说,CSP旨在 “作为开发人员可以使用的工具,以各种方式保护其应用程序,减轻内容注入漏洞的风险和减少它们的应用程序执行的特权”。

目前,谷歌公司正在其拥有的80多个域名和160多项服务中实施CSP,这一数据约占所有输出谷歌流量的62%。根据两位谷歌开发者的说法,仅2018年,就有超过60%的XSS尝试被谷歌的内容安全策略拦截阻断。

采取Nonce-Based的CSP方法

在多年部署CSP的过程中,谷歌发现并非所有方法都能够切实有效地防护XSS攻击。就拿基于白名单的CSP模型来说,虽然它明确列出了哪些域可以注入脚本,但是根据谷歌的研究结果发现,约95%的基于白名单的CSP都是可以被成功绕过的。因此可以说,部署传统的基于白名单的CSP模型,对于防止XSS是不可行的。

Weichselbaum和Spagnuolo所倡导的是一种nonce-based的CSP模型。在nonce中,应用程序定义并生成了单一的,不可猜测的令牌(nonce),这个令牌会同时传递给CSP策略和作为一个合法HTML属性传递给script。 用户代理仅允许执行那些nonce值能够匹配策略中指定的值的脚本。虽然攻击者可以将标记注入易受攻击的页面,但是由于不知道nonce的临时值,因此他并不能执行恶意脚本。

除了使用nonce-based方法之外,谷歌还在利用CSP中的新功能。CSP3是CSP的最新版本,并引入了几个可用于进一步降低XSS风险的附加属性。其中,script-src-elem标记适用于所有脚本请求和内联脚本块,为更精细的控制提供了一种新机制。

CSP的报告功能

为了获得对已实施规则的有效反馈信息,CSP 的报告功能不可或缺。通过CSP模型中提供的一种集成报告功能,组织可以有效地了解某些内容遭到阻止的原因。

例如,将 “report-sample” 标记添加到script-src指令中,CSP模型就会为相应组织提供一份报告,其中内联脚本违规还将提供被阻止数据类型的样本,以允许组织识别哪个脚本被阻止了。

为了帮助组织更好地利用和理解CSP,谷歌还创建了许多有关CSP利用的小工具和指南:

CSP Evaluator

这是一个能够评估你当前输入的CSP能否帮助你有效避免XSS攻击的工具,其用法非常简单,在输入框中输入你当前设置或将要设置的CSP值,选择需要验证的CSP版本,然后按下 “CHECK CSP” 即可。

CSP Guide

谷歌编写的一份有关CSP运用的指南。

虽然CSP可以成为降低XSS风险的有效工具,但它应该只是作为组织更大安全性工作的一部分来使用,以实现提高代码质量和整体安全性的目标。

最后,两位谷歌研究者强调称,CSP是一种纵深防御机制,这就意味着它是在主要安全机制(例如转义)失效时来保护用户的,它并不是没能解决潜在漏洞的借口。

CSP Evaluator地址:

https://csp-evaluator.withgoogle.com/

CSP 运用指南地址:

https://csp.withgoogle.com/docs/index.html

相关阅读

被忽视的内容安全策略:CSP

 


相关文章

写一条评论

 

 

0条评论