安全厂商 Socket 于 2026 年 9 月 11 日披露,一款同时在 Chrome 网上应用店与 Firefox 附加组件商店上架的扩展 Twitch Enhanced Viewer | JeetBot,将约 3.1 万名用户的 Twitch OAuth 会话令牌以明文 URL 查询参数转发到运营方控制的代理服务器,这些服务器由一家俄罗斯商业机器人服务商运营。泄露的令牌属于账户级 bearer 凭证,持有者无需密码、也无需二次验证即可操作受害者账号。
事件概述
扩展开发者标识为 HISHIMIRO / jeetbot.cc,站点页脚指向一位塞浦路斯开发者。Chrome 扩展 ID 为 pnhhdhhcadcjfckjhpmjneldiegbojfb,约 30,000 用户;Firefox 附加组件约 604 用户。扩展宣称提供去广告、强制 1080p、区域解锁等功能,实现方式是把 Twitch 视频播放列表请求(usher.ttvnw.net)经运营方代理中转。问题出在中转环节:重定向时用户的 OAuth 令牌以 &auth= 查询参数附在 URL 上,令牌因此以明文写入代理服务器请求日志,长期留存于运营方日志语料中。
技术细节
Socket 研究员 Kush Pandya 指出,当前 v85.x 构建会在网络层重定向时内联转发令牌,覆盖用户观看的每一个频道,唯一例外是一份硬编码的 10 个俄语主播频道白名单,其中包含粉丝量 110 万、58 万、36 万、22.5 万等量级的主播频道。一份只保护特定语言受众、对其他国家用户全量转发的白名单,是判定该行为属故意设计的核心证据。
捕获:扩展从已认证会话中取出 Twitch OAuth 令牌
投递:令牌作为 &auth= 查询参数附于发往运营方代理的重定向 URL
留存:明文令牌写入代理服务器 access log
关键在于扩展并不需要这枚令牌就能工作——播放所需的 playback token 由扩展另行处理,白名单频道流量也在不附带账户令牌的情况下走同一套代理;更早的 v4.8 构建则把令牌直接 POST 到运营方域名上的专用 set-token 接口,并在 deno.dev 与 deno.net 配置备份节点。
影响评估
Twitch OAuth 会话令牌与播放令牌不同,属账户作用域凭证。持有者可读取与发送私信、在聊天频道发言、消费频道点数,全程无需密码与二次验证。两家商店的「数据安全」声明均声称不收集、不使用也不出售用户数据,实际行为完全未披露。开发者声称 Firefox 版 85.8.7 已修复、Chrome 版仍在审核,但截至披露时两款扩展仍可在商店下载。
修复建议
- 立即在所有浏览器中卸载该扩展。
- 进入 Twitch 账号设置断开全部会话连接,修改密码并重新认证——这一步会作废已被转发的令牌,仅卸载或升级扩展不会撤销历史泄露的令牌。
- 为 Twitch 账号启用 TOTP 二次验证;若通过 Google、Discord、Steam 等身份源联动登录,逐一复核这些平台的 OAuth 授权列表。
- 在 DNS 黑名单与代理出站策略中拦截
jeetbot.cc、deno.dev、deno.net及运营方代理域名。 - 检测:在浏览器历史与代理日志中检索附加于
ttvnw.net或 jeetbot 域名的&auth=参数,回溯定位受影响用户。