€54k spike in 13h from unrestricted Firebase browser key accessing Gemini APIs

개요

Firebase AI Logic을 사용 설정한 프로젝트에서 API 키가 무단으로 접근되어 Gemini API 사용량이 급증하며 예상치 못한 54,000 유로 이상의 요금이 발생한 사례입니다.

주요 내용

* 문제 발생: Firebase AI Logic을 기존 Firebase 프로젝트에 추가한 후, 실제 사용자 트래픽과 무관하게 자동화된 Gemini API 사용량이 급증하는 현상이 발생했습니다.
* 비용 폭증: 단기간 내에 28,000 유로 이상이 청구되었으며, 최종적으로 54,000 유로가 넘는 비용이 발생했습니다.
* 원인 추정: 보안이 적용되지 않은 Firebase 브라우저 API 키가 Gemini API에 접근 가능했던 것으로 추정됩니다.
* 대응 및 결과: API를 비활성화하고 자격 증명을 교체했으며, Google Cloud 지원팀과 협력했으나 해당 요금은 프로젝트에서 발생한 유효한 사용량으로 분류되어 청구 조정 요청이 거부되었습니다.
* Google의 조치: Google은 Gemini API 사용자들에게 계정 및 프로젝트 수준의 지출 한도 설정을 지원하고, 향후 REST API 키 대신 보안이 강화된 Auth 키를 기본으로 생성하도록 변경하며, 공개 웹에 노출된 API 키를 자동으로 감지하여 비활성화하는 등의 보안 강화를 진행하고 있습니다. 또한, 선불 결제 시스템 도입을 통해 개발자들의 비용 통제 기능을 강화하고 있습니다.
* 대안 제시: App Check, 할당량 설정, 서버 측 호출 이동 외에도 API 키를 클라이언트 측 코드에 직접 포함하지 않고, 키가 필요한 리소스에만 제한적으로 사용하도록 설정하는 것이 권장됩니다.
* 커뮤니티 문의: 유사한 문제 경험, 추가적인 보안 조치, 혹은 문제 해결을 위한 에스컬레이션 경로에 대한 문의가 있었습니다.
* 오픈소스 도구: Firebase API 키 노출 여부를 스캔하고 Gemini API 접근 테스트를 수행하는 오픈소스 스크립트가 공유되었습니다.

시사점

이번 사례는 Firebase AI Logic 사용 시 API 키 보안 설정의 중요성을 강조하며, 개발자는 클라이언트 측 코드에 API 키를 직접 노출하지 않고, Google Cloud의 보안 기능 및 최신 보안 권장 사항을 적극적으로 활용하여 예상치 못한 비용 발생을 방지해야 합니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions