ウィスコンシン大学マディソン校の研究者チームは、Web サイトのソース コードから平文パスワードを盗むことができる概念実証拡張機能を Chrome ウェブストアにアップロードしました。
Web ブラウザのテキスト入力フィールドを調査したところ、Chrome 拡張機能を支えている粒度の粗い権限モデルが、最小権限と完全な調停の原則に違反していることが判明しました。
さらに研究者らは、一部の Google や Cloudflare ポータルなど、何百万人もの訪問者がいる多数の Web サイトが、Web ページの HTML ソース コード内にパスワードを平文で保存しており、拡張機能がパスワードを取得できるようにしていることを発見しました。
問題の原因
研究者らは、この問題は、ブラウザ拡張機能がロードするサイトの DOM ツリーへの無制限のアクセスを許可し、ユーザー入力フィールドなどの潜在的に機密性の高い要素へのアクセスを許可するという体系的な慣行に関係していると説明しています。
拡張機能とサイトの要素の間にセキュリティ境界がないことを考慮すると、前者はソース コード内に表示されるデータに無制限にアクセスでき、そのコンテンツのいずれかを抽出する可能性があります。
さらに、この拡張機能は DOM API を悪用して、ユーザーが入力する入力値を直接抽出し、機密入力を保護するためにサイトによって適用される難読化をバイパスし、プログラムによって値を盗む可能性があります。
Google Chrome が導入し、今年ほとんどのブラウザで採用された Manifest V3 プロトコルは、API の悪用を制限し、拡張機能が検出を回避する可能性のあるリモートでホストされているコードを取得することを禁止し、任意のコードの実行につながるevalステートメントの使用を防止します。
ただし、研究者らが説明しているように、Manifest V3 では拡張機能と Web ページの間にセキュリティ境界が導入されていないため、コンテンツ スクリプトの問題は残ります。
Web ストアに PoC をアップロードする
Google の Web ストアのレビュー プロセスをテストするために、研究者らは、パスワード取得攻撃が可能な Chrome 拡張機能を作成し、プラットフォームにアップロードすることを試みることにしました。
研究者らは、次のことができる GPT ベースのアシスタントを装った拡張機能を作成しました。
- ユーザーが正規表現を使用してページにログインしようとすると、HTML ソース コードをキャプチャします。
- CSS セレクターを悪用してターゲットの入力フィールドを選択し、「.value」関数を使用してユーザー入力を抽出します。
- 要素置換を実行して、JS ベースの難読化されたフィールドを安全でないパスワード フィールドに置き換えます。
この拡張機能には明らかな悪意のあるコードが含まれていないため、静的検出を回避し、外部ソースからコードをフェッチしない (動的インジェクション) ため、マニフェスト V3 に準拠しています。
その結果、拡張機能はレビューに合格し、Google Chrome の Web ストアで承認されたため、セキュリティ チェックで潜在的な脅威を検出できませんでした。
チームは倫理基準に従って、実際のデータが収集または悪用されないことを保証し、データ受信サーバーを非アクティブ化し、要素ターゲット サーバーのみをアクティブのままにしました。
また、この拡張機能は多くのダウンロードが集まらないように常に「非公開」に設定されており、承認後すぐにストアから削除されました。
悪用の可能性
その後の測定により、上位 10,000 の Web サイト (Tranco による) のうち、約 1,100 の Web サイトがユーザー パスワードを HTML DOM 内にプレーン テキスト形式で保存していることがわかりました。
同じセットの別の 7,300 の Web サイトは、DOM API アクセスおよびユーザーの入力値の直接抽出に対して脆弱であるとみなされました。
ウィスコンシン大学マディソン校の研究者らが今週初めに発表した技術論文では、Chrome ウェブストアの約 17,300 個の拡張機能 (12.5%) が、ウェブサイトから機密情報を抽出するために必要な権限を確保していると主張しています。
広く使用されている広告ブロッカーやショッピング アプリなど、それらのいくつかは数百万のインストールを誇っています。
レポートで強調されている保護が欠如している注目すべき Web サイトの例は次のとおりです。
- gmail.com – HTML ソース コード上の平文パスワード
- Cloudflare.com – HTML ソースコード上の平文パスワード
- facebook.com – ユーザー入力は DOM API 経由で抽出できます
- citibank.com – ユーザー入力は DOM API 経由で抽出可能
- irs.gov – SSN は Web ページのソース コード上で平文形式で表示されます
- Capitalone.com – SSN は Web ページのソース コード上で平文形式で表示されます
- usenix.org – SSN は Web ページのソース コード上で平文形式で表示されます
- amazon.com – クレジット カードの詳細 (セキュリティ コードを含む) と郵便番号がページのソース コードに平文形式で表示されます
最後に、分析により、190 の拡張機能 (ダウンロード数が 10 万を超えるものもあります) がパスワード フィールドに直接アクセスし、値を変数に保存していることが判明しました。これは、一部のパブリッシャーがすでにセキュリティ ギャップを悪用しようとしている可能性があることを示唆しています。
私たちは、言及された企業に連絡して、論文で強調されているリスクを修正する予定があるかどうか尋ねたところ、これまでのところ、Amazon と Google から次のような回答を得ています。
Amazonでは、お客様のセキュリティが最優先事項であり、それを保護するためにいくつかの措置を講じています。 Amazon Web サイトに入力された顧客情報は安全です。
ブラウザーと拡張機能の開発者には、セキュリティのベスト プラクティスを使用して、サービスを使用する顧客をさらに保護することをお勧めします。 – アマゾンの広報担当者
Googleの広報担当者は、この問題を調査中であることを認め、Chromeの拡張機能のセキュリティFAQでは、関連する権限が適切に取得されている限り、パスワードフィールドへのアクセスはセキュリティ上の問題とはみなされていないと指摘した。
Comments