最近 脆弱性が発見されました これにより、メンテナはフィルタリストをブロックできます Adblock Plus、AdBlock、uBlockerブラウザ拡張機能の場合 リモートスクリプトをWebサイトに挿入するフィルターを作成します。
10万を超えたユーザーベースで、 悪意のあるスクリプトが広告ブロッカーに挿入された場合、これはかなりの影響を及ぼします Cookieの盗難、接続情報などの不要なアクティビティを実行し、ページのリダイレクトやその他の不要な動作を引き起こす可能性があるためです。
そんな方へ 広告ブロッカーに精通していない、彼らは基本的にURLリストを使用します 悪意のある広告や行動に関連しています。
通常、 彼らは小さなチームの人々、あるいは一人の人々によって運営されています。
これらのリストにAdblockPlusなどの広告ブロック拡張機能が読み込まれると、この拡張機能により、ブラウザがリストに配置されたURLに接続できなくなり、悪意のある広告やスクリプトへの接続が防止されます。
$ rewriteフィルターオプションが問題を引き起こしています
時 アドブロッカー プラス 3.2 2018年に発売、それ $ rewriteと呼ばれる新しいフィルターリストオプションを追加しました。
このオプション 許可 リストメンテナへ 正規表現に一致するWebリクエストを置き換えます 特に別のURLで。
HubertFiguière、 この機能を導入したのは誰ですか 説明:
「Chrome、Firefox、Opera用のAdblock Plus 3.2(および3.1.0.2053の開発バージョン)以降、新しいフィルターオプション$ rewriteを使用すると、リソースをブロックする代わりにURLを書き換えることができます。
AdblockPlusが$ rewriteオプションを使用してリクエストURLをフィルターに割り当てると、提供されたルールに基づいてURLが変換され、同時にリソースをロードするようブラウザーに指示されます。
$ルールの構文 rewriteは、新しいURLのテンプレートとして機能する文字列を指定します。
$ nは、フィルターの正規表現n番目のサブマッチに置き換えられます。 これは、JavaScript String.prototype.replace()関数と同じ構文です。
結果のURLが相対的な場合 (つまり、ホストがありません)、 元のクエリの発信元が基礎として使用されます。 いずれの場合も、新しいURLがオリジンを共有していない場合、書き換えは失敗したと見なされ、最初のリクエストは成功します。
また、セキュリティ上の理由から、SCRIPT、SUBDOCUMENT、OBJECT、およびOBJECT_SUBREQUESTクエリの$書き換えフィルターは無視されます。 このオプションは、クエリパラメータを変更または削除するのに便利です»。
唯一の欠点は、置換文字列が相対URLである必要があることです。つまり、ホスト名が含まれておらず、書き換える場合は、リクエストと同じ発信元ドメインに属している必要があります。
コードの実行はグーグルマップでも行われます
セキュリティ研究者が説明した その:
特定の条件下では、権限のない悪意のあるフィルターメンテナーが、特定のサイトにリモートスクリプトを挿入するルールを作成する可能性があります。
これを行うには、 スクリプトをロードするサイトを探すだけです オープンリダイレクトを含む任意のドメインから XMLHttpRequestまたはFetchを使用します 実行するスクリプトをダウンロードします。
これを一人で行うので見つけるのはそれほど難しくありませんでした 概念実証としてGoogleマップを使用するだけです。
研究者は次のように説明しました 次の基準を満たす必要があります この方法でWebサービスを利用できるようにするには:
- ページは、XMLHttpRequestまたはFetchを使用してJS文字列をロードし、戻りコードを実行する必要があります。
- このページでは、コンテンツセキュリティポリシーガイドラインを使用して取得できるソースを制限したり、ダウンロードしたコードを実行する前に最終的なリクエストURLを検証したりしないでください。
- 取得したコードのソースには、オープンなサーバー側リダイレクトまたはホストからの任意のユーザーコンテンツが含まれている必要があります。
XMLHttpRequestまたはFetchを使用してスクリプトをダウンロードし、リダイレクトを開くことが、問題のXNUMXつの鍵です。
この問題を軽減するには、 Webサイトはコンテンツセキュリティポリシーヘッダーとconnect-srcオプションを使用することをお勧めします スクリプトをロードできるサイトのホワイトリストを指定します。