bidi_generate_content_setup如果 live_connect_constraints 为空或缺席,则不会强制任何约束。攻击者一旦获取了该临时令牌,就可以发送一个由客户端控制的设置帧(setup frame),自行指定任意模型、系统提示和工具。由于服务器没有令牌中绑定的值可供校验,便会直接接受攻击者的配置。
重要提示: 所提供的信息来源中未包含 Google 关于
live_connect_constraints的官方文档、CVE 编号或 Google 安全公告。此指控来自 Ferdiansyah 的 Medium 文章,应视为尚未经官方证实但逻辑上合理的说法。
如果该漏洞确实存在,对于任何在浏览器环境中使用 Gemini Live API 的应用而言,后果都相当严重:
Ferdiansyah 提出的修复方案非常直接:在铸造令牌时填入 live_connect_constraints.bidi_generate_content_setup
model —— 要使用的具体 Gemini 模型(例如 models/gemini-2.5-flash-native-audio-latest)。system_instruction —— 预期的系统提示,按包含 text 的 parts 结构来组织。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 参考文档,此示例仅基于 Ferdiansyah 的描述。在实际投入生产环境前,应先在真实 API 上进行测试。
根据现有来源,以下关键点仍无法得到验证:
在 Google 发布官方公告之前,最安全的做法是视该漏洞为合理风险,并主动应用修复:
Gemini Live API 是构建实时语音和视频体验的强大工具。令牌铸造过程中一个字段的缺失不应损害这一能力——但开发者必须确保其实现是完整的。
本文基于 27 个来源进行了事实核查,包括 Google 官方文档、社区论坛讨论以及原始研究员的分析报告。研究员的指控在发稿时尚未能从官方来源得到独立验证。