Chrome拡張機能「Adblock for YouTube」について、「サーバー側の設定を1つ変更するだけでユーザーのブラウザ上で任意のJavaScriptをページ内で実行できる設計になっている」とエンタープライズブラウザ企業のIslandが指摘しました。Islandは悪意あるコードが実際に配信された形跡は確認していないとしたうえで、1100万件以上インストールされている拡張機能に危険な実行経路が存在していると報告しています。

BadBlocker: 11 Million Users, One Server Call Away from Compromise

https://www.island.io/blog/badblocker-11-million-users-one-server-call-away-from-compromise

Adblock for YouTubeYouTube広告を消すことを目的としたChrome拡張機能です。Chrome Web Storeで1100万件以上インストールされ、37万4000件以上のレビューと★4.4の評価を得ているとのこと。YouTube広告をブロックするという本来の機能は動作しており、多くのユーザーにとっては「人気があり、評価も高く、目的通りに動く拡張機能」に見えます。

広告ブロッカーは広告を見つけて消すために、ページの内容を調べたり、通信を検査したり、表示要素を書き換えたりする必要があるため、普通の拡張機能より強い権限を求めやすく、ユーザーも「広告を消すためなら仕方ない」と受け入れがちです。Islandはこうした信頼と強い権限の組み合わせが問題の出発点だと説明しています。

IslandはAdblock for YouTubeが「host_permissions」に「<all_urls>」を指定していることを問題視。host_permissionsは拡張機能がどのURLに対して操作できるかを示す権限で、「<all_urls>」を指定すると拡張機能があらゆるウェブサイトを操作できるようになります。YouTube向けの広告ブロッカーでありながら、ウェブメール、銀行サイト、業務用SaaS、管理画面、社内ツールなど幅広いページに届く権限を持っているというわけ。



さらにIslandが注目したのは、Adblock for YouTubeが24時間ごとに外部サーバーから設定を取得する仕組みです。外部サーバーから取得する設定には通常の広告ブロック用ルールだけでなく、「scriptletsRules」という項目が含まれており、拡張機能側に組み込まれた小さなJavaScript関数群のうち、どの関数をどの引数で実行するかをサーバー側が指定できる構造になっていたとのこと。

scriptletは広告ブロッカーで使われることがある小さな処理の単位で、広告表示の回避やページ要素の調整に利用されます。scriptlet自体が直ちに危険というわけではありませんが、Islandは「インストール後に外部サーバーから受け取った設定によって、ページ内で実行されるJavaScriptの内容を大きく変えられる点」が問題だと述べました。

Islandによると、Adblock for YouTubeには「trusted-create-element」というscriptletが含まれており、サーバー側の設定次第でページ内にscriptタグを作成し、任意のJavaScriptを流し込めるようになっているとのこと。scriptタグとして追加されたJavaScriptはページ自身のコードと同じ実行環境で動作するため、ページに表示されたデータ、フォーム、ログイン済みセッション、ユーザー操作に触れられる可能性があります。



Islandはこの挙動を確認するため、ローカルの模擬サーバーを使った概念実証を実施しました。拡張機能本体は改変せず、通常のルール取得先だけを模擬サーバーに置き換えたところ、YouTube上で動いたscriptletが、youtube.comを含むクエリ文字列付きのSalesforceを開き、Salesforce上でも同じ判定を通過して処理を実行できたとのこと。概念実証では、ユーザーが閲覧できるアカウント情報を読み取り、模擬サーバーへ送信する流れが示されています。

IslandはAdblock for YouTubeについて、悪意あるペイロードがユーザーに配信された形跡は確認していないと述べつつ、拡張機能の更新やChrome Web Storeの再審査、新しい権限の要求、ユーザーに見える変更などを行わずともサーバー側の設定変更だけで危険な処理を有効化できる点をリスクだとしています。

Adblock for YouTubeは2014年ごろからChrome Web Storeに存在していた老舗拡張機能ですが、Islandによると2018年ごろに所有者が変わり、コードベースも大きく書き換えられたとのこと。さらに「Adblock for YouTubeと関連があるとされる別の広告ブロック拡張機能が、過去にマルウェアとしてChrome Web Storeから削除されていた」こともIslandは懸念材料として示しています。



Islandは対策として、広告ブロッカーを一律に禁止するのではなく、権限が目的に見合っているか、外部サーバーから取得した設定でページ内実行の内容を変えられる設計になっていないか、所有者や権限が変わっていないかを確認するべきだとしています。便利な拡張機能ほど長く使われ、長く使われるほど信頼が積み上がりますが、Islandは「信頼されている拡張機能が、最初に公開された小さな広告ブロッカーと同じものとは限らない」と述べています。