web-dev-qa-db-ja.com

CSPの信頼されたmaps.googleapis.comはどのようにXSS脆弱性を有効にしますか? (JSONP)

私はツール CSP Evaluator をテストしており、次のcontent-security-policyについて質問があります。

default-src https://maps.googleapis.com

ツールはこれを高リスクと見なします。

maps.googleapis.comは、このCSPをバイパスできるようにするホストJSONPエンドポイントに知られています。

私の質問は、信頼できるmaps.googleapis.comを利用してXSS攻撃を実行する方法を教えてください。

6

攻撃者がXSSを注入することにより、次のようなことが試みられたかどうかを検討してください。

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

これにより、Google APIのJavaScript SDKからfoo関数が実行され、戻り時にalertが呼び出されます。これは、攻撃者がインラインコードをページに挿入して実行できることを示しています。したがって、unsafe-inlineコードのブロックをバイパスするXSSが実現されます。

もちろん、呼び出すことができるものは、渡された引数と、Googleがコールバックパラメータを正確にサニタイズする方法によって異なります。 CSPバリデーターには、これらにフラグを付ける単純なルールがあるだけのようです"CSPのドメインはJSONPをサポートしていますか?"これは、コールバックの実行方法を考慮していません。

CSPバリデーターは、外部ドメインのコード変更がこのような脆弱性を導入またはパッチングするかどうかを知ることができないので、これは公平であるように思われます。

7
SilverlightFox