- Socketが発見したTwitch拡張機能JeeBotが、プロキシサーバー経由でOAuthトークンを収集
- トークン収集の対象外はロシア人ストリーマー10チャンネルのみで、意図的な設計であることを示唆
- 開発者は修正版を公開したものの、利用者は安全のため流出したトークンを失効させるべき
Twitch向けのあるブラウザ拡張機能が、利用者のOAuthトークンを収集し、ロシア資本のサーバーへ送信していたことが分かりました。この挙動は意図的なものでしたが、それが悪意によるものかどうかを見極めるのは簡単ではありません。
セキュリティ研究者集団Socketは最近、ChromeとFirefoxの両方に対応した「Twitch Enhanced Viewer | JeeBot」という拡張機能を発見しました。Chromeでは約3万人、Firefoxでは約600人のユーザーがこの拡張機能を利用しています。
Chromeウェブストアでは、この拡張機能は「品質・利便性・コントロールを重視するストリーマーや視聴者向けの最新ツール」として宣伝されています。うたい文句によれば、配信や視聴をより見やすくし、2Kでのコンテンツ視聴を可能にし、バナー広告や不要な要素を非表示にし、さらには配信とのやり取りを容易にするAIボットまで提供するとされています。
ハードコードされた除外リスト
研究者たちによると、この拡張機能は独自のプロキシサーバーを経由してTwitchの動画ストリームのプレイリストを取得する設計になっています。しかし、単にリクエストを転送するだけでなく、この拡張機能はユーザーのOAuthトークンもリクエストに付加していました。トークンはURLに組み込まれていたため、プロキシサーバーのリクエストログにもトークンが記録されることになっていました。
この問題を指摘された後、拡張機能の開発者(HISHIMIRO/jeetbot.cc)は新バージョン85.8.7(Firefox向け、Chrome向けは現在審査中)を公開し、この不具合を修正したとしています。プレイリストの取得時に、ユーザーのOAuthトークンがもはやプロキシに送信されないというものです。責任ある開示を受けて是正された、単純な過失のように見えるかもしれません。しかし、Socketはトークンの取得方法について次のように述べています。
「現行のビルド(v85.x)では、運営者のプロキシへのネットワーク層でのリダイレクトの際に、トークンが&auth=というクエリパラメータとしてインラインで転送されます」とSocketは説明しています。「このトークンは、ユーザーが視聴するすべてのチャンネルについて転送されますが、ハードコードされた10のロシア人ストリーマーチャンネルの許可リストだけは例外で、これらのセッションは転送の対象から除外されています」
OAuthトークンの取得対象から除外されるロシア人ストリーマーチャンネルのリストが10件存在していたとすれば、開発者が自分の行っていることを十分に理解した上でこれを行っていたと考えるのが妥当でしょう。
拡張機能がアップデートされたのは良いことですが、もしこの拡張機能を利用している場合は、念のため流出したTwitchトークンも失効させておくべきです。