live_connect_constraints mancanteSecondo il rapporto di Ferdiansyah, l'implementazione di riferimento per la creazione del token ometteva il campo live_connect_constraints . Questo campo dovrebbe contenere un oggetto
bidi_generate_content_setup che lega il token a un modello specifico, a un'istruzione di sistema e a un set di strumenti.
Quando live_connect_constraints viene lasciato vuoto o assente, non vengono applicati vincoli. Un attaccante che ottiene il token effimero può quindi inviare un frame di configurazione controllato dal client specificando qualsiasi modello, prompt di sistema e strumenti desideri. Il server, non avendo valori legati al token da convalidare, accetta la configurazione dell'attaccante.
Avvertenza importante: Le fonti fornite non includono la documentazione ufficiale di Google per
live_connect_constraints, un CVE o un avviso di sicurezza di Google che confermi questo comportamento. L'affermazione proviene dal post Medium di Ferdiansyah e deve essere considerata non verificata ma plausibile.
Se la vulnerabilità è reale, le conseguenze sono significative per qualsiasi applicazione che utilizzi la Gemini Live API in un contesto browser:
Gli sviluppatori sul forum di Google AI hanno segnalato problemi con i token effimeri che ignorano le istruzioni di sistema e non funzionano come previsto con gli endpoint vincolati, suggerendo che l'ecosistema più ampio è ancora in fase di maturazione .
La correzione descritta da Ferdiansyah è semplice: popolare il campo live_connect_constraints.bidi_generate_content_setup
model — Il modello Gemini esatto da utilizzare (ad esempio, models/gemini-2.5-flash-native-audio-latest).system_instruction — Il prompt di sistema previsto, strutturato come parts contenente text.tools — Un array vuoto [] o solo gli strumenti esplicitamente consentiti, prevenendo l'iniezione lato client.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": "Sei un assistente del servizio clienti..."}]
},
"tools": []
}
}
})Nota: Poiché
live_connect_constraintsnon è documentato nel riferimento ufficiale dell'API Google fornito dalle fonti, questo esempio si basa sulla descrizione di Ferdiansyah e dovrebbe essere testato rispetto all'API effettiva prima dell'uso in produzione.
I seguenti punti chiave rimangono non verificati dalle fonti fornite:
live_connect_constraints.BidiGenerateContentConstrained quando riceve un token senza vincoli non è documentato nei riferimenti ufficiali forniti Fino a quando Google non pubblicherà un avviso ufficiale, l'approccio più sicuro è trattare la vulnerabilità come plausibile e applicare la correzione in modo proattivo:
live_connect_constraints o il suo campo equivalente.newSessionExpireTime di circa 60 secondi per limitare la finestra per il furto di token La Gemini Live API è uno strumento potente per creare esperienze vocali e video in tempo reale. Un singolo campo mancante nel processo di creazione del token non dovrebbe minare questa capacità, ma gli sviluppatori devono assicurarsi che le loro implementazioni siano complete.
Questo articolo è stato verificato rispetto a 27 fonti fornite, inclusa la documentazione ufficiale di Google, le discussioni del forum della community e il rapporto originale del ricercatore. Le affermazioni chiave del ricercatore non hanno potuto essere verificate in modo indipendente da fonti ufficiali al momento della pubblicazione.