live_connect_constraints Bị ThiếuTheo bài viết của Ferdiansyah, quá trình triển khai tham chiếu cho việc tạo token tạm thời đã bỏ qua trường live_connect_constraints . Trường này được cho là chứa một đối tượng
bidi_generate_content_setup để ràng buộc token với một mô hình, hướng dẫn hệ thống và bộ công cụ cụ thể.
Khi live_connect_constraints bị bỏ trống hoặc không có, không có ràng buộc nào được thực thi. Kẻ tấn công có được token tạm thời sau đó có thể gửi một khung thiết lập do máy khách kiểm soát (client-controlled setup frame) chỉ định bất kỳ mô hình, lời nhắc hệ thống và công cụ nào chúng chọn. Máy chủ, thiếu các giá trị ràng buộc với token để xác thực, sẽ chấp nhận cấu hình của kẻ tấn công.
Lưu ý quan trọng: Các nguồn được cung cấp không bao gồm tài liệu chính thức của Google về
live_connect_constraints, CVE hoặc xác nhận bảo mật từ Google xác nhận hành vi này. Tuyên bố đến từ bài đăng trên Medium của Ferdiansyah và nên được coi là chưa được xác minh nhưng có khả năng xảy ra.
Nếu lỗ hổng là có thật, hậu quả sẽ rất nghiêm trọng đối với bất kỳ ứng dụng nào sử dụng API Gemini Live trong bối cảnh trình duyệt:
Các nhà phát triển trên diễn đàn Google AI đã báo cáo các sự cố với token tạm thời bỏ qua hướng dẫn hệ thống và không hoạt động như mong đợi với các điểm cuối bị ràng buộc, cho thấy hệ sinh thái rộng lớn hơn vẫn đang trong quá trình hoàn thiện .
Biện pháp khắc phục được Ferdiansyah mô tả khá đơn giản: điền vào trường live_connect_constraints.bidi_generate_content_setup
model — Mô hình Gemini chính xác cần sử dụng (ví dụ: models/gemini-2.5-flash-native-audio-latest).system_instruction — Lời nhắc hệ thống dự định, được cấu trúc dưới dạng parts chứa text.tools — Một mảng rỗng [] hoặc chỉ các công cụ được phép một cách rõ ràng, ngăn chặn việc tiêm từ phía máy khách.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": "Bạn là trợ lý hỗ trợ khách hàng..."}]
},
"tools": []
}
}
})Lưu ý: Vì
live_connect_constraintskhông được ghi lại trong tài liệu tham khảo API chính thức của Google được cung cấp, ví dụ này dựa trên mô tả của riêng Ferdiansyah và cần được kiểm tra với API thực tế trước khi sử dụng trong sản xuất.
Các điểm chính sau đây vẫn chưa được xác minh bởi các nguồn được cung cấp:
live_connect_constraints.BidiGenerateContentConstrained khi nhận được một token không bị ràng buộc không được ghi lại trong các tài liệu tham khảo chính thức được cung cấp Cho đến khi Google công bố một thông báo chính thức, cách tiếp cận an toàn nhất là coi lỗ hổng này là có khả năng xảy ra và áp dụng biện pháp khắc phục một cách chủ động:
live_connect_constraints hoặc trường tương đương hay không.newSessionExpireTime khoảng 60 giây để giới hạn thời gian cho việc đánh cắp token API Gemini Live là một công cụ mạnh mẽ để xây dựng các trải nghiệm giọng nói và video thời gian thực. Một trường bị thiếu trong quá trình tạo token không nên làm suy yếu khả năng đó — nhưng các nhà phát triển phải đảm bảo việc triển khai của họ được hoàn chỉnh.
Bài viết này đã được kiểm tra thực tế dựa trên 27 nguồn được cung cấp, bao gồm tài liệu chính thức của Google, thảo luận trên diễn đàn cộng đồng và bài viết gốc của nhà nghiên cứu. Các tuyên bố chính từ nhà nghiên cứu không thể được xác minh độc lập từ các nguồn chính thức tại thời điểm xuất bản.