発見された任意のコードを実行するAdblock Plusフィルターのエクスプロイト

ほとんどのコンテンツブロッカーは、デフォルトでWebブラウザーでアクセスしたサイトの特定のコンテンツをブロックまたは変更する指示を含むフィルターリストを使用およびロードします。 これは、デフォルトの構成が不要なコンテンツの塊をすぐにブロックするようにするために行われます。

ほとんどの拡張機能は、カスタムリストと個々のフィルターをサポートしています。 ユーザーはほとんどの拡張機能でカスタムリストをロードし、独自のフィルターをリストに追加することもできます。

更新 :Eyeo GMHBは本日、今後$ rewrite関数を削除すると発表しました。 拡張機能からifを削除する新しいリリースをすぐに期待してください。 終わり

セキュリティ研究者のArmin Sebastianは、ブラウザでアクセスしたサイトで悪意のあるコードを実行するために使用できるAdblock Plusなどの特定のadblockerのエクスプロイトを発見しました。

このエクスプロイトは、Adblock Plusがサポートする$ rewriteというフィルターオプションを使用して、Webページに任意のコードを挿入します。 $ rewriteフィルターは、サイト上のコードを書き換えて置き換えるために使用されます。 フィルターオプションは操作を制限します。 サードパーティのサイトやサーバーではなく、ファーストパーティのソースからのみコンテンツをロードするように設計されており、スクリプトやオブジェクトなどの一部のリクエストも許可されていません。

Sebastianは、攻撃者がリモートの場所からコンテンツをロードするために悪用する可能性がある$ rewriteに脆弱性を発見しました。 満たす必要がある条件は次のとおりです。

  1. XMLHttpRequestまたはFetchを使用してJavaScript文字列をロードする必要があり、戻りコードを実行する必要があります。
  2. コンテンツセキュリティポリシーディレクティブを使用するなどして、ページでオリジンを制限することはできません。また、実行前に最終リクエストURLを検証することはできません。
  3. コードの発信元には、サーバー側のオープンリダイレクトが必要です。または、任意のユーザーコンテンツをホストする必要があります。

3つの要件すべてに一致するプロパティには、とりわけGoogleマップ、Gmail、またはGoogle画像が含まれます。 概念実証が著者のWebサイトに公開されており、Googleマップで試して、機能することを確認できます。

ChromeとFirefoxでこのエクスプロイトを試しましたが、動作させることができませんでした。 ローレンス・エイブラムスはブリーピング・コンピューターを使いこなしました。

終わりの言葉

攻撃はフィルターに依存するため、別の要件があります。 操作されたフィルターは、コンテンツブロッカーが使用するフィルターのリストに追加する必要があります。 最も一般的な2つのオプションには、コンテンツブロッカーにフィルターを手動で追加するユーザー、または操作されたフィルターが読み込まれるフィルターリストにあるユーザーが含まれます。

2番目のオプションは、特にユーザーが拡張機能の他のリストを読み込む場合に、より可能性が高いようです。 リストが操作されるのは初めてではありませんが、頻繁に行われることはありません。

拡張機能uBlock Originは、$ rewriteをサポートしないため、問題の影響を受けません。