피드로 돌아가기
$60K Billed in 13 Hours: Why Leaked Firebase Keys Keep Killing AI-Built Apps
Dev.toDev.to
Security

제한 없는 API Key 유출로 인한 13시간 만의 $60K 과금 사태와 Static Analysis의 필요성

$60K Billed in 13 Hours: Why Leaked Firebase Keys Keep Killing AI-Built Apps

ayame03282026년 4월 18일6intermediate

Context

Firebase와 Gemini를 결합한 AI 앱 개발 시 LLM이 제안하는 클라이언트 측 설정 방식에 따른 API Key 노출 위험 증가. API Key에 Application 및 API Restriction이 누락된 상태로 프론트엔드 번들에 포함되어 외부 공격자의 무단 사용을 허용한 구조적 취약점 발생.

Technical Solution

  • Deterministic Static Analysis 도입을 통한 비결정적 LLM 기반 탐지의 한계 극복
  • AST(Abstract Syntax Tree) Walk 및 Pattern Matching 기반의 규칙 기반 휴리스틱 엔진 설계
  • Next.js의 NEXT_PUBLIC_* 등 프레임워크별 환경 변수 유출 패턴과 공급자별 Key Prefix 교차 검증 로직 구현
  • 탐지 결과의 단순 개수가 아닌 Blast Radius(영향 범위) 기준의 위험도 랭킹 시스템 적용
  • Client-side 배포 전 CI 단계에서 Static Scan을 강제하여 런타임 이전의 취약점 차단
  • Gemini/Vertex AI Key의 Backend Proxy 경로 설계를 통한 클라이언트 직접 노출 원천 차단

Impact

  • GitHub 내 Firebase+AI 스타터 레포지토리 80%(40개 중 32개)에서 Key 노출 및 제한 누락 확인
  • CodeHeal 스캔을 통해 Next.js 아키텍처 기반 앱의 취약점 탐지 시간을 2초 미만으로 단축

Key Takeaway

AI 기반 코드 생성 속도가 증가함에 따라 보안 하이진(Hygiene)의 공백이 발생하므로, LLM의 '작동 중심' 제안을 검증할 수 있는 결정론적(Deterministic) 보안 파이프라인 구축이 필수적임.


- Google Cloud Console 내 모든 API Key에 Application restriction(HTTP/IP)과 API restriction을 동시 적용했는지 확인 - 빌드된 JS 번들 내 'AIza' 프리픽스 검색을 통한 Key 노출 여부 전수 조사 - Gemini 및 Vertex AI API 호출을 전담하는 Backend Proxy Route 구축 및 클라이언트 직접 호출 제거 - 예기치 못한 비용 폭증 방지를 위한 Hard Billing Cap 설정 및 알림 구성 - git push 전 AST 기반의 Static Analysis 도구를 CI/CD 파이프라인에 통합

원문 읽기