live_connect_constraintsVolgens Ferdiansyah's blogpost ontbreekt in de referentie-implementatie voor het aanmaken van tokens het veld live_connect_constraints . Dit veld zou een
bidi_generate_content_setup-object moeten bevatten dat het token bindt aan een specifiek model, systeem-instructie en set tools.
Wanneer live_connect_constraints leeg wordt gelaten of afwezig is, worden er geen beperkingen afgedwongen. Een aanvaller die het tijdelijke token bemachtigt, kan vervolgens een client-gestuurd setup-frame sturen met een willekeurig model, systeemprompt en tools. De server, die geen aan het token gebonden waarden heeft om te valideren, accepteert de configuratie van de aanvaller.
Belangrijke kanttekening: De verstrekte bronnen bevatten geen officiële Google-documentatie voor
live_connect_constraints, een CVE of een Google-beveiligingsadvies dat dit gedrag bevestigt. De bewering is afkomstig uit Ferdiansyah's Medium-post en moet worden beschouwd als onbevestigd maar aannemelijk.
Als de kwetsbaarheid echt is, zijn de gevolgen groot voor elke toepassing die de Gemini Live API in een browsercontext gebruikt:
Ontwikkelaars op het Google AI-forum hebben gemeld dat tijdelijke tokens systeem-instructies negeren en niet naar behoren werken met beperkte eindpunten. Dit suggereert dat het bredere ecosysteem nog in ontwikkeling is .
De door Ferdiansyah beschreven oplossing is eenvoudig: vul tijdens het aanmaken van tokens het veld live_connect_constraints.bidi_generate_content_setup
model — Het exacte te gebruiken Gemini-model (bijv. models/gemini-2.5-flash-native-audio-latest).system_instruction — De beoogde systeemprompt, gestructureerd als parts met text.tools — Een lege array [] of alleen expliciet toegestane tools, om injectie aan de clientzijde te voorkomen.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": "Je bent een klantenservicemedewerker..."}]
},
"tools": []
}
}
})Opmerking: Omdat
live_connect_constraintsniet is gedocumenteerd in de officiële Google API-referentie uit de bronnen, is dit voorbeeld gebaseerd op Ferdiansyah's eigen beschrijving en moet het worden getest tegen de daadwerkelijke API voordat het in productie wordt gebruikt.
De volgende belangrijke punten blijven onbevestigd door de verstrekte bronnen:
live_connect_constraints.BidiGenerateContentConstrained-eindpunt bij het ontvangen van een onbeperkt token is niet gedocumenteerd in de verstrekte officiële referenties Totdat Google een officieel advies publiceert, is de veiligste aanpak om de kwetsbaarheid als aannemelijk te beschouwen en de oplossing proactief toe te passen:
live_connect_constraints of een equivalent veld invult.newSessionExpireTime van ongeveer 60 seconden aan om het venster voor token-diefstal te beperken De Gemini Live API is een krachtig hulpmiddel voor het bouwen van realtime spraak- en video-ervaringen. Een enkel ontbrekend veld bij het aanmaken van tokens mag die mogelijkheid niet ondermijnen, maar ontwikkelaars moeten ervoor zorgen dat hun implementaties volledig zijn.
Dit artikel is gecontroleerd aan de hand van 27 verstrekte bronnen, waaronder officiële Google-documentatie, discussies op communityforums en het originele onderzoek van de beveiligingsonderzoeker. Belangrijke beweringen van de onderzoeker konden op het moment van publicatie niet onafhankelijk worden geverifieerd aan de hand van officiële bronnen.