live_connect_constraints ausenteDe acordo com a publicação de Ferdiansyah, a implementação de referência para a criação de tokens omitia o campo live_connect_constraints A. Espera-se que este campo contenha um objeto bidi_generate_content_setup que vincula o token a um modelo, instrução de sistema e conjunto de ferramentas específicos.
Quando live_connect_constraints é deixado vazio ou está ausente, nenhuma restrição é aplicada. Um invasor que obtenha o token efêmero pode então enviar um frame de configuração controlado pelo cliente especificando qualquer modelo, prompt de sistema e ferramentas que desejar. O servidor, sem valores vinculados ao token para validar, aceita a configuração do invasor.
Aviso importante: As fontes fornecidas não incluem a documentação oficial do Google para
live_connect_constraints, um CVE ou um comunicado de segurança do Google confirmando esse comportamento. A alegação vem do post no Medium de Ferdiansyah e deve ser tratada como não verificada, mas plausível A.
Se a vulnerabilidade for real, as consequências são significativas para qualquer aplicação que use a API Gemini Live em um contexto de navegador:
Desenvolvedores no fórum do Google AI relataram problemas com tokens efêmeros ignorando instruções do sistema e não funcionando como esperado com endpoints restritos, sugerindo que o ecossistema mais amplo ainda está amadurecendo DD.
A correção descrita por Ferdiansyah é direta: preencher o campo live_connect_constraints.bidi_generate_content_setup durante a criação do token com três valores:
model — O modelo Gemini exato a ser usado (ex.: models/gemini-2.5-flash-native-audio-latest).system_instruction — O prompt de sistema pretendido, estruturado como parts contendo text.tools — Um array vazio [] ou apenas ferramentas explicitamente permitidas, evitando a injeção no lado do cliente.Aqui está o código Python ilustrativo da publicação de Ferdiansyah A:
token = gemini_client.auth_tokens.create({
"uses": 1,
"expire_time": now + timedelta(seconds=60),
"new_session_expire_time": now + timedelta(seconds=60),
"live_connect_constraints": {
"bidi_generate_content_setup": {
"model": "models/gemini-2.5-flash-native-audio-latest",
"system_instruction": {
"parts": [{"text": "Você é um assistente de suporte ao cliente..."}]
},
"tools": []
}
}
})
Nota: Como
live_connect_constraintsnão está documentado na referência oficial da API Google fornecida nas fontes, este exemplo é baseado na própria descrição de Ferdiansyah e deve ser testado com a API real antes do uso em produção A.
Os seguintes pontos-chave permanecem não verificados pelas fontes fornecidas:
live_connect_constraints.BidiGenerateContentConstrained ao receber um token sem restrições não está documentado nas referências oficiais fornecidas DS.Até que o Google publique um comunicado oficial, a abordagem mais segura é tratar a vulnerabilidade como plausível e aplicar a correção proativamente:
live_connect_constraints ou seu campo equivalente.newSessionExpireTime de cerca de 60 segundos para limitar a janela para roubo de token G.A API Gemini Live é uma ferramenta poderosa para construir experiências de voz e vídeo em tempo real. Um único campo ausente no processo de criação de token não deve prejudicar essa capacidade — mas os desenvolvedores devem garantir que suas implementações estejam completas.
Este artigo foi verificado com base em 27 fontes fornecidas, incluindo documentação oficial do Google, discussões em fóruns da comunidade e a publicação original do pesquisador. As principais alegações do pesquisador não puderam ser verificadas de forma independente a partir de fontes oficiais no momento da publicação.