Image d’illustration générée par IA
Une extension Twitch malveillante a exposé les jetons OAuth de près de 31 000 utilisateurs
L’extension Twitch Enhanced Viewer redirigeait les playlists vers un proxy JeetBot en exposant les jetons OAuth de 31 000 utilisateurs Chrome et Firefox.
Texte généré par intelligence artificielle, publié sans relecture humaine. Transparence IA
Les versions proposées sur Chrome et Firefox distribuaient l’extension
Une extension de navigateur promettant une expérience Twitch améliorée transmettait les jetons de session OAuth des utilisateurs à une infrastructure proxy associée à JeetBot, un service de bots commercial opérant sur Twitch, Kick et VK Live.
L’extension, baptisée « Twitch Enhanced Viewer | JeetBot », était distribuée à la fois sur le Google Chrome Web Store et sur Mozilla Firefox Add-ons. Son développeur est indiqué comme étant HISHIMIRO/jeetbot.cc.
La version Chrome utilise l’identifiant pnhhdhhcadcjfckjhpmjneldiegbojfb. Publiée le 26 juin 2025, elle comptait environ 30 000 utilisateurs. Le module Firefox, identifié par [email protected], a été publié le 7 juillet 2025 et comptait 604 utilisateurs.
Au total, les deux versions exposaient près de 31 000 personnes. Les deux extensions étaient encore disponibles au téléchargement lors de la publication des résultats de l’analyse de sécurité, ce qui signifie qu’il était toujours possible de les installer à ce moment-là.
Les descriptions affichées dans les boutiques mettaient en avant des fonctionnalités telles que le visionnage sans publicité, l’accès à des contenus soumis à des restrictions géographiques et la prise en charge des flux en 1080p lorsque cette qualité n’était pas disponible autrement. Elles ne précisaient pas que le trafic Twitch authentifié transiterait par une infrastructure contrôlée par l’opérateur de l’extension.
L’interception des playlists exposait les identifiants bearer actifs
L’extension fonctionne en interceptant les requêtes de playlist vidéo Twitch envoyées à usher.ttvnw[.]net. Au lieu de laisser ces requêtes parvenir directement à l’infrastructure de diffusion de Twitch, elle les redirige vers des serveurs proxy externes.
Cette architecture crée à elle seule une dépendance importante envers un tiers. Dans les versions v85.x actuelles, l’extension extrait en outre le jeton OAuth Twitch du spectateur et l’ajoute à l’URL redirigée au moyen du paramètre de requête &auth=.
Le jeton est donc transmis au proxy chaque fois que l’utilisateur regarde une chaîne concernée par la logique de redirection. Comme l’identifiant est intégré à l’URL, les journaux classiques des requêtes proxy peuvent l’enregistrer en clair.
Le problème ne se limite pas à l’installation ou à l’authentification initiale. Une installation concernée peut transmettre le jeton actif à plusieurs reprises lorsque l’utilisateur ouvre des flux Twitch éligibles. La mise à jour ou la désactivation de l’extension interrompt les redirections futures, mais ne permet pas de récupérer les identifiants déjà enregistrés dans des journaux distants ou d’autres systèmes backend.
Les versions v4.x antérieures utilisaient un autre mécanisme de collecte. La version 4.8, qui daterait de janvier 2026, envoyait le jeton dans une requête HTTP POST vers un point de terminaison set-token hébergé par l’opérateur. Elle incluait également une infrastructure de secours sur deno.dev et deno.net.
Le chercheur en sécurité Kush Pandya, de Socket, a documenté la gestion des jetons et les exclusions sélectives de chaînes.
Dix chaînes étaient exclues de la transmission des jetons
Le code des versions v85.x contient des exceptions pour dix chaînes Twitch précises. Les utilisateurs qui regardaient ces chaînes ne voyaient pas leurs jetons transiter par le même chemin proxy :
pch3lk1n— 580 000 abonnésfasoollka— 361 000 abonnésflamie— 132 000 abonnésdosia— 29 abonnésfander— 2 abonnésalmazer— 4 abonnésforzorezor— 177 000 abonnésakyuliych— 1,1 million d’abonnéslagoda1337— 225 000 abonnéslagoda— 77 300 abonnés
La plupart sont des streamers russophones. La raison pour laquelle ces chaînes bénéficiaient de cette protection n’a pas été établie, et la liste va de comptes ne comptant que quelques abonnés à un autre qui en compte plus d’un million.
Pour toutes les autres chaînes, l’extension faisait transiter la requête de playlist authentifiée du spectateur par le proxy et y incluait l’identifiant OAuth. Ces exceptions codées en dur montrent que la transmission des jetons était sélective et contrôlée dans le code, et non une conséquence inévitable de la récupération des playlists Twitch.
Un jeton volé peut donner accès au compte sans mot de passe
La valeur exposée est un identifiant bearer associé à une session Twitch authentifiée. Elle est donc nettement plus sensible qu’un identifiant d’appareil, qu’une préférence de navigateur ou qu’une simple donnée de télémétrie.
Toute personne possédant un jeton valide peut être en mesure d’agir via le compte associé sans saisir son mot de passe ni répondre à un défi d’authentification supplémentaire. Les actions possibles dépendent précisément de la session et des autorisations associées au jeton.
Les conséquences potentielles comprennent notamment :
- Lire ou envoyer des whispers Twitch, y compris des conversations privées
- Publier des messages sous l’identité de la victime
- Accéder aux paramètres du compte
- Dépenser les points de chaîne accumulés
- Effectuer d’autres opérations autorisées pour la session active
Un jeton valide n’a pas besoin de révéler le mot de passe sous-jacent pour être exploitable. Il représente un état déjà authentifié ; c’est pourquoi modifier ou protéger le mot de passe ne suffit pas nécessairement à neutraliser une session exposée.
Le modèle de transmission répétée accroît le risque. Même si une copie enregistrée expire, l’utilisation continue d’une extension non corrigée peut transmettre un nouveau jeton actif lorsque le spectateur regarde une autre chaîne.
Aucun cas public confirmé d’utilisation des identifiants collectés pour détourner des comptes Twitch n’a été signalé. Toutefois, la capacité à collecter près de 31 000 sessions authentifiées, combinée à la possibilité de journaux proxy en clair, ouvre une voie directe vers l’exploitation des comptes.
L’infrastructure est liée au service JeetBot
Les systèmes proxy sont associés à JeetBot, qui commercialise des fonctionnalités d’automatisation et d’interaction avec le public pour Twitch, Kick et VK Live. Parmi les fonctions proposées figurent la synthèse vocale des messages, la traduction automatique et d’autres outils d’interaction avec les spectateurs.
JeetBot revendique plus de 26 000 streamers actifs et un milliard de messages traités. Le service disposerait de larges autorisations d’hébergement sur Twitch et relaierait les sessions live authentifiées via sa propre infrastructure.
Le pied de page du site du service cite Aleksandr Popov, un développeur basé à Chypre, comme opérateur. Le profil LinkedIn de Popov présente JeetBot comme un projet personnel.
Ces éléments identifient le service associé à l’infrastructure, mais aucun commentaire supplémentaire du développeur n’était disponible dans les résultats publiés. La durée de conservation des journaux proxy, le nombre de jetons encore valides et l’éventuel accès de tiers aux identifiants collectés restent inconnus.
Les utilisateurs de Firefox peuvent effectuer la mise à jour, tandis que ceux de Chrome doivent désactiver l’extension
La documentation de JeetBot indique désormais que la version 85.8.7 de Firefox modifie le processus de récupération des playlists afin que les jetons OAuth Twitch ne soient plus envoyés à ses serveurs proxy. Les utilisateurs de Firefox doivent vérifier qu’ils disposent de la version 85.8.7 ou d’une version ultérieure.
La version Chrome corrigée correspondante était encore en cours d’examen au moment du signalement du problème. Les utilisateurs de Chrome qui ne peuvent pas obtenir une version corrigée doivent immédiatement désactiver ou supprimer l’extension. Les installations existantes continuent de transmettre les identifiants jusqu’à leur mise à jour ou leur désactivation.
Les utilisateurs doivent rechercher les identifiants d’extension suivants :
- Chrome :
pnhhdhhcadcjfckjhpmjneldiegbojfb - Firefox :
[email protected]
L’installation de la version corrigée n’invalide pas les jetons déjà transmis. Toute personne ayant utilisé l’extension doit considérer la session Twitch associée comme potentiellement compromise et révoquer ou renouveler les autorisations Twitch concernées via les contrôles de sécurité disponibles dans le compte.
Les utilisateurs doivent également vérifier leurs comptes afin de repérer d’éventuels messages publics ou privés inhabituels, des modifications des paramètres ou des opérations liées aux points de chaîne. Toute action authentifiée inexpliquée peut indiquer une utilisation abusive, même si l’absence d’activité visible ne prouve pas qu’aucun jeton n’a été collecté.
Les priorités immédiates sont claires : empêcher l’extension de transmettre d’autres données, installer une version corrigée lorsqu’elle est disponible et invalider les sessions Twitch précédemment exposées.
Sources
Cet article est une réécriture originale fondée sur les sources ci-dessous.
