- L’identifiant interne de compte Google d’une chaîne YouTube, l’obfuscated Gaia ID, pouvait être exposé puis relié à une adresse e-mail via l’API de partage de Pixel Recorder, créant un problème de confidentialité des comptes Google
- Une requête Innertube du menu de blocage du live chat renvoyait un paramètre
moderateLiveChatEndpointcontenant le Gaia ID de la chaîne ciblée, même sans effectuer de blocage réel - En remplaçant l’ID de chaîne dans les paramètres de la requête, la portée s’étendait jusqu’aux Topic Channels sans messages de live chat, montrant que le problème ne concernait pas seulement certains participants
- Le
WriteShareListde Pixel Recorder acceptait l’obfuscated Gaia ID du destinataire du partage et incluait l’adresse e-mail dans la réponse ; un titre d’enregistrement de 2,5 millions de caractères permettait aussi d’empêcher l’envoi d’un e-mail de notification - Après un signalement reçu le 15 septembre 2024, Google a confirmé le correctif des deux failles le 9 février 2025 et a versé un total de 10 633 $ de récompense
Le Gaia ID révélé par la fonction de blocage de YouTube
- Le document discovery de staging de l’API Internal People de Google montrait que l’objet
BlockedTargetutilisait un obfuscated Gaia ID etfallbackNameprofileIdcorrespond à l’obfuscated Gaia ID de l’utilisateur bloquéfallbackNamecorrespond au nom affiché de l’utilisateur bloqué
- Le centre d’aide des comptes Google indiquait qu’il était possible de bloquer des comptes depuis YouTube, et dans les faits, lorsqu’un utilisateur est bloqué dans un live YouTube, il apparaît dans
myaccount.google.com/blocklist - Dans la liste de blocage, le nom de chaîne
Mega Primeapparaissait commefallbackName, et107183641464576740691comme profile ID - En partant du principe qu’une chaîne YouTube ne devrait pas exposer le compte Google sous-jacent, et sachant qu’il avait déjà existé des bugs permettant de convertir un Gaia ID en adresse e-mail, la recherche d’une autre voie a commencé
Extension à l’ensemble des chaînes via le menu du live chat
- Le simple fait d’ouvrir le menu à trois points dans le live chat YouTube déclenchait une requête vers
/youtubei/v1/live_chat/get_item_context_menu - La réponse contenait un
moderateLiveChatEndpointmenant à/youtubei/v1/live_chat/moderateainsi qu’une valeurparams - Ces
paramsétaient un protobuf encodé en base64, format fréquemment utilisé chez Google, et le décodage révélait le Gaia ID de l’utilisateur ciblé pour le blocage- L’exemple de réponse contenait
113907466537670370590ainsi que des identifiants liés à la chaîne - Il était donc possible d’obtenir le Gaia ID de la cible sans effectuer de blocage réel
- L’exemple de réponse contenait
- Le décodage des paramètres de la requête
get_item_context_menumontrait qu’ils contenaient l’ID de chaîne à bloquer, l’ID de la vidéo du live et l’ID de l’auteur du live - En remplaçant l’ID de chaîne dans les paramètres de la requête, les tests ont montré qu’il était aussi possible d’obtenir le Gaia ID
103261974221829892167d’une Topic Channel générée automatiquement par YouTube- Les Topic Channels sont créées automatiquement par YouTube, et le test partait du principe qu’elles n’avaient pas de messages de live chat
Pixel Recorder servait de voie de conversion vers l’e-mail
- En recherchant dans d’anciens produits Google des bugs ou défauts de logique capables de convertir un Gaia ID en e-mail, l’auteur a examiné Pixel Recorder avec nathan
- Après avoir créé un enregistrement de test sur un téléphone Pixel et l’avoir synchronisé avec un compte Google, les endpoints web de
recorder.google.comont été utilisés - Lors du partage de l’enregistrement avec une adresse e-mail de test, la requête
WriteShareListincluait l’obfuscated Gaia ID dans la liste des destinataires - La réponse de
PlaybackService/WriteShareListsurpixelrecorder-pa.clients6.google.comrenvoyait l’adresse e-mail du destinataire du partage- La réponse de test contenait
vrptest2@gmail.com - En y injectant le Gaia ID
107183641464576740691obtenu lors de l’expérience de blocage YouTube, la réponse renvoyait aussiredacted@gmail.com
- La réponse de test contenait
- Cela permettait donc une chaîne d’attaque où le Gaia ID obtenu via YouTube était injecté dans l’API de partage de Pixel Recorder pour découvrir l’adresse e-mail correspondante
Un titre d’enregistrement de 2,5 millions de caractères pour bloquer l’e-mail de notification
- Lorsqu’un enregistrement Pixel Recorder était partagé avec une victime, celle-ci recevait un e-mail de notification, ce qui pouvait réduire l’impact de l’attaque
- La fenêtre de partage ne proposait aucune option pour désactiver cette notification, et l’analyse du protobuf de la requête avec req2proto n’a révélé aucun champ permettant de la désactiver
- La structure
WriteShareListRequestcontenait les champs suivantsrecording_iddelete_obfuscated_gaia_idsupdate_shared_userssharing_message
- Même en ajoutant et supprimant un utilisateur simultanément, l’e-mail continuait d’être envoyé
- En constatant que l’objet de l’e-mail de notification incluait le titre de l’enregistrement, l’auteur a supposé qu’un titre extrêmement long pouvait provoquer l’échec de l’envoi
- Un script Python a donc été écrit pour modifier le titre de l’enregistrement à 2,5 millions de caractères via l’endpoint
UpdateRecordingTitle, et aucun contrôle de longueur côté serveur n’a été observé - Après avoir défini le titre à 2,5 millions de caractères puis partagé l’enregistrement avec un autre utilisateur de test, aucun e-mail de notification n’a été envoyé
PoC finale et calendrier de traitement
- La chaîne d’attaque complète comportait trois étapes
- Obtenir l’obfuscated Gaia ID de la chaîne ciblée depuis l’endpoint Innertube
/get_item_context_menude YouTube - Partager avec la cible un enregistrement Pixel Recorder au titre extrêmement long afin de convertir le Gaia ID en adresse e-mail
- Retirer ensuite cet utilisateur des destinataires du partage de l’enregistrement Pixel Recorder pour effacer les traces
- Obtenir l’obfuscated Gaia ID de la chaîne ciblée depuis l’endpoint Innertube
- Une vidéo de PoC est fournie sur YouTube
Prime Google et calendrier du correctif
- 2024-09-15 : envoi du signalement à l’éditeur
- 2024-09-16 : l’éditeur a trié le rapport et a répondu
Nice catch! - 2024-10-03 : le panel a marqué le dossier comme doublon d’un bug de suivi existant et a appliqué un correctif incomplet à l’exposition initiale de l’obfuscated Gaia ID sur YouTube
- 2024-10-03 : nouvelle explication fournie à l’éditeur sur le fait que Pixel Recorder constituait aussi une vulnérabilité à part entière
- l’obfuscated Gaia ID pouvait aussi être exposé chez les évaluateurs de Google Maps et Google Play
- une méthode de contournement pour divulguer à nouveau l’obfuscated Gaia ID des chaînes YouTube a également été fournie
- 2024-11-05 : le panel a accordé une prime de 3 133 $
- justification : exploitabilité moyenne
- classé comme méthodologie d’abus à fort impact
- 2024-12-03 : l’équipe produit a renvoyé le rapport au panel pour examen d’une prime supplémentaire et a coordonné une date de divulgation au 2025-02-03
- 2024-12-12 : le panel a accordé une prime complémentaire de 7 500 $
- justification : exploitabilité élevée
- classé comme méthodologie d’abus à fort impact
- montant de base réduit d’un niveau en raison de la complexité de la chaîne d’attaque
- 2025-01-29 : l’éditeur a demandé un report de la date de divulgation au 2025-02-02
- 2025-02-09 : confirmation que les deux maillons de la chaîne d’attaque avaient été corrigés
- soit 147 jours après le signalement initial
- 2025-02-12 : publication du rapport
1 commentaires
Avis de Hacker News
Le titre m’a embrouillé. Pour ceux qui n’ont pas lu jusqu’au bout : ce ne sont pas les e-mails divulgués qui ont coûté de l’argent ; cela a demandé du temps et de l’ingéniosité, et l’auteur a reçu une prime de bug bounty de 10 000 dollars
Il y a beaucoup de bruit autour de la divulgation responsable, des motivations et de la récompense, mais on voit peu de gens dire que c’est un argument de plus contre une identité permanente centralisée
Chaque fois qu’un service affirme fonctionner au mieux lorsqu’il est lié à une unique Real Identity™, j’ai l’impression que ces entreprises ne se soucient de protéger réellement les utilisateurs que de manière abstraite, et encore, seulement de temps en temps
Imaginez que toute personne avec qui vous interagissez sur YouTube puisse immédiatement se rapprocher de trois ou quatre étapes d’un doxxing : c’est à peu près l’impact réel de ce bug, à mon avis. Tant mieux qu’il ait été corrigé, mais je ne pense pas que ce genre de bugs disparaisse bientôt. Que faudra-t-il pour que les fournisseurs et les grandes entreprises comprennent que cette conception est un champ de mines sur le point d’exploser ?
Cela dit, beaucoup de gens effectuent de vraies transactions financières avec ces entreprises. Par exemple les abonnés YouTube Premium ou les créateurs de contenu. En pratique, un identifiant lié à l’identité réelle doit être stocké quelque part dans ce compte jetable. À cause du risque de fraude et des réalités bancaires, on finit par transmettre son identité et son adresse réelles à l’entreprise, qui les stocke aussi
Je ne donne pas d’informations permettant de m’identifier à des applis ou sites web quelconques, mais les parties avec lesquelles je fais affaire savent forcément qui je suis dans la vraie vie, et deviennent en théorie un point par lequel ces données peuvent fuiter
Qu’un prestataire de santé divulgue des données médicales, et il se fera complètement démolir
« Voici un POC d’exploit fonctionnel : cette vidéo a été supprimée pour violation des conditions d’utilisation de YouTube », c’est drôle
Comme un commentaire sur trois dans ce fil dit que Google a trop peu payé pour ce bug, voici quelques bases sur la valorisation des vulnérabilités
Les vulnérabilités côté serveur ont une faible valeur parce que les acheteurs ne se font pas concurrence. Il n’existe pratiquement pas de marché gris pour les vulnérabilités côté serveur. Il est difficile pour un tiers de mettre un prix sur un bug que Google peut tuer immédiatement, qui n’a quasiment aucune demi-vie dès sa découverte, et dont l’exploitation génère une télémétrie fiable chez la cible
À l’inverse, si des bugs comme des chaînes complètes Android/Chrome se vendent des centaines de milliers de dollars, c’est parce que Google est en concurrence avec un marché gris bien établi. Un prestataire peut prendre ce bug et le vendre à plusieurs agences d’un pays européen, potentiellement six
Cela dit, comparer les primes et le marché gris, c’est comparer des pommes et des oranges. Google n’a besoin que d’une preuve que l’exploit est possible, pas d’un exploit fiable, et n’a pas non plus de coûts de maintenance ; il paie donc bien moins que le marché gris. La valeur totale du reste du marché se répartit en plusieurs étapes et s’accompagne de conditions de risque, mais Google peut proposer un paiement forfaitaire attractif même avec une décote
Les attaquants achètent des vulnérabilités qui s’intègrent à leurs processus métier existants. En général, ils n’imaginent pas de manière spéculative toutes les choses géniales qu’ils pourraient faire avec une nouvelle vulnérabilité ni comment la monétiser. Collecter des informations de paiement, obtenir des milliers de machines pour un botnet : ce sont des processus métier existants. Révéler le vrai nom lié à un compte Google peut-il devenir un business ? Peut-être. Est-ce que ça existe déjà ? Probablement pas
Le montant des primes n’est généralement pas un référendum populaire sur l’ingéniosité ou l’intérêt d’un bug. Cela dit, ici, c’est un peu le cas aussi : 10 000 dollars pour un bug web côté serveur me semble exceptionnellement élevé
Pour quelqu’un qui gagne sa vie en trouvant ce genre de bugs, la stratégie consiste à devenir très bon pour en trouver beaucoup. Ce n’est pas comme le développement d’exploits iOS, où l’on peut passer des mois sur un seul exploit fiable
Les recherches de vulnérabilités que j’ai faites récemment dans ma carrière étaient plus proches de ça que de beaucoup d’autres travaux, donc je suis assez confiant. Mais il y a sur HN des gens qui font ce type de bug bounty à plein temps ; je serais heureux qu’ils me corrigent
Si l’on appliquait cette analyse à autre chose, le prix plafond d’un nouvel autoradio ou d’un vélo serait d’environ 100 dollars, et le prix de tous les biens soumis au droit d’auteur serait limité au coût de leur transmission sur le réseau
Je pense qu’il est plus utile de diviser le montant payé par Google par le temps consacré à ce travail, plus tout le temps passé sur des tentatives d’exploits ratées depuis la dernière prime
La grande majorité des gens dans ce domaine gagnent probablement moins que le salaire minimum américain rapporté à l’effort fourni, tout en supportant un coût d’opportunité annuel à six chiffres
Ce chiffre montre précisément la valeur que Google accorde à la sécurité des utilisateurs finaux et à la protection de leur vie privée. C’est bien moins que ce qu’ils paient, avec plusieurs ordres de grandeur de plus, d’autres ingénieurs pour voler les données personnelles des mêmes personnes
Pour eux, c’est une source de revenus supplémentaire. Tout comme les ingénieurs logiciel veulent que leur métier soit très bien payé, ils veulent aussi que les bug bounties augmentent. Il est naturel que les travailleurs réclament de meilleurs salaires pour leur métier, et aucune rationalisation ne changera cet instinct
Il existe aussi des incitations distinctes de la valeur sur le marché des attaquants. Une personne violente qui harcèle une personnalité en ligne n’est peut-être pas un client rentable sur ce marché des exploits zero-day, mais si une entreprise peut, par négligence, exposer l’identité de la cible à un harceleur violent, cette vulnérabilité reste une responsabilité et un risque éthique
Personnellement, si l’on verse des sommes énormes à des artistes de performance LeetCode qui produisent des quantités colossales de code avec une attention imparfaite à la sécurité, je pense qu’il faut aussi bien payer les personnes qui aident à trouver et corriger leurs innombrables erreurs avant qu’un drame ne se produise
« Déclassement d’un niveau par rapport au montant de base en raison de la complexité de la chaîne d’attaque requise » : est-ce courant ?
Je n’ai participé qu’à quelques programmes de vulnérabilités, mais la plupart payaient plutôt moins lorsqu’il s’agissait d’une faille absurdement simple mais grave, comme l’adresse e-mail de l’utilisateur exposée dans le source de la page
« Il y a quelque temps, en cherchant une cible de recherche chez Google, je fouillais la documentation discovery de l’Internal People API (Staging) » : est-ce que c’est censé être simplement public ? https://staging-people-pa.sandbox.googleapis.com/$discovery/...
.protointernes. Google ne s’appuie pas sur la sécurité par l’obscurité, mais sur de la vraie cryptographieDe plus, les endpoints discovery sont documentés publiquement[0] et conçus pour les utilisateurs externes. En interne, les gens ne lisent pas les endpoints discovery : ils consultent directement les fichiers
.protovia la recherche de codeD’après mon expérience chez Google, exposer publiquement une API impliquait de se battre avec la bureaucratie pendant des semaines. Ce n’est pas comme un bucket AWS S3 rendu public par accident. L’équipe savait que c’était public, et elle a probablement franchi les obstacles bureaucratiques pour le rendre public
[0]: https://developers.google.com/discovery/v1/getting_started
Si l’on regarde la chronologie de l’article, le signalement a été fait à l’entreprise le 15/09/2024, le 29/01/2025 l’entreprise a demandé une prolongation de la divulgation publique jusqu’au 12/02/2025, le 09/02/2025 il a été confirmé que les deux côtés de l’exploit avaient été corrigés, et la publication a eu lieu le 12/02/2025.
Donc ce n’est pas resté non corrigé pendant 136 jours, et Google n’a-t-il pas demandé une prolongation ? Cela fait 147 jours jusqu’à la correction, 150 jours jusqu’à la publication.
Si l’on compare avec le délai de divulgation avant correction que Google Project Zero impose aux autres entreprises, il est dit : « Ce bug est soumis à un délai de divulgation de 90 jours. Si un correctif est fourni aux utilisateurs avant l’échéance des 90 jours, ce rapport de bug sera publié 30 jours après la mise à disposition du correctif. Sinon, il sera publié à l’échéance. »
« Si le correctif est prévu dans les 14 jours suivant l’expiration du délai, Project Zero peut accorder une prolongation… Cependant, comme la période de grâce de 14 jours chevauche la période de 30 jours d’application du patch, les vulnérabilités corrigées pendant cette période de grâce seront publiées au plus tard le 120e jour à compter du délai initial de 90 jours. »
« Si nous estimons que le correctif ne sera pas prêt dans les 14 jours, nous utilisons le délai initial de 90 jours comme date de publication. Autrement dit, la prolongation de grâce de 14 jours n’est accordée que lorsque le développeur s’engage à déployer un correctif pendant cette période de grâce de 14 jours. »
https://googleprojectzero.blogspot.com/p/vulnerability-discl...
Dire que « ces params ne sont qu’un protobuf encodé en base64, un format d’encodage couramment utilisé dans tout Google », ça donne envie de payer un verre au développeur Google chargé de prendre un joli format de message binaire, de l’encoder en base64 et de le faire rentrer de force dans un blob JSON.
Si vous voulez voir l’avenir, imaginez une botte portant l’inscription « worse is better » sur la semelle, piétinant éternellement le visage d’un ingénieur.
La partie JSON est une conversion automatique.
Le clou du spectacle, c’est d’avoir cassé le système d’e-mail au point que les mails ne soient pas envoyés. Dans une gigantesque entreprise comme Google, qui a créé d’innombrables produits, la sécurité semble presque factice.
Si chaque ligne de code est une vulnérabilité potentielle, avec des millions de lignes, cela devient tout simplement inévitable. À part garder les choses simples, par exemple en supprimant le site recorder, je ne vois pas de solution, mais même ça n’est pas facile.
La plupart des produits logiciels reposent sur une pile logicielle très complexe, et si l’on fait confiance à 100 % à toutes les bibliothèques et à tous les systèmes d’exploitation utilisés, c’est à mon avis le mauvais état d’esprit. Même les processeurs ont eu des bugs comme Meltdown. La sécurité est un combat permanent : on ne sait jamais si l’on a gagné, on apprend seulement parfois quand on a perdu.
[1] https://en.wikipedia.org/wiki/Drake_equation
Moi aussi, j’avais compris le titre comme quelque chose du genre 10 000 dollars de coûts de calcul GPU. Vu qu’il a choisi un vieux produit Google et y a trouvé une faille tout de suite, il doit y avoir encore des dizaines, voire des centaines, de bugs de ce genre.