注目

脅威動向 / THREATS / MALICIOUS EXTENSION

Twitch視聴拡張機能「JeetBot」が3万人のOAuthトークンを窃取 — Socketが報告、ロシアのボット事業者の代理サーバーへ転送

Socketの脅威リサーチチームは2026年9月11日、ChromeとFirefoxの公式ストアで配布されているTwitch視聴拡張機能「Twitch Enhanced Viewer | JeetBot」が、利用者の live なTwitch OAuthトークンをロシアの商用ボット事業者が運用する代理サーバーへ転送していると報告した。Chrome版の利用者は約3万人、Firefox版は552人に上り、報告時点で両ストアの掲載は継続していた。

攻撃者グループ
攻撃手法
ソフトウェア

要点

  • セキュリティ企業Socketの脅威リサーチチームは2026年9月11日、ブラウザー拡張機能「Twitch Enhanced Viewer | JeetBot」が利用者のTwitch OAuthトークン(利用者の代わりにサービスへアクセスする認証情報)を運営者の代理サーバーへ転送していると報告した。拡張機能はGoogleのChromeウェブストア(拡張機能ID pnhhdhhcadcjfckjhpmjneldiegbojfb、利用者約3万人)とMozillaのFirefox Add-ons(ID [email protected]、利用者552人)の両公式ストアで配布されており、Socketの報告時点で掲載は継続していた。
  • Socketによると、運営者はTwitchやKick、VK Live向けのボット機能を提供するロシアの商用ボットサービスだ。拡張機能は広告のブロックや1080p画質の強制、地域制限の回避、チャンネルポイントの自動回収といった実際に動作する便利機能をうたい、その実現手段としてTwitchの動画再生リストの取得要求を運営者の代理サーバー経由に付け替える。この付け替えの際に、利用者のアカウント権限を持つOAuthトークンがおまけとして代理サーバーへ送られる仕組みだ。
  • 転送されるのは動画再生専用の細い権限のトークンではない。Socketは、拡張機能がTwitch自身のトークン検証エンドポイントに同じ値を Authorization: OAuth として送っていることから、アカウント単位のOAuthトークンだと確認している。このトークンはチャットやささやき(ダイレクトメッセージ)、アカウント設定へのアクセスに使える。現行版(v85.x)はトークンをリダイレクト先URLの &auth= クエリに付けて送るため、トークンは平文のまま代理サーバーの要求記録に残る。

トークン取得と転送の仕組み

Socketが拡張機能のコードを解析したところ、トークンの流れは次の通りだった。

1つ目は取得だ。拡張機能のコンテンツスクリプト(ウェブページ側で動く部品)が、Twitchのウェブクライアント自身が使う認証ヘッダーをページから読み取り、拡張機能内部の橋渡し経路でバックグラウンド処理部へ渡す。バックグラウンド処理部はこの値を保存し、先頭の接頭辞を取り除いて生のトークンを取り出す。

2つ目は転送だ。拡張機能はTwitchの動画配信要求(usher.ttvnw.net 宛て)を運営者の代理サーバー(既定は enhanced[.]jeetbot[.]cc)経由に付け替える際、URL末尾にトークンを &auth= として付加する。Firefox版は webRequest.onBeforeRequest の遮断型リスナーで、Chrome版は declarativeNetRequest の正規表現置換ルールで同じ結果を得ており、両ストアでトークンの扱いは同一だとSocketは説明している。

3つ目は例外規定だ。トークンを付けないチャンネルが10件だけハードコード(コード内に直接記載)されており、いずれもロシア語の配信者(Counter-Strike界隈の著名人を含む)のチャンネルだ。この10件以外を視聴するすべての利用者の live なトークンが代理サーバーへ転送される。

Socketは、旧版(v4.x。例として2026年1月8日公開のバージョン4.8)ではさらに直接的で、取得したトークンを運営者ホストの set-token エンドポイントへPOST送信していたと報告している。予備の送信先として deno.devdeno.net 上のエンドポイントも定義されていた。これらの旧エンドポイントは現在は廃止されている。

運営者と基盤 — Socketの指摘

Socketは、運営者の特定につながる情報として次を挙げている。拡張機能の配布元サイト jeetbot[.]cc のフッターには「Popov Aleksandr Alekseevich」の自己名義があり、ストアの開発者ハンドルは「HISHIMIRO」、連絡先メールは support@jeetbot[.]cccybergnyda@gmail[.]com だとしている。基盤側では、jeetbot[.]cc 系を収容する 152[.]53[.]177[.]186(ドイツのnetcup、AS197540)や、 ext-styles[.]jeetbot[.]cc などを収容する 132[.]243[.]113[.]2580[.]74[.]26[.]162(いずれもCLODO Cloud、AS216154)を挙げている。これらはいずれもSocketが報告した運営側の識別情報であり、本記事はSocketの報告の範囲で伝える。

Socketはこの攻撃をMITRE ATT&CKの T1176(ブラウザー拡張機能)、T1539(ウェブセッションクッキーの窃取)、T1557(中間者攻撃)、T1071.001(アプリケーション層プロトコル:ウェブプロトコル)に位置づけている。

Socketが呼びかける対応

Socketは、利用者・開発者・組織の防御担当者の三層に分けて対応を呼びかけている。いずれもSocketが公表した内容であり、本記事独自の推奨ではない。

  • 利用者向け:ChromeとFirefoxから「Twitch Enhanced Viewer | JeetBot」を削除する。そのうえでTwitchのアカウント設定から全セッションを切断して再認証し、転送済みのトークンを無効化する。ログイン中のサービスの通信を代理する拡張機能は、そのサービスのセッション認証情報に触れ得るものとして扱うよう求めている。
  • 開発者向け:認証ヘッダーやトークンを伴う要求を第三者のサーバー経由で流さない。代理が必要な機能では、認証情報をブラウザーから出す前に取り除き、代理の事実を目立つ形で開示する。
  • 組織の防御担当者向け:IOC欄の基盤をネットワーク層で遮断し、端末に両拡張機能ID(Chrome: pnhhdhhcadcjfckjhpmjneldiegbojfb、Firefox: [email protected])が入っていないか棚卸しする。認証済みサービスへのホスト権限(ここでは gql.twitch.tvusher.ttvnw.netid.twitch.tv)と第三者の代理宛先を併せ持つ拡張機能は、認証情報の露出リスクとして扱うよう求めている。

日本の読者への影響

Twitchの視聴者や配信関係者が画質改善や広告ブロック目的で非公式の視聴支援拡張機能を入れている場合、同型の危険がある。ブラウザーの拡張機能は公式ストアの審査を通過していても、通信の代理先や権限の範囲までは利用者には見えない。組織では、業務端末に入っている拡張機能の棚卸しと、配信系サービスのアカウントに不審なログインや設定変更がないかの確認が求められる。Twitchのアカウントに身に覚えのない接続や設定変更がある場合は、セッションの切断と再認証が必要だ。

出典

この記事は、公開情報と編集部の調査・知見をもとに構成しています。内容は公開時点の情報に基づく解説であり、個別の環境への診断・対応を保証するものではありません。重要な判断では、記事内の出典や各提供元の最新情報もご確認ください。