Ferdiansyah의 글에 따르면, 토큰 생성을 위한 참조 구현(reference implementation)에서 live_connect_constraints 필드가 생략되었습니다 . 이 필드는
bidi_generate_content_setup 객체를 포함하여 토큰을 특정 모델, 시스템 명령어, 도구 집합에 바인딩(binding)하는 역할을 합니다.
live_connect_constraints가 비어 있거나 아예 없으면 제약 조건이 적용되지 않습니다. 따라서 공격자가 에페메럴 토큰을 획득한 경우, 자신이 원하는 모델, 시스템 프롬프트, 도구를 지정하는 클라이언트 제어 설정 프레임(client-controlled setup frame) 을 서버로 보낼 수 있습니다. 서버는 토큰에 바인딩된 설정 값이 없으므로 이를 검증하지 않고 공격자의 구성을 그대로 수락하게 됩니다.
중요한 주의사항: 제공된 소스에는
live_connect_constraints에 대한 Google의 공식 문서, CVE, 또는 Google 보안 권고문이 포함되어 있지 않습니다. 이 주장은 Ferdiansyah의 Medium 게시물에 근거한 것이며, 아직 공식적으로 확인되지 않았지만 개연성은 높은 것으로 간주됩니다.
이 취약점이 실제로 존재한다면, 브라우저 환경에서 Gemini Live API를 사용하는 모든 애플리케이션에 심각한 영향을 미칠 수 있습니다.
Google AI 포럼의 개발자들은 에페메럴 토큰이 시스템 명령어를 무시하거나 제한된 엔드포인트에서 예상대로 작동하지 않는 문제를 보고하고 있어, 관련 생태계가 아직 성숙 단계에 있음을 시사합니다 .
Ferdiansyah가 제시한 해결 방법은 간단합니다. 토큰 생성 시 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": "You are a customer support assistant..."}]
},
"tools": []
}
}
})참고: 공식 Google API 참조 문서에는
live_connect_constraints가 아직 문서화되지 않았으므로, 이 예제는 Ferdiansyah의 설명을 바탕으로 한 것입니다. 프로덕션 환경에 적용하기 전에 실제 API로 반드시 테스트해야 합니다.
다음 주요 사항들은 제공된 소스에서 아직 확인되지 않았습니다.
Google이 공식 권고문을 발표할 때까지는 이 취약점이 실제로 존재할 가능성을 염두에 두고 사전에 조치를 취하는 것이 가장 안전한 방법입니다.
live_connect_constraints 또는 이에 해당하는 필드를 올바르게 채우고 있는지 확인하세요.newSessionExpireTime을 약 60초로 설정할 것을 권장합니다 Gemini Live API는 실시간 음성 및 비디오 경험을 구축하기 위한 강력한 도구입니다. 토큰 생성 과정에서 단 하나의 필드가 누락된 것이 이러한 역량을 약화시켜서는 안 됩니다. 개발자는 자신의 구현이 완전한지 반드시 확인해야 합니다.
이 기사는 공식 Google 문서, 커뮤니티 포럼 토론, 연구원의 원본 글을 포함한 27개의 제공된 소스를 기반으로 팩트체크 되었습니다. 연구원의 주요 주장은 게시 시점 기준으로 공식 소스를 통해 독립적으로 확인할 수 없었습니다.