Chrome エクステンションによる平文パスワードの窃取:大量の Web サイトが脆弱な状態

Chrome extensions can steal plaintext passwords from websites

2023/09/02 BleepingComputer — Chrome Web Store にアップロードされた PoC エクステンションは、Web サイトのソースコードから平文のパスワードを盗むためのものであり、ウィスコンシン大学マディソン校の研究チームが作成したものである。Web ブラウザのテキスト入力フィールドを調査した結果として、Chrome エクステンションを支える粗視化 (coarse-grained) 許可モデルが、最小特権と完全仲介の原則に違反していることが明らかになったという。さらに研究者たちは、Google や Cloudflare のポータルなど含む多数の Web サイトにおいて、数百万人のビジターたちが、Web ページの HTML ソースコード内にパスワードを平文で保存していることを発見した。そして、それらの情報の不正な取得が、悪意のエクステンションを介して可能なことが判明した。

問題の原因

この問題は、ブラウザのエクステンションが読み込んだサイトの DOM ツリーに、無制限にアクセスできるというシステム的な慣行によるものだと、研究者たちは指摘している。それにより、ユーザーの入力フィールドなどの、潜在的に機密性の高い要素に対して、不正なアクセスが可能になると、彼らは説明している。

エクステンションとサイト要素の間には、セキュリティ上の境界が存在しない。したがってエクステンションは、ソースコードから見えるデータに対して無制限にアクセスすることが可能であり、その内容をすべて引き出すことができる。

さらに、DOM API を悪用するエクステンションであれは、ユーザーが入力した値をダイレクトに抽出し、機密性の高い入力を保護するために、それぞれのサイトが適用している難読化ステップをバイパスして、プログラム的に値を盗むことができるという。

2023年に Google Chrome が導入し、ほとんどのブラウザが採用した Manifest V3 プロトコルでは、API の悪用が制限され、検出回避のためのリモート・コード取得が制限禁止され、任意のコード実行につながる eval 文の使用も防止されている。

しかし、研究者たちが説明するように、Manifest V3 ではエクステンションと Web ページの間に、セキュリティ境界が導入されていないため、コンテンツ・スクリプトの問題は残っている。

Permeable security boundary between extensions and websites
Permeable security boundary between extensions and websites (arxiv.org)
Web Store に PoC をアップロード

Google Web Store の審査プロセスをテストするため、研究者たちはパスワード奪取攻撃が可能な Chrome エクスプロイトを作成し、このプラットフォームにアップロードしてみることにした。

研究者たちは、GPT ベースのアシスタントを装うエクスプロイトを作成し、以下の機能を埋め込んだ:

  1. ユーザーがページ上でログインするときに、正規表現を用いて HTML ソースコードをキャプチャする。
  2. CSS セレクタを悪用してターゲット入力フィールドを選択し、’.value’ 関数を用いてユーザー入力を抽出する。
  3. 要素置換を実行し、JS ベースの難読化フィールドを、安全ではないパスワード・フィールドに置き換える。
Code to extract field content (left) and perform element substitution (right)
Code to extract field content (left) and perform element substitution (right) (arxiv.org)

この拡張機能には、明確な悪意のコードが含まれず、外部ソースからコードをフェッチ (動的インジェクション)しないため、Manifest V3 に準拠し、静的テストを回避する。その結果として、このエクステンションは審査を通過し、Google Chrome の Web Store で承認された。つまり、セキュリティ・チェックでは潜在的な脅威を検出できないことになる。

研究チームは、実際のデータが収集/悪用されないようにするために、倫理基準に従ってデータ受信サーバを停止し、エレメント・ターゲティング・サーバだけをアクティブにしておいた。また、このエクステンションは、常に「未公開」に設定されていたことで、多くのダウンロードを集めることはなく、承認後は Store から速やかに削除されている。

悪用の可能性

その後の測定で、上位 10,000 件 Web サイト (Tranco による) の中で、およそ 1,100 件が HTML DOM 内にプレーン・テキスト形式で、ユーザー・パスワードを保存していることが判明した。

また、同じ測定により、7,300 件の Web サイトが、DOM API へのアクセスと、ユーザー入力値のダイレクトな抽出に対して、脆弱であると判断された。

Websites vulnerable to attacks
High-traffic websites vulnerable to attacks (arxiv.org)

ウィスコンシン大学マディソン校の研究者たちが、今週の初めに発表した技術論文によると、Chrome Web Store にある約 17,300 種類のエクステンション (12.5%) が、Web サイトから機密情報を抽出するために必要な権限を確保しているという。

そのうちの、いくつかは、広く使われている広告ブロッカーやショッピング・アプリなどであり、何百万ものインストール数を誇っているものだ。

このレポートでは、保護が不十分な Web サイトの例として、以下のものが挙げられている:

  • gmail.com:HTML ソースコード上の平文パスワード
  • cloudflare.com:HTML ソースコード上の平文パスワード
  • facebook.com:DOM API 経由でユーザー入力を抽出可能
  • citibank.com:DOM API 経由でユーザー入力を抽出可能
  • irs.go・:Web ページのソースコード上で SSN が平文で閲覧可能
  • capitalone.com:Web ページのソースコード上で SSN が平文で閲覧可能
  • usenix.orgWeb ページのソースコード上で SSN が平文で閲覧可能
  • amazon.com:クレジット・カードの詳細 (セキュリティ・コードを含む) および郵便番号が、ページのソースコード上で平文で閲覧可能

 

Gmail and Facebook vulnerable to user input retrievals
Gmail and Facebook vulnerable to user input retrievals (arxiv.org)

最後になるが、190件のエクステンション (DL 数 100K 超もある) が、パスワード・フィールドに直接アクセスし、その値を変数に保存していることが分析で示された。つまり、一部のパブリッシャーが、すでにセキュリティ・ギャップを悪用している可能性が示唆されている。

BleepingComputer は、この論文で強調されているリスクを、改善する予定があるかどうかを尋ねるために、言及された企業に連絡をとった:

Amazon のコメント:顧客のセキュリティは最優先事項であり、それを保護するために、いくつかの手段を講じている。Amazon の Web サイトに入力される顧客情報は安全である。当社のサービスを利用する顧客を、さらに保護するために、ブラウザやエクステンションの開発者に対して、セキュリティのベスト・プラクティスを使用するよう奨励している。

Google のコメント:この問題を調査中であることを確認し、関連するパーミッションが適切に取得されている限り、パスワード・フィールドへのアクセスをセキュリティ上の問題と見なさないとする、Chrome エクステンション・セキュリティ FAQ を引き合いに出している。