당신의 API 키, 지금 새고 있을 확률 20% — 13만 바이브코딩 사이트가 증명한 구조적 결함
핵심 요약 (TL;DR)
RedHunt Labs가 바이브코딩 플랫폼 13개에서 생성된 약 13만 개 웹사이트를 스캔한 결과, 5개 중 1개(약 26,000개)에서 API 키, Firebase 인증정보 등 시크릿이 노출되어 있었습니다. 유출의 72%는 Google Gemini API 키였으며, AI 기능을 프론트엔드에 직접 연결하는 패턴이 가장 큰 위험 요인입니다.
바이브코딩으로 사이드 프로젝트를 배포해본 적 있으신가요? 그렇다면 이 숫자를 기억해두세요. 5개 중 1개.
13만 개 사이트에서 발견된 것
보안 연구 기업 RedHunt Labs가 Project Resonance 프로젝트의 일환으로 Lovable, Replit, Bolt 등 13개 바이브코딩 플랫폼에서 만들어진 약 13만 개 웹사이트를 대규모 스캔했습니다.
결과는 충격적이었습니다. 26,000개 사이트, 약 20%에서 최소 1개 이상의 시크릿이 노출되고 있었습니다. 발견된 고유 시크릿만 25,000개.
무엇이 새고 있나요?
유출 비중을 보면 패턴이 선명합니다.
| 유출 항목 | 비중 |
|---|---|
| Google Gemini API 키 | 72.4% |
| OpenAI API 키 | 14.2% |
| ElevenLabs API 키 | 8.1% |
| Bearer 토큰 | 25.0% |
| Stripe/Razorpay 결제 키 | 6.3% |
이 외에도 Firebase 인증정보 16,000건 이상, Supabase 인증정보 3,000건 이상, Telegram 봇 토큰까지 발견됐습니다.
공통점이 보이시나요? AI API 키가 전체 유출의 압도적 비중을 차지합니다. 바이브코딩으로 AI 기능을 붙이면서 API 키를 프론트엔드 코드에 하드코딩하는 것 — 이것이 가장 흔하고 가장 위험한 패턴입니다.
왜 바이브코딩에서 특히 심한 걸까요?
전통적인 개발에서도 시크릿 유출은 일어납니다. 하지만 바이브코딩은 구조적으로 더 취약합니다. AI가 "동작하는 코드"를 최우선으로 생성하다 보니, API 키를 환경 변수로 분리하거나 서버 사이드 프록시를 거치는 보안 레이어를 건너뛰는 경우가 잦습니다.
비유하자면, 집을 지을 때 벽은 잘 세우는데 자물쇠는 빼놓는 것과 같습니다. 동작은 하지만, 열려 있는 거죠.
게다가 이번 연구는 클라이언트 사이드에서 인증 없이 접근 가능한 시크릿만 조사한 것입니다. 서버 사이드까지 포함하면 실제 노출 규모는 훨씬 클 것으로 추정됩니다.
내 사이트는 안전한지 확인하는 방법
지금 당장 할 수 있는 점검이 있습니다.
- 브라우저 개발자 도구(F12)에서 Sources 탭을 열고, 번들된 JS 파일에서
sk-,AIza,Bearer,supabase등의 키워드를 검색해보세요 - API 키가 발견되면 즉시 키를 재발급하고, 서버 사이드 프록시로 전환하세요
.env파일이 빌드 결과물에 포함되지 않는지 확인하세요
바이브코딩의 편리함을 포기하라는 게 아닙니다. 다만 "배포" 버튼을 누르기 전에, 30초만 투자해서 열쇠가 밖에 놓여 있지 않은지 확인하자는 이야기입니다.
자주 묻는 질문
어떤 바이브코딩 플랫폼이 가장 위험한가요?
RedHunt Labs는 13개 플랫폼별 유출 비율을 공개하지 않았습니다. 다만 모든 주요 플랫폼(Lovable, Replit, Bolt 등)이 스캔 대상에 포함되어 있어, 특정 플랫폼만의 문제가 아닌 구조적 이슈로 봐야 합니다.
API 키가 유출되면 실제로 어떤 피해가 발생하나요?
유출된 AI API 키로 제3자가 대량 호출을 실행하면 수십만 원의 과금이 발생할 수 있습니다. 결제 키(Stripe/Razorpay)가 유출되면 금전적 피해로 직결됩니다. Firebase/Supabase 인증정보 유출은 사용자 데이터 전체 접근으로 이어질 수 있습니다.
Supabase나 Firebase를 쓸 때 특히 주의할 점은?
클라이언트에 노출되는 anon 키와 서버에서만 써야 하는 service_role 키를 반드시 구분하세요. Row Level Security(RLS) 정책이 제대로 설정되어 있는지 확인하는 것도 필수입니다.
관련 글 더 보기
댓글 0
아직 댓글이 없습니다