Adblock Plus に脆弱性があり、疑わしいフィルタを使用するとコードが実行される

Adblock Plus 広告ブロッカーで 特定された 脆弱性、 許可する 攻撃者が用意した未検証のフィルターを使用する場合 (たとえば、サードパーティのルール セットを接続する場合、または MITM 攻撃中のルールの置換を通じて) に、サイトのコンテキストで JavaScript コードの実行を組織します。

フィルターのセットを含むリストの作成者は、演算子 " を使用してルールを追加することで、ユーザーが開いたサイトのコンテキストでコードの実行を整理できます。書き直す」を使用すると、URL の一部を置き換えることができます。 rewrite オペレーターを使用すると、URL 内のホストを置き換えることはできませんが、リクエスト引数を自由に操作することができます。 置換マスクとして使用できるのはテキストのみであり、スクリプト、オブジェクト、およびサブドキュメントのタグの置換が許可されます。 ブロックされている.

ただし、回避策を講じればコードを実行できます。
Google マップ、Gmail、Google 画像などの一部のサイトでは、ベア テキストの形式で送信された実行可能な JavaScript ブロックを動的にロードする手法が使用されています。 サーバーがリクエストのリダイレクトを許可している場合、URL パラメーターを変更することで別のホストへの転送を実現できます (たとえば、Google のコンテキストでは、リダイレクトは API を通じて行うことができます)。google.com/検索")。 リダイレクトを許可するホストに加えて、ユーザー コンテンツの投稿を許可するサービス (コード ホスティング、記事投稿プラットフォームなど) に対して攻撃を実行することもできます。

提案された攻撃方法は、JavaScript コードの文字列を (XMLHttpRequest や Fetch などを介して) 動的にロードして実行するページにのみ影響します。 もう XNUMX つの重要な制限は、リダイレクトを使用するか、リソースを発行する元のサーバー側に任意のデータを配置する必要があることです。 ただし、攻撃の関連性を示すために、「google.com/search」を介したリダイレクトを使用して、maps.google.com を開くときにコードの実行を編成する方法を示します。

修正はまだ準備中です。 この問題はブロッカーにも影響を与える AdBlockを и uBlock。 uBlock Origin ブロッカーは「rewrite」演算子をサポートしていないため、この問題の影響を受けません。 かつては uBlock Origin の作者でした
拒否されました 潜在的なセキュリティ問題とホストレベルの制限が不十分であることを理由に、リライトのサポートを追加しました (クエリ パラメータを置き換えるのではなくクリーンアップするために、リライトの代わりにクエリストリップ オプションが提案されました)。

Adblock Plus 開発者は、ルールの標準リストへの変更はすべてレビューされており、サードパーティのリストに接続することはユーザーの間で非常にまれであるため、実際の攻撃の可能性は低いと考えています。 MITM を介したルールの置き換えは、標準ブロック リストのダウンロードに HTTPS をデフォルトで使用することによって防止されます (他のリストについては、将来のリリースで HTTP を介したダウンロードが禁止される予定です)。 ディレクティブを使用してサイト側の攻撃をブロックできます CSP (コンテンツ セキュリティ ポリシー)。これにより、外部リソースをロードできるホストを明示的に決定できます。

出所: オープンネット.ru

コメントを追加します