如何绕过EdgeChrome和Safari的内容安全策略

Posted 黑客视界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何绕过EdgeChrome和Safari的内容安全策略相关的知识,希望对你有一定的参考价值。


一、前言

2017年9月6日,Talos公布了一个浏览器漏洞细节,这个漏洞存在于Microsoft Edge浏览器、老版本的Google Chrome浏览器(CVE-2017-5033)以及基于Webkit的浏览器(如Apple Safari,CVE-2017-2419)中。利用这个漏洞,攻击者可以绕过服务器设置的内容安全策略(Content Security Policy,CSP),最终可能会导致隐私信息泄露。微软表示这属于设计理念的问题,拒绝修复这个漏洞。

二、概述

Web应用中有许多基本的安全机制,其中一个是同源(same-origin)策略机制,该机制规定了应用程序代码可以访问的资源范围。同源策略的基本思想是,源自于某台服务器上的代码只能访问同一台服务器上的web资源。

比如,在Web浏览器上下文中执行的某个脚本,如果其来源服务器为good.example.com,那么它就可以访问同一台服务器上的数据资源。另一方面,根据同源策略的思想,来自evil.example.com的另一个脚本不能访问good.example.com上的任何数据。

然而,web应用中存在许多漏洞,利用这些漏洞,攻击者可以绕过同源策略的限制,这一点已经被许多事实证明。其中最为典型也最为有效的一种攻击技术是跨站脚本(Cross Site Scripting,XSS)技术。利用XSS技术,攻击者可以在浏览器正在执行的原始服务器代码的上下文中插入远程代码。从浏览器角度来看,插入的代码看起来与合法应用一样,都源自同一个服务器,因此就会允许这些代码访问本地资源,最终将隐私数据泄露给攻击者,甚至会出现应用会话劫持现象。

内容安全策略(Content Security Policy,CSP)是防御XSS攻击的一种安全机制,其思想是以服务器白名单的形式来配置可信的内容来源,客户端Web应用代码可以使用这些安全来源。Cisco研究人员找到了绕过CSP的一种方法,攻击者可以利用这种方法,注入被禁止的代码,从而窃取隐私数据。

三、技术细节:Talos-2017-0306(CVE-2017-2419, CVE-2017-5033)

CSP定义了一个HTTP头部:Content-Security-Policy,这个头部可以创建一个白名单源,使浏览器只会从策略指定的可信源来执行资源。即使攻击者找到某种方法完成恶意脚本注入,通过在远程脚本源中插入一段<script>标签成功发起XSS攻击,在CSP的限制下,远程源仍然不会与可信源清单匹配,因此也不会被浏览器执行。

Content-Security-Policy头中定义了一条“script-src”指令,这条指令用来配置脚本代码所对应的CSP。举个例子,头部中某一行如下所示:

(c)2006-2024 SYSTEM All Rights Reserved IT常识