Recompensa de US$ 10.000 por vulnerabilidade que expôs e-mails de usuários do YouTube
(brutecat.com)- O identificador interno da conta Google de canais do YouTube, o obfuscated Gaia ID, podia ser exposto e vinculado a um endereço de e-mail pela API de compartilhamento do Pixel Recorder, criando um problema de privacidade para contas Google
- A requisição Innertube do menu de bloqueio no chat ao vivo retornava o parâmetro
moderateLiveChatEndpointcontendo o Gaia ID do canal alvo, mesmo sem realizar o bloqueio de fato - Ao trocar o ID do canal nos parâmetros da requisição, o alvo podia ser ampliado até mesmo para Topic Channels sem mensagens no chat ao vivo, mostrando que o problema não se limitava a participantes específicos
- O
WriteShareListdo Pixel Recorder recebia o obfuscated Gaia ID do destinatário do compartilhamento e incluía o endereço de e-mail na resposta; também era possível impedir o envio do e-mail de notificação usando um título de gravação com 2,5 milhões de caracteres - Após receber o relato em 15 de setembro de 2024, o Google confirmou em 9 de fevereiro de 2025 a correção das duas vulnerabilidades e pagou uma recompensa total de US$ 10.633
Gaia ID exposto pelo recurso de bloqueio do YouTube
- A documentação discovery de staging da Internal People API do Google confirmou que o objeto
BlockedTargetusa obfuscated Gaia ID efallbackNameprofileIdé o obfuscated Gaia ID do usuário bloqueadofallbackNameé o nome de exibição do usuário bloqueado
- A ajuda da Conta Google informava que é possível bloquear contas no YouTube, e na prática, ao bloquear um usuário em uma live do YouTube, esse usuário aparece em
myaccount.google.com/blocklist - Na lista de bloqueio, o nome do canal
Mega Primeaparecia comofallbackName, e107183641464576740691era mostrado como profile ID - Partindo da premissa de que um canal do YouTube não deveria expor a conta Google subjacente, e como já houve bugs no passado que convertiam Gaia IDs em endereços de e-mail, começou-se a buscar um caminho adicional
Expansão do menu do chat ao vivo para todos os canais
- Só de abrir o menu de três pontos no chat ao vivo do YouTube já era disparada uma requisição para
/youtubei/v1/live_chat/get_item_context_menu - A resposta incluía
moderateLiveChatEndpointe o valorparams, que levavam a/youtubei/v1/live_chat/moderate - Esses
paramseram um protobuf codificado em base64, comum em serviços do Google, e ao decodificá-los, continham o Gaia ID do usuário a ser bloqueado- A resposta de exemplo incluía
113907466537670370590e identificadores relacionados ao canal - Era possível obter o Gaia ID do alvo sem realizar o bloqueio de fato
- A resposta de exemplo incluía
- Ao decodificar os parâmetros da requisição
get_item_context_menu, encontravam-se o channel ID do canal a ser bloqueado, o ID do vídeo da live e o ID do autor da live - Ao testar a troca do channel ID nos parâmetros da requisição por outros valores, também foi possível obter o Gaia ID
103261974221829892167do Topic Channel gerado automaticamente pelo YouTube- Topic Channels são gerados automaticamente pelo YouTube, e o teste partiu do pressuposto de que eles não possuem mensagens em chat ao vivo
Pixel Recorder virou caminho para conversão em e-mail
- Ao procurar bugs ou falhas lógicas em produtos antigos do Google que permitissem converter Gaia IDs em e-mails, o pesquisador investigou o Pixel Recorder junto com nathan
- Após criar uma gravação de teste em um telefone Pixel e sincronizá-la com a conta Google, foram usados os endpoints web de
recorder.google.com - Ao compartilhar a gravação com um e-mail de teste, a requisição
WriteShareListincluía o obfuscated Gaia ID na lista de destinatários do compartilhamento - A resposta de
PlaybackService/WriteShareListempixelrecorder-pa.clients6.google.comretornava o endereço de e-mail do destinatário do compartilhamento- A resposta de teste incluía
vrptest2@gmail.com - Ao inserir o Gaia ID
107183641464576740691obtido no experimento de bloqueio do YouTube, também era retornadoredacted@gmail.com
- A resposta de teste incluía
- Isso permitia montar uma cadeia de ataque na qual o Gaia ID obtido no YouTube era enviado para a API de compartilhamento do Pixel Recorder para descobrir o endereço de e-mail
Título de gravação com 2,5 milhões de caracteres bloqueou o e-mail de notificação
- Ao compartilhar uma gravação do Pixel Recorder com a vítima, era enviado um e-mail de notificação para ela, o que poderia reduzir o impacto do ataque
- O pop-up de compartilhamento não tinha opção para desativar notificações, e mesmo ao analisar o protobuf da requisição com req2proto, não foi encontrado nenhum campo para desabilitar o envio
- A estrutura
WriteShareListRequesttinha os seguintes camposrecording_iddelete_obfuscated_gaia_idsupdate_shared_userssharing_message
- Mesmo ao adicionar e remover usuários ao mesmo tempo, o e-mail continuava sendo enviado
- Aproveitando o fato de que o título da gravação era incluído no assunto do e-mail de notificação, concluiu-se que tornar o título extremamente longo poderia fazer o envio falhar
- Foi criado e testado um script Python que alterava o título da gravação para 2,5 milhões de caracteres pelo endpoint
UpdateRecordingTitle, e não havia limite de tamanho no lado do servidor - Depois de definir o título com 2,5 milhões de caracteres, ao compartilhar com outro usuário de teste, o e-mail de notificação não foi enviado
PoC final e cronograma de tratamento
- A cadeia de ataque completa era composta de três etapas
- Obter o obfuscated Gaia ID do canal alvo pelo endpoint Innertube
/get_item_context_menudo YouTube - Compartilhar com o alvo uma gravação do Pixel Recorder com título extremamente longo para converter o Gaia ID em endereço de e-mail
- Remover esse usuário da lista de compartilhamento da gravação do Pixel Recorder para limpar os rastros
- Obter o obfuscated Gaia ID do canal alvo pelo endpoint Innertube
- O vídeo PoC foi disponibilizado em um vídeo no YouTube
Recompensa do Google e cronograma da correção
- 2024-09-15: relato enviado ao fornecedor
- 2024-09-16: o fornecedor fez a triagem do relatório e respondeu
Nice catch! - 2024-10-03: o painel marcou o caso como duplicado de um bug já rastreado e aplicou uma correção incompleta para a exposição inicial do obfuscated Gaia ID no YouTube
- 2024-10-03: foi explicado novamente ao fornecedor que o próprio Pixel Recorder também era vulnerável
- O obfuscated Gaia ID também podia ser exposto em avaliadores do Google Maps e do Google Play
- Também foi fornecido um método alternativo para voltar a vazar o obfuscated Gaia ID de canais do YouTube
- 2024-11-05: o painel pagou US$ 3.133 de recompensa
- Justificativa: explorabilidade média
- Classificação: metodologia de abuso de alto impacto
- 2024-12-03: a equipe do produto reenviou o relatório ao painel para revisar uma recompensa adicional e coordenou a data de divulgação para 2025-02-03
- 2024-12-12: o painel pagou US$ 7.500 adicionais
- Justificativa: alta explorabilidade
- Classificação: metodologia de abuso de alto impacto
- Houve redução de um nível no valor-base devido à complexidade da cadeia de ataque
- 2025-01-29: o fornecedor pediu prorrogação da divulgação para 2025-02-02
- 2025-02-09: foi confirmado que as duas partes da cadeia de ataque haviam sido corrigidas
- Momento ocorrido 147 dias após o relato inicial
- 2025-02-12: relatório publicado
1 comentários
Opiniões no Hacker News
O título me confundiu. Para quem não leu até o fim: não é que os e-mails vazados tenham gerado um custo; a pessoa investiu tempo e esperteza e recebeu uma bug bounty de US$ 10 mil
Há muito ruído sobre divulgação responsável, motivação e recompensa, mas quase não vejo gente dizendo que este é mais um argumento contra uma identidade permanente centralizada
Toda vez que um serviço afirma que funciona melhor quando está vinculado a uma única Real Identity™, fico com a impressão de que as empresas só se importam em proteger os usuários de forma abstrata — e mesmo assim só às vezes
Imagine que qualquer pessoa com quem você interaja no YouTube possa ficar imediatamente três ou quatro passos mais perto de doxxar você; para mim, esse é o impacto real deste bug. Ainda bem que foi corrigido, mas não parece que esse tipo de bug vá desaparecer tão cedo. O que será necessário para que empresas e grandes corporações percebam que esse design é um campo minado prestes a explodir?
Mas muita gente transaciona com essas empresas usando dinheiro de verdade. Por exemplo, assinantes do YouTube Premium ou criadores de conteúdo. Na prática, em algum lugar dessa conta descartável precisam ficar armazenados identificadores da identidade real. Por causa do risco de fraude e da realidade do sistema bancário, você acaba entregando sua identidade e endereço reais à empresa, e ela também os armazena
Não forneço informações que me identifiquem a apps ou sites aleatórios, mas quem faz negócios comigo inevitavelmente sabe quem eu sou no mundo real e, em tese, vira um ponto por onde esses dados podem vazar
Se um prestador de serviços de saúde vazasse dados médicos, seria completamente destruído
“POC funcional do exploit: este vídeo foi removido por violar os Termos de Serviço do YouTube” — isso é engraçado
Como a cada três comentários nesta thread alguém diz que o Google pagou pouco demais por esse bug, segue uma conversa básica sobre avaliação do valor de vulnerabilidades:
Vulnerabilidades do lado do servidor têm valor baixo porque as empresas não competem por elas. Na prática, não existe um mercado cinza para vulnerabilidades do lado do servidor. É difícil um terceiro precificar um bug que o Google pode matar imediatamente, que praticamente não tem meia-vida a partir do momento em que é descoberto e que, se explorado, gera telemetria confiável no alvo.
Em contrapartida, bugs como uma cadeia completa para Android/Chrome são vendidos por centenas de milhares de dólares porque o Google compete com um mercado cinza bem estabelecido. Um fornecedor pode pegar esse bug e vendê-lo para vários órgãos de um país europeu, potencialmente seis.
Ainda assim, comparar bounties com o mercado cinza é comparar maçãs com laranjas. O Google precisa apenas de uma prova de que é possível escrever o exploit, não de um exploit altamente confiável, e não precisa arcar com custos de manutenção, então paga muito menos que o mercado cinza. O valor total do restante do mercado é dividido em várias etapas e vem com condições de risco, mas o Google pode oferecer um pagamento único atraente, mesmo com desconto.
Atacantes compram vulnerabilidades que se encaixam em seus processos de negócio existentes. Em geral, eles não ficam imaginando especulativamente coisas legais que poderiam fazer com alguma nova vulnerabilidade e como ganhar dinheiro com isso. Coletar informações de pagamento e obter milhares de máquinas para uma botnet são processos de negócio existentes. Expor o nome real de uma conta do Google poderia virar um negócio? Talvez. Já existe? Provavelmente não.
O valor pago em bounties normalmente não é um plebiscito sobre quão engenhoso ou interessante é o bug. Embora aqui isso seja um pouco verdade também: US$ 10 mil por um bug web do lado do servidor parece excepcionalmente alto.
Para quem ganha a vida encontrando bugs desse tipo, a estratégia de negócio é ficar bom em encontrar muitos deles. É diferente do desenvolvimento de exploits para iOS, em que se passam meses em um único exploit confiável.
A pesquisa de vulnerabilidades que fiz recentemente na minha carreira é mais próxima disso do que de muitas outras coisas, então estou bem confiante. Ainda assim, há gente no HN que trabalha em tempo integral com esse tipo de bounty, então ficaria feliz se alguém assim me corrigisse.
Se essa análise fosse aplicada a outras coisas, o teto de preço de um som automotivo novo ou de uma bicicleta seria de cerca de 100 dólares, e o preço de todos os bens protegidos por copyright ficaria limitado ao custo de transmiti-los pela rede.
Acho mais útil dividir o valor pago pelo Google pelo tempo gasto nesse trabalho e por todo o tempo gasto em tentativas de exploit que falharam desde o último bounty.
A maior parte das pessoas nessa área provavelmente ganha menos do que o salário mínimo dos EUA em relação ao esforço, além de arcar com um custo de oportunidade anual de seis dígitos.
Esse número mostra exatamente o quanto o Google valoriza a segurança e a privacidade dos usuários finais. É um número muito menor do que o que ele paga, várias ordens de magnitude acima, a outros engenheiros para roubar as informações pessoais dessas mesmas pessoas.
Para elas, isso é uma fonte extra de renda. Assim como engenheiros de software querem que a engenharia de software seja uma profissão bem remunerada, também querem que bug bounties paguem mais. É natural que trabalhadores peçam salários maiores para sua profissão, e nenhuma racionalização muda esse instinto.
Também há incentivos separados do valor de mercado para atacantes. Uma pessoa violenta que faz stalking de uma celebridade online talvez não seja um cliente lucrativo no mercado de exploits zero-day, mas, se uma empresa pode expor por descuido a identidade do alvo a um stalker violento, essa vulnerabilidade ainda é uma responsabilidade e um risco ético.
Pessoalmente, se estão pagando quantias enormes a artistas performáticos de LeetCode que produzem volumes imensos de código prestando atenção imperfeita à segurança, acho que também deveriam pagar bem às pessoas que ajudam a encontrar e corrigir os inúmeros erros deles antes que algo ruim aconteça.
Diz que houve “rebaixamento de 1 nível em relação ao valor base devido à complexidade da cadeia de ataque necessária”; isso é comum?
Só participei de alguns programas de vulnerabilidades, mas na maioria deles uma falha ridiculamente simples, porém grave, como expor o e-mail do usuário no código-fonte da página, na verdade recebia menos.
“Há algum tempo, enquanto procurava alvos de pesquisa no Google, eu estava fuçando a documentação de discovery da Internal People API (Staging)”; isso pode simplesmente ficar público assim?: https://staging-people-pa.sandbox.googleapis.com/$discovery/...
.proto. O Google depende de criptografia de verdade, não de segurança por obscuridade.Além disso, o endpoint de discovery é documentado publicamente[0] e foi criado para usuários externos. Pessoas internas não leem o endpoint de discovery; elas veem diretamente os arquivos
.protopela busca de código.Pela minha experiência trabalhando no Google, para expor uma API publicamente era preciso lutar contra a burocracia por semanas. Não é como um bucket AWS S3 que ficou público por acidente. A equipe sabia que isso era público e provavelmente atravessou a burocracia para publicá-lo.
[0]: https://developers.google.com/discovery/v1/getting_started
Pela linha do tempo do texto, o autor reportou à empresa em 2024-09-15; em 2025-01-29, a empresa pediu para estender a divulgação até 2025-02-12; em 2025-02-09, foi confirmado que ambos os lados do exploit haviam sido corrigidos; e em 2025-02-12 ele divulgou
Então a falha ficou 136 dias sem correção e não foi o Google que pediu a extensão? Foram 147 dias até a correção e 150 dias até a divulgação
Comparando com o prazo de divulgação antes da correção que o Google Project Zero dá a outras empresas, eles dizem: “Este bug está sujeito a um prazo de divulgação de 90 dias. Se uma correção for disponibilizada aos usuários antes do prazo de 90 dias, este relatório de bug será divulgado 30 dias depois da disponibilização da correção. Caso contrário, será divulgado no prazo”
“Se houver expectativa de que um patch saia em até 14 dias após o fim do prazo, o Project Zero poderá conceder uma extensão… porém o período de carência de 14 dias se sobrepõe ao período de 30 dias para aplicação do patch, portanto vulnerabilidades corrigidas dentro do período de carência também serão divulgadas, no máximo, no 120º dia a partir do prazo original de 90 dias”
“Se determinarmos que a correção não ficará pronta em até 14 dias, usamos o prazo original de 90 dias como data de divulgação. Ou seja, só concedemos a extensão de 14 dias quando o desenvolvedor se compromete a distribuir a correção dentro do período de carência de 14 dias”
https://googleprojectzero.blogspot.com/p/vulnerability-discl...
“Esses params são apenas protobuf codificado em base64, um formato de codificação bastante usado em todo o Google”: alguém precisa pagar uma bebida para o desenvolvedor do Google responsável por pegar um formato binário elegante de mensagens, codificá-lo em base64 e enfiá-lo à força dentro de um bloco de JSON
Se você quer ver o futuro, imagine uma bota com “worse is better” gravado na sola pisoteando o rosto de um engenheiro para sempre
A parte de JSON é uma conversão automática
A cereja do bolo foi terem quebrado o sistema de e-mail de modo que os e-mails não fossem enviados. Em uma empresa gigante como o Google, que criou inúmeros produtos, segurança parece algo de faz de conta
Se cada linha de código é uma vulnerabilidade em potencial, em milhões de linhas isso vira simplesmente inevitável. Parece não haver saída além de manter tudo simples, por exemplo aposentando o site do Recorder, mas mesmo assim não é fácil
A maioria dos produtos de software depende de stacks de software muito complexos, e acho uma mentalidade equivocada confiar 100% em todas as bibliotecas e sistemas operacionais usados. Até processadores tiveram bugs como o Meltdown. Segurança é uma luta contínua; você nunca sabe se venceu, só fica sabendo às vezes quando perdeu
[1] https://en.wikipedia.org/wiki/Drake_equation
Eu também entendi o título errado, como se significasse algo tipo US$ 10 mil em custo de computação de GPU. Pelo fato de ele ter escolhido um produto antigo do Google e encontrado uma brecha logo de cara, parece que deve haver dezenas ou centenas de outros bugs desses