live_connect_constraintsSegún el informe de Ferdiansyah, la implementación de referencia para la acuñación de tokens omitía el campo live_connect_constraints . Se supone que este campo contiene un objeto
bidi_generate_content_setup que vincula el token a un modelo específico, una instrucción del sistema y un conjunto de herramientas.
Cuando live_connect_constraints se deja vacío o ausente, no se aplican restricciones. Un atacante que obtenga el token efímero puede entonces enviar un marco de configuración controlado por el cliente especificando cualquier modelo, prompt del sistema y herramientas que elija. El servidor, al carecer de valores vinculados al token para validar, acepta la configuración del atacante.
Advertencia importante: Las fuentes proporcionadas no incluyen la documentación oficial de Google para
live_connect_constraints, un CVE o un aviso de seguridad de Google que confirme este comportamiento. La afirmación proviene de la publicación de Ferdiansyah en Medium y debe tratarse como no verificada pero plausible.
Si la vulnerabilidad es real, las consecuencias son significativas para cualquier aplicación que utilice la API Gemini Live en un contexto de navegador:
Desarrolladores en el foro de Google AI han informado problemas con tokens efímeros que ignoran las instrucciones del sistema y no funcionan como se espera con endpoints restringidos, lo que sugiere que el ecosistema general aún está madurando .
La remediación descrita por Ferdiansyah es sencilla: poblar el campo live_connect_constraints.bidi_generate_content_setup
model — El modelo exacto de Gemini a utilizar (por ejemplo, models/gemini-2.5-flash-native-audio-latest).system_instruction — El prompt del sistema deseado, estructurado como parts que contienen text.tools — Un array vacío [] o solo las herramientas explícitamente permitidas, evitando la inyección del lado del cliente.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": "Eres un asistente de atención al cliente..."}]
},
"tools": []
}
}
})Nota: Debido a que
live_connect_constraintsno está documentado en la referencia oficial de la API de Google proporcionada en las fuentes, este ejemplo se basa en la propia descripción de Ferdiansyah y debe probarse con la API real antes de usarlo en producción.
Los siguientes puntos clave permanecen sin verificar por las fuentes proporcionadas:
live_connect_constraints.BidiGenerateContentConstrained al recibir un token sin restricciones no está documentado en las referencias oficiales proporcionadas Hasta que Google publique un aviso oficial, el enfoque más seguro es tratar la vulnerabilidad como plausible y aplicar la solución de forma proactiva:
live_connect_constraints o su campo equivalente.newSessionExpireTime de alrededor de 60 segundos para limitar la ventana de robo de tokens La API Gemini Live es una herramienta poderosa para construir experiencias de voz y video en tiempo real. Un solo campo faltante en el proceso de acuñación de tokens no debería socavar esa capacidad, pero los desarrolladores deben asegurarse de que sus implementaciones estén completas.
Este artículo fue verificado con 27 fuentes proporcionadas, incluyendo documentación oficial de Google, discusiones en foros de la comunidad y el informe original del investigador. Las afirmaciones clave del investigador no pudieron ser verificadas de forma independiente a partir de fuentes oficiales en el momento de la publicación.