Tiện ích mở rộng Twitch độc hại làm rò rỉ mã thông báo OAuth của gần 31.000 người dùng

Một tiện ích mở rộng trình duyệt Twitch độc hại mang tên "Twitch Enhanced Viewer | JeetBot" đã làm rò rỉ mã thông báo OAuth của gần 31.000 người dùng sang các máy chủ proxy do một dịch vụ bot của Nga vận hành. Tiện ích này thu thập token để cung cấp các tính năng như xem stream 1080p không quảng cáo nhưng lại đe dọa nghiêm trọng đến bảo mật tài khoản.
Twitch Malicious Extension

Một tiện ích mở rộng trình duyệt Twitch độc hại có mặt trên nhiều cửa hàng ứng dụng đã làm rò rỉ mã thông báo OAuth liên quan đến gần 31.000 người dùng tới các máy chủ proxy do một dịch vụ bot thương mại của Nga vận hành.

Tiện ích mở rộng này, có tên là "Twitch Enhanced Viewer | JeetBot," liệt kê HISHIMIRO/jeetbot.cc là nhà phát triển và có các định danh sau trên Google Chrome Web Store và Mozilla Firefox Add-Ons store:

Cả hai tiện ích mở rộng này vẫn có thể tải xuống tính đến thời điểm viết bài. Mô tả danh sách tiện ích ghi rằng: "JeetBot là một công cụ hiện đại dành cho các streamer và người xem coi trọng chất lượng, sự tiện lợi và khả năng kiểm soát," đồng thời bổ sung thêm rằng nó "mở rộng khả năng của Twitch: xem stream 1080p cho các khu vực bị hạn chế."

Cơ chế đánh cắp OAuth Token

"Các bản build hiện tại (v85.x) chuyển tiếp token nội tuyến dưới dạng tham số truy vấn &auth= trong một lần redirect ở tầng mạng (network-layer) tới proxy của nhà vận hành," nhà nghiên cứu bảo mật của Socket, Kush Pandya cho biết. "Token được chuyển tiếp cho mọi kênh mà người dùng xem, ngoại trừ một danh sách cho phép (allowlist) được mã hóa cứng gồm mười kênh streamer người Nga, các phiên làm việc của họ được miễn chuyển tiếp."

"Nhà vận hành này là một dịch vụ SaaS cung cấp bot thương mại cho Twitch, Kick và VK-Live, có quyền hạn host Twitch rộng rãi và chuyển tiếp các phiên làm việc đã xác thực trực tiếp thông qua cơ sở hạ tầng (infrastructure) của chính họ."

Mặc dù tiện ích mở rộng tuyên bố cung cấp trải nghiệm không quảng cáo và phục vụ nội dung không bị khóa vùng, nó thực hiện điều này bằng cách định tuyến các yêu cầu video-playlist của Twitch tới "usher.ttvnw[.]net" thông qua các máy chủ proxy do nhà vận hành kiểm soát, kèm theo mã thông báo OAuth của người dùng dưới dạng tham số truy vấn &auth=.

Cụ thể, add-on này nhúng mã để khôi phục mã thông báo Twitch OAuth và gửi nó đến proxy. Token này có thể cho phép truy cập vào chat, whispers (tin nhắn riêng tư) và cài đặt tài khoản của người dùng.

Security Threat

Do token được đặt trong chuỗi truy vấn URL, nó sẽ được ghi dưới dạng văn bản rõ (cleartext) vào log yêu cầu của máy chủ proxy. Tuy nhiên, cơ chế chuyển hướng token bị loại trừ đối với một danh sách gồm 10 kênh Twitch, hầu hết là các streamer nói tiếng Nga với hàng ngàn người theo dõi:

  • pch3lk1n (580K followers)
  • fasoollka (361K followers)
  • flamie (132K followers)
  • dosia (29 followers)
  • fander (2 followers)
  • almazer (4 followers)
  • forzorezor (177K followers)
  • akyuliych (1.1M followers)
  • lagoda1337 (225K followers)
  • lagoda (77.3K followers)

"Đối với mọi kênh ngoài danh sách này, live token của người dùng sẽ được chuyển tiếp đến proxy," Pandya giải thích. "Các bản build v4.x trước đó thậm chí còn đi xa hơn, thực hiện lệnh POST token tới một endpoint chuyên dụng trên host của nhà vận hành."

Phản hồi từ nhà phát triển

JeetBot tự quảng cáo là một "bot mạnh mẽ cho Twitch, Kick và VK Live với tính năng tổng hợp giọng nói tin nhắn, dịch tự động và nhiều tính năng khác." Trang web xác định nhà vận hành là một nhà phát triển có trụ sở tại Cyprus tên là Aleksandr Popov. Trên hồ sơ LinkedIn, nhà phát triển này tuyên bố JeetBot là một dự án cá nhân (pet project).

Tuy nhiên, có vẻ như nhà phát triển đã thực hiện các bước để giải quyết vấn đề. Một cảnh báo được đưa ra trên trang tài liệu của JeetBot cho biết phiên bản 85.8.7 của add-on Firefox đã khắc phục sự cố và phiên bản Chrome tương đương đang được xem xét:

"Trong lần triển khai trước đó, tiện ích mở rộng đã gửi mã thông báo Twitch OAuth của người dùng đến các máy chủ proxy của chúng tôi để lấy danh sách phát stream. Mã thông báo OAuth là một thông tin xác thực và phải được bảo vệ."

"Phiên bản 85.8.7 thay đổi cách lấy danh sách phát: mã thông báo OAuth của người dùng không còn được gửi đến proxy của chúng tôi nữa."

"Hãy kiểm tra phiên bản tiện ích mở rộng đã cài đặt và cập nhật lên 85.8.7 hoặc mới hơn. Các bản cài đặt cũ sử dụng cơ chế trước đó vẫn tiếp tục gửi token cho đến khi được cập nhật."

Tài liệu cũng kêu gọi người dùng tạm thời vô hiệu hóa tiện ích mở rộng để ngăn chặn việc truyền tải token nếu phiên bản mới chưa có sẵn. Tuy nhiên, nhà phát triển cảnh báo rằng việc vô hiệu hóa hoặc cập nhật tiện ích mở rộng không giúp thu hồi (revoke) các token đã được truyền đi trước đó.

Socket nhấn mạnh: "Mã thông báo phiên làm việc Twitch OAuth là một thông tin xác thực mang (bearer credential): bất kỳ ai nắm giữ nó đều có thể hành động trên tài khoản mà không cần mật khẩu hoặc yếu tố xác thực thứ hai, bao gồm cả việc đọc và gửi tin nhắn riêng tư, đăng bài trong chat và sử dụng điểm kênh."