veilletech.fr
15 sept. Feed du jour
#02 OAUTH Faille

Une extension Twitch fuitait 31 000 jetons

Un jeton dans une URL, c'est un mot de passe écrit sur une carte postale.

L'extension « Twitch Enhanced Viewer | JeetBot », publiée sur Chrome et Firefox, transmettait le jeton OAuth Twitch de ses utilisateurs aux proxys de son éditeur sous forme de paramètre d'URL — donc en clair dans les journaux. Socket recense près de 31 000 utilisateurs concernés. La version corrigée 85.8.7 est parue côté Firefox, mais elle ne révoque pas les jetons déjà transmis : seule une déconnexion de toutes les sessions Twitch le fait.

3 min de lecturedébutantvidéo 1:12
Partager
Sommaire4 sections
  1. Ce qui se passe
  2. Le détail qui transforme une fonctionnalité en fuite
  3. Ce qu'il faut faire, et dans cet ordre
  4. À retenir

Ce qui se passe

Le chercheur Kush Pandya, de Socket, a analysé « Twitch Enhanced Viewer | JeetBot », une extension de navigateur présente sur les deux magasins :

Magasin Identifiant Utilisateurs Publiée le
Chrome Web Store pnhhdhhcadcjfckjhpmjneldiegbojfb 30 000 26 juin 2025
Firefox Add-ons twitchenhancedviewer@example.com 604 7 juillet 2025

L'extension promet une lecture sans publicité et du 1080p « pour les régions soumises à des contraintes ». Elle y parvient en faisant transiter les requêtes de playlist vidéo vers usher.ttvnw[.]net par des proxys contrôlés par l'éditeur — en y accrochant le jeton OAuth Twitch de l'utilisateur, dans un paramètre &auth= de l'URL.

Le détail qui transforme une fonctionnalité en fuite

Un jeton placé dans une chaîne de requête est écrit en clair dans les journaux d'accès du serveur qui reçoit la requête. Ici, l'opérateur est un service commercial de bots pour Twitch, Kick et VK Live, qui relaie donc des sessions authentifiées vivantes à travers sa propre infrastructure.

Ce que ce jeton ouvre : le chat, les whispers (messages privés) et les paramètres du compte.

Les versions antérieures allaient plus loin encore : les builds v4.x — par exemple la 4.8 de janvier 2026 — envoyaient le jeton par POST vers un point d'entrée set-token dédié, avec des relais sur deno.dev et deno.net.

Socket relève aussi que dix chaînes russophones codées en dur échappaient à la redirection. L'éditeur, Aleksandr Popov, explique qu'il s'agissait d'un contournement de lecture pour l'erreur #3 de Twitch (« proxy ou débloqueur détecté »), et que la liste est devenue modifiable par l'utilisateur depuis la version 85.8.4.

Ce qu'il faut faire, et dans cet ordre

L'éditeur a publié un correctif — version 85.8.7 — qui cesse d'envoyer le jeton aux proxys. Il est disponible côté Firefox ; la version Chrome attend encore la validation du magasin. Mais sa propre documentation est explicite sur le point essentiel :

Désactiver ou mettre à jour l'extension ne révoque pas les jetons déjà transmis.

  1. Mettre à jour en 85.8.7 ou plus récent, ou désactiver l'extension en attendant qu'elle soit disponible ;
  2. surtout, aller dans les paramètres Twitch, section sécurité et confidentialité, et déconnecter tous les appareils — c'est la seule action qui invalide un jeton déjà parti.

À retenir

Pour qui publie une extension, la leçon tient en une règle : un identifiant ne voyage jamais dans une URL. Ni en paramètre, ni « juste pour un proxy », ni « temporairement ». Une redirection réseau est un point de journalisation, et un jeton journalisé est un jeton compromis, même sans intention malveillante de celui qui le reçoit.

Popov conteste d'ailleurs le qualificatif de malveillant et affirme que la description et la politique de confidentialité n'avaient pas suivi l'implémentation. Du point de vue de l'utilisateur, la distinction ne change rien : le jeton est parti.