Adblock Plusフィルターエクスプロイトが発見された任意のコードを実行する
ほとんどのコンテンツブロッカーは、デフォルトでWebブラウザーでアクセスしたサイトの特定のコンテンツをブロックまたは変更する指示を含むフィルターリストを使用およびロードします。これは、デフォルトの設定で不要なコンテンツのチャンクをすぐにブロックできるようにするためです。
ほとんどの拡張機能は、カスタムリストと個別のフィルターをサポートしています。ユーザーは、ほとんどの拡張機能でカスタムリストを読み込み、独自のフィルターをリストに追加することもできます。
更新 : Eyeo GMHBを発表 今日は$ rewrite関数が削除される予定です。拡張機能からifを削除する新しいリリースをすぐに期待してください。 終わり
セキュリティ研究者アーミンセバスチャン 発見した ブラウザでアクセスしたサイトで悪意のあるコードを実行するために使用できるAdblock Plusなどの特定のadblockerの悪用。
エクスプロイトは、Adblock Plusがサポートする$ rewriteと呼ばれるフィルターオプションを使用して、Webページに任意のコードを挿入します。 $ rewriteフィルターは、サイトのコードを書き換えて置き換えるために使用されます。フィルターオプションは操作を制限します。サードパーティのサイトやサーバーではなく、ファーストパーティのソースからのみコンテンツをロードするように設計されています。スクリプトまたはオブジェクトも許可されていません。
Sebastianは、攻撃者がリモートの場所からコンテンツをロードするために悪用する可能性がある$ rewriteに脆弱性を発見しました。満たす必要がある条件は次のとおりです。
- JavaScript文字列はXMLHttpRequestまたはFetchを使用してロードする必要があり、戻りコードを実行する必要があります。
- 起点をページで制限することはできません。コンテンツセキュリティポリシーディレクティブを使用して、最終的なリクエストURLを実行前に検証することはできません。
- コードの発信元には、サーバー側のオープンリダイレクトがあるか、任意のユーザーコンテンツをホストする必要があります。
3つの要件すべてに一致するプロパティには、Googleマップ、Gmail、Google画像などがあります。あ コンセプトの証明 は著者のWebサイトで公開されており、Googleマップで試して、動作することを確認できます。
ChromeとFirefoxでこのエクスプロイトを試しましたが、機能しませんでした。 ローレンスエイブラムス しかし、Bleeping Computerについては、なんとか動作させることができました。
おわりに
攻撃はフィルターに依存するため、別の要件があります。コンテンツブロッカーが使用するフィルターのリストに、操作されたフィルターを追加する必要があります。最も一般的な2つのオプションには、ユーザーがコンテンツブロッカーに手動でフィルターを追加すること、または操作されたフィルターが読み込まれるフィルターリストにあることがあります。
2番目のオプションは、特にユーザーが拡張機能の他のリストを読み込んだ場合に、より可能性が高いようです。リストが操作されるのは初めてではありませんが、それほど頻繁には発生しません。
拡張uBlock Originは$ rewriteをサポートしていないため、この問題の影響は受けません。