攻击者现可绕过MicrosoftEdge、Google Chrome和Safari的内容安全策略
作者:admin | 时间:2017-9-17 12:50:22 | 分类:黑客技术 隐藏侧边栏展开侧边栏
就在前两天,Talos发布了Microsoft Edge浏览器的安全漏洞细节,受此漏洞影响的还包括旧版本Google Chrome(CVE-2017-5033)以及基于Webkit的浏览器(例如苹果的Safari:CVE-2017-2419)。攻击者将能够利用该漏洞绕过服务器设置的内容安全策略,并最终窃取到目标主机中存储的机密信息。
概述
在现代Web应用程序中,最基本的一种安全保护机制就是我们所谓的同源策略了,而同源策略规定了哪些资源可以被应用程序代码所访问到。简单来说,同源策略的本质就是它只能够允许来自特定服务器的代码访问Web资源。
就好比一个脚本,假设这个脚本可以在Web服务器(good.example.com)中运行,那么它就能够访问相同服务器中的数据资源。如果这个脚本运行在evil.example.com中,那么它就不能访问中的good.example.com数据资源了。
但是由于Web应用中或多或少都会存在安全漏洞,因此这将导致攻击者能够绕过Web应用所部属的同源策略。其中有。一种大家比较熟悉且比较成功的攻击技术,即跨站脚本攻击(XSS)。XSS允许攻击者向浏览器所执行的原始服务器代码中注入远程代码,而攻击者所注入的恶意代码将能够以合法应用程序的身份在原始服务器中执行,并访问到服务器中的敏感数据,甚至还有可能实现应用会话劫持。
内容安全策略(CSP)是一种防御XSS攻击的保护机制,它使用了白名单技术来定义服务器资源的访问权限。但是思科的安全研究人员已经发现了一种能够绕过内容安全策略的新方法,而这些漏洞将允许攻击者通过注入恶意代码来获取目标服务器中存储的敏感数据。
技术细节(CVE-2017-2419、CVE-2017-5033)
CSP所定义的Content-Security-PolicyHTTP头可以创建一份资源白名单,并控制浏览器只能执行白名单中允许的资源。即使攻击者找到了注入恶意脚本的方法,并通过<script>标签来成功发动XSS攻击,与白名单规则不匹配的远程资源仍然不会被浏览器执行。
Content-Security-Policy HTTP头定义的script-src指令负责配置CSP中与脚本代码相关的内容。配置样本如下所示:
Content-Security-Policy: script-src 'self'https://good.example.com
上面这段配置代码只允许加载浏览器当前所访问的服务器以及good.example.com。
但可怕的是,Microsoft Edge(未修复)、Google Chrome(已修复)和Safari(已修复)浏览器中都存在一种信息披露漏洞,攻击者将能够利用该漏洞绕过这些浏览器的Content-Security-Policy头,并成功窃取信息。
漏洞利用过程
在漏洞利用的过程中主要有三个主要步骤:1.给浏览器Content-Security-Policy头设置”unsafe-inline”指令,以此来允许执行内联脚本代码;2.使用window.open()函数打开一个新的浏览器窗口;3.调用document.write函数向新创建的窗口对象注入代码,并绕过CSP限制。
关于这三个安全漏洞的详细信息请参考TALOS所发布的漏洞研究报告-【TALOS-2017-0306】。
后续讨论
信息披露漏洞也许并不像能够允许攻击者注入远程代码并控制目标主机的漏洞一样严重,但是XSS攻击将允许攻击者提取出敏感数据,甚至还有可能入侵用户的账号。内容安全策略就是专门为XSS攻击所设计的,很多开发人员都依赖于CSP来防止自己的Web应用遭受XSS攻击。但是微软方面却并不认为Microsoft Edge浏览器中的这个漏洞是一种安全问题,所以他们并不打算修复这个漏洞。
因此,我们建议广大用户开启浏览器对内容安全策略的所有支持,并及时更新浏览器至最新版本。
受影响版本
Microsoft Edge(v40.15063及其之前版本) Google Chrome(v57.0.2987.98及其之前版本)- (CVE-2017-5033) iOS(v10.3及其之前版本)- (CVE-2017-2419) Safari(v10.1及其之前版本)- (CVE-2017-2419)
* 参考来源:talosintelligence, FB小编Alpha_h4ck编译