live_connect_constraintsЗгідно з дописом Фердіансяха, в еталонній реалізації створення токена було пропущено поле live_connect_constraints . Це поле має містити об'єкт
bidi_generate_content_setup, який прив'язує токен до конкретної моделі, системної інструкції та набору інструментів.
Коли live_connect_constraints порожнє або відсутнє, жодних обмежень не застосовується. Зловмисник, який отримав ефемерний токен, може надіслати контрольований клієнтом setup-фрейм, вказавши будь-яку модель, системний промпт та інструменти. Сервер, не маючи прив'язаних до токена значень для перевірки, приймає конфігурацію зловмисника.
Важливе зауваження: Надані джерела не містять офіційної документації Google щодо
live_connect_constraints, CVE або підтвердження цієї поведінки від Google. Заява базується на дописі Фердіансяха в Medium і має вважатися непідтвердженою, але правдоподібною.
Якщо вразливість реальна, наслідки є значними для будь-якого застосунку, який використовує Gemini Live API в браузері:
Розробники на форумі Google AI повідомляли про проблеми з ігноруванням системних інструкцій ефемерними токенами та про некоректну роботу з обмеженими кінцевими точками, що свідчить про те, що екосистема все ще дозріває .
Рішення, описане Фердіансяхом, є простим: заповнити поле live_connect_constraints.bidi_generate_content_setup
model — Точна модель Gemini для використання (наприклад, models/gemini-2.5-flash-native-audio-latest).system_instruction — Цільовий системний промпт, структурований як parts, що містять text.tools — Порожній масив [] або лише явно дозволені інструменти, що запобігає ін'єкції на стороні клієнта.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": "Ви — асистент служби підтримки клієнтів..."}]
},
"tools": []
}
}
})Примітка: Оскільки
live_connect_constraintsне задокументовано в офіційній довідці Google API, цей приклад базується на власному описі Фердіансяха і має бути протестований з реальним API перед використанням у продакшені.
Наступні ключові моменти залишаються неперевіреними на основі наданих джерел:
live_connect_constraints.BidiGenerateContentConstrained при отриманні необмеженого токена не задокументована в наданих офіційних матеріалах Поки Google не опублікує офіційне повідомлення, найбезпечніший підхід — вважати вразливість правдоподібною та застосувати виправлення проактивно:
live_connect_constraints або його еквівалентне поле.newSessionExpireTime близько 60 секунд, щоб обмежити вікно для викрадення токена Gemini Live API — це потужний інструмент для створення голосових та відео-додатків у реальному часі. Одне пропущене поле в процесі створення токена не повинно підривати цю можливість, але розробники повинні переконатися, що їхні реалізації є повними.
Цю статтю було перевірено за 27 наданими джерелами, включаючи офіційну документацію Google, обговорення на форумах спільноти та оригінальний допис дослідника. Ключові твердження дослідника на момент публікації не вдалося незалежно підтвердити з офіційних джерел.