Googleの公表はウソだった? 「Chrome」の拡張機能が危険な理由
Google Chromeには便利な拡張機能が多数ある。だが、研究によればChrome ウェブストアからインストールした拡張機能はそれほど安全ではなく、数億人のユーザーがマルウェアに感染した可能性があるという。
「Google Chrome」(以下、Chrome)に不足している機能を補うには、「Chrome ウェブストア」から拡張機能をダウンロードすればよい。
しかし、ここに問題がある。マルウェアが含まれている可能性があるからだ。スタンフォード大学の研究チームはChrome ウェブストアで配信されている拡張機能を網羅的に調べ、マルウェアなどのリスクがどの程度なのかを確認した。何が分かったのだろうか。
実は危険だったウェブストア
同大学のシェリル・シュー氏とマンダ・トラン氏、オーロア・ファス氏の3人は、まず、Chrome ウェブストアの利用規約やプライバシーポリシーに違反している拡張機能やマルウェア、脆弱(ぜいじゃく)なソースコードを含む拡張機能について調査した。
研究チームは拡張機能のセキュリティに関して、過去の研究データを分析した後、2020年7月から2023年2月の間にChrome ウェブストアで利用可能だった全ての拡張機能(12万4094個)をダウンロード後、ソースコードを分析してマルウェア感染の兆候を調査した。さらに拡張機能のダウンロード履歴と拡張機能の寿命も分析した。
その結果、約2年間の調査期間中のうち、延べ約3億4600万人のユーザーがChrome ウェブストアからセキュリティ面で問題がある拡張機能をダウンロードしたことが分かった。その内訳はマルウェア(延べ2億8000万人)、Googleのポリシー違反(同6300万人)、脆弱性を含んだもの(同300万人)だった*1。
*1 ソースコードを解析できた10万8859個の拡張機能のうち、9万2482個が良性だった。6587個がマルウェアを含み、9638個がポリシー違反、152個が脆弱性を含んでいた。これらにダウンロードされた数を掛け合わせることで人数を割り出した。
これはGoogleの公式の主張とは大きく異なる。GoogleはChrome ウェブストアからダウンロードされた拡張機能のうち、マルウェアが検出されたものは、1%にも満たないと主張しているからだ*2。
*2 Staying Safe with Chrome Extensions(Google)
なぜ拡張機能が狙われるのか
攻撃者がブラウザの拡張機能を利用するのは、特殊で特権的な機能を持つためだ。
攻撃者は悪意のある拡張機能を開発して配置した後、不正広告を介してマルウェアを拡散したり、ユーザーを追跡したり、ユーザーをスパイしたり、認証情報やその他の機密情報を盗んだりする。
拡張機能を悪用するとクロスサイトスクリプティングや機密ユーザーデータの漏えいにつながる機能や脆弱性の作り込みが可能だ。
なお、拡張機能を使用することは、攻撃者の有無とは別にWebユーザーのプライバシーリスクにつながる。幾つかの拡張機能が引き起こすフィンガープリンティングといった副作用を利用すると、ユーザーがインストールした拡張機能の組み合わせを外部から推測できるからだ。第三者がWebサイト全体でユーザーを追跡したり、ユーザーに関する機密情報を推測したりできる。
研究チームは12万4094個の拡張機能のうち、約60%が1年以内にChrome ウェブストアから削除されたことを突き止めた。なお、1日当たりの登録数は200〜600の範囲にある。その一方で、一部の問題のある拡張機能が長年にわたってChrome ウェブストアに残っており、ユーザーにセキュリティリスクを与え続けていたことも分かった。研究チームは「ユーザーがこれらの問題のある拡張機能を報告することがめったにないため」削除されないと指摘した。
分析の対象となった拡張機能の多くは、パブリックリポジトリやフォーラムから提供されたソースコードを共有している。そのため古くなって脆弱性が残ったままのソースコードが複数の拡張機能に広がっていき、セキュリティリスクが悪化したという。
研究チームはソースコードに類似性がある拡張機能のクラスターを何千も発見した。ソースコードを解析できた10万8859個の拡張機能のうち、2万822個の拡張機能が他の拡張機能と同様のコンテンツスクリプトまたはバックグラウンドスクリプトを含んでいた。これらの拡張機能は3270個のクラスターを形成していることも分かった。3270個のクラスターのうち、2296個は良性のみ、321個はセキュリティに課題があるもののみ、653個は両方を含んでいた。
逆に言えば、拡張機能のソースコードの類似性を調査することで、セキュリティに問題のある未知の拡張機能を特定できる可能性があるという。
ピンポイントの攻撃にも拡張機能が使われる
特定のターゲットを狙うためにChromeの拡張機能を使う事例もある。Zscalerが2024年6月27日に発表した事例ではChrome ウェブストアではなく、「GitHub」に拡張機能がアップされた。
この事例では北朝鮮政府が支援する攻撃者「Kimsuky」が「TRANSLATEXT」と呼ばれる拡張機能を使い、電子メールのアドレスやユーザー名、パスワードの他、Webブラウザのスクリーンショットのキャプチャーを取得できたという。
Chrome ウェブストアでは公開前にGoogleによる審査があるものの、GitHubにはない。つまり、Chrome ウェブストアが安全ではないからといってそれ以外の場所から拡張機能をダウンロードすると、さらに危険だということだ。
悪意のない開発者にも課題あり
悪意以外の課題もある。開発者の行動と開発ツールだ。
拡張機能のうち約60%はリリース後一度も更新されていないことが今回の研究で分かった。登録されてから1年後の更新回数の中央値は0回で、平均値は0.16回だった。
セキュリティリスクはもちろん、不具合がないソースコードは存在しないため、これは危険だ。研究チームは2021年に発見された脆弱な拡張機能の半分は、2023年になってもまだChrome ウェブストアに残っているという先行研究を挙げた。
開発者が使用している開発ツールの選択にも問題がある。より安全な代替手段が利用可能にもかかわらず、開発者が非推奨のツールを使い続けている。例えば、拡張機能の3分の1が既知の脆弱性を持つJavaScriptライブラリを使用しており、5億人近いユーザーに影響を与えている。
拡張機能の内部からChromeの機能を利用するにはAPIをたたく必要があり、そのためには「Manifest」で利用する機能のパーミッションを宣言する必要がある。Manifestには3つのバージョンがある。V1は2012年以降非推奨だ。V2は非推奨だが、2023年7月現在、約62%の拡張機能がこれを利用している。ChromeがV2のサポートをいつ終了するかは、期限が何度か延長されているため、現在のところはっきりしない。V3は拡張機能のセキュリティやプライバシー、パフォーマンスを改善するために2020年11月にリリースされた。例えば、V3は拡張機能による外部リソースのダウンロードを防止し、代わりに全てのリソースを拡張機能パッケージ内にバンドルする必要がある。つまり、V3を使えばセキュリティを強化できる。ただし、V2からV3への移行は苦痛を伴う。なぜなら幾つかのChrome APIの機能がV3では利用できなくなり、開発者は代替案を探さなければならず、代替案がない場合も少なくないからだ。
良い開発者と悪い開発者が一人の中で共存
研究チームは個々の拡張機能の開発者についても挙動を調べた。その結果、悪意がありセキュリティに課題のある拡張機能と何ら問題のない拡張機能の両方を公開している場合が多数見つかったという。
例えば、悪意のある拡張機能を1つ公開している開発者は、平均して3.6個の問題のない拡張機能と4.9個のマルウェアを含む拡張機能、1.4個のポリシー違反の拡張機能、0.00093個の脆弱性のある拡張機能を公開していた。
もちろん、悪に染まりきった開発者も見つかった。マルウェアを含む拡張機能を100個以上公開した開発者は30人おり、Chrome ウェブストアのポリシーに違反して削除された拡張機能を100個以上公開した開発者は28人いるという。
研究チームは「Chrome ウェブストアをより安全にするためには、拡張機能のメンテナンス方法を改善して、ユーザーとプラットフォームの両方が警戒を強める必要がある」とまとめた。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 「Google Chrome」でパスワードがダダ漏れに そのカラクリとは?
Webブラウザと拡張機能の組み合わせは便利だが、セキュリティホールを生み出してしまうこともある。Amazon.comやGmailのパスワードを第三者が盗む方法を研究チームが発見した。 - Google ChromeとMicrosoft Edgeがあなたのデータを盗み出す
Google ChromeやMicrosoft Edgeに入力した個人情報がGoogleやMicrosoftに筒抜けになる「スペルジャッキング」という不具合が見つかった。パスワードも漏れてしまう。 - どう見ても怪しくない「Microsoft詐欺」にご用心 何がどう危険なのか?
Webブラウザのポップアップログインウィンドウを悪用したサイバー攻撃「BitB」が出現した。ユーザーが日常慣れ親しんだ操作をすると、ごく自然に認証情報を盗まれてしまう。