CSP 中受信任的 maps.googleapis.com 如何启用 XSS 漏洞?(JSONP)

信息安全 xss 内容安全策略
2021-09-08 11:45:24

我正在测试工具CSP Evaluator,并且对以下内容安全策略有疑问:

默认源https://maps.googleapis.com

该工具认为这是一个高风险:

众所周知,maps.googleapis.com 托管允许绕过此 CSP 的 JSONP 端点。

我的问题是,如何利用受信任的 maps.googleapis.com 来执行 XSS 攻击?

1个回答

考虑一下注入 XSS 的攻击者是否尝试过这样的事情:

<script src="https://maps.googleapis.com/foo?callback=alert"></script>

这将执行foo来自 Google APIs JavaScript SDK 的函数,并在它返回时调用alert. 这表明攻击者能够将内联代码注入到页面中,该页面将被执行。因此实现了绕过unsafe-inline代码阻塞的 XSS。

当然,可以调用什么取决于传递的参数以及 Google 如何准确地清理回调参数。看起来 CSP Validator 只是有一个简单的规则来标记这些,格式为“CSP 中的域是否支持 JSONP?” 这没有考虑回调是如何执行的。

这似乎是公平的,因为 CSP Validator 永远不会知道外部域上的任何代码更改是否会引入或修补此类漏洞,因此我认为将其标记为正确的。