web-dev-qa-db-ja.com

権限のないブラウザ拡張の危険性?

Firefoxの拡張機能またはChromeが WebExtensions権限 を要求しないと仮定すると、この拡張機能はどのような害を及ぼす可能性がありますか?

または別の言い方をすれば、通常のWebサイトでは実行できなかった、権限のない拡張機能が実行できる(悪意のある)アクションにはどのようなものがありますか?

11
tim

これは、情報を見つけるのが驚くほど難しいです。

デフォルトでは、拡張機能には コンテンツセキュリティポリシー (CSP)が適用されます。

"script-src 'self'; object-src 'self';"

この場合、selfキーワードは拡張パッケージを参照するため、拡張パッケージ自体に含まれているすべてのファイルにアクセスできます。これは、デフォルトのCSPを上書きしない限り、拡張機能が他の場所でホストされているスクリプトにアクセスできないことを強く示唆しています。同様に、明示的に許可しない限り、evalを使用してスクリプトを実行することはできません。

ただし、これは実際には権限を必要としません。したがって、理論的には、ブラウザを危険にさらす可能性のあるJSの自己完結型の欠陥がある場合、権限のない拡張機能が任意のコードを実行する可能性があります。これは限られた利点です-そのような欠陥はおそらくWebページからも機能するため、要件を満たしていません。

example webextensions のリポジトリに基づいて、特定のサイトのスタイル(例:borderifyの例)、ユーザーに表示されるテキストコンテンツ(例:Emoji Substitutionの例)を変更するための明示的な権限は必要ありません。または、ページからシステムクリップボードにデータをコピーするには(選挙対クリップボードの例)-クリップボードの例では、「content_scripts<all_urls>によって暗黙的に付与される「すべてのWebサイトのデータにアクセスする」機能が必要です。

したがって、サイトがこれらをブロックする可能性があるように見えても、いくつかの潜在的な悪意のあるアクションを確認することが可能です(コンテンツスクリプトを許可しないaddons.mozilla.orgに関するメモを参照):

  • フォームのターゲットを変更して、送信時にデータがサードパーティに送信されるようにします(ユーザーがアクティブ化した送信-これは事実上、テキストを変更するだけです)
  • ページに表示される値を変更します(たとえば、これを確認するために2番目の要素が使用されないオンラインバンキングの支払いのターゲットを変更します。ページが「支払い完了」メッセージを返したら、「支払いが失敗しました。もう一度お試しください」メッセージを追加します。 )
  • クリップボードの内容を読み取ることができる別のアプリケーションと組み合わせ、拡張機能を使用して、より有用なデータをクリップボードに取り込む(たとえば、他の方法では表示されない、ログインしたサイトから値をコピーする)

これらはすべて、悪意のある俳優がユーザーがどのページにアクセスするかについて合理的な推測を行うことができるかどうかに依存しますが、大規模なユーザーベースが想定される場合、これは数のゲームになります-おそらく誰かが最終的にターゲットページにアクセスします。

4
Matthew