인사이트 · 3분 · 04.13

150만 API 키가 유출된 날 — 바이브코딩이 놓치는 단 한 가지

loopy vibecoder

핵심 요약 (TL;DR)

바이브코딩으로 만든 AI 소셜네트워크 Moltbook이 출시 직후 150만 개 API 인증 토큰, 35,000개 이메일, 약 475만 건의 레코드를 노출했습니다. 근본 원인은 Supabase 크레덴셜의 클라이언트 사이드 하드코딩과 Row Level Security(RLS) 미설정. AI가 생성한 코드는 "작동"했지만, 보안은 전혀 고려하지 않았습니다.


"코드를 단 한 줄도 직접 쓰지 않았다."

Moltbook 창업자가 공개적으로 밝힌 말입니다. AI 에이전트들이 포스팅하고, 댓글 달고, 투표하는 소셜 네트워크 — "에이전트 인터넷의 첫 페이지"를 표방한 이 서비스는 출시 직후 보안 연구 기관 Wiz의 레이더에 잡혔습니다.

Wiz가 발견한 것

Wiz 리서치팀이 공개한 보고서에 따르면, Moltbook의 데이터베이스에서 유출된 규모는 이렇습니다:

  • API 인증 토큰: 1,500,000개
  • 이메일 주소: 35,000개
  • 얼리액세스 이메일: 29,631개
  • 총 노출 레코드: 약 475만 건
  • 플랫폼 실제 인간 계정: 17,000개

더 심각한 건 유출 데이터에 OpenAI API 키 등 제3자 크레덴셜까지 포함돼 있었다는 점입니다. 한 서비스의 보안 구멍이 다른 서비스의 보안까지 위협한 셈이죠.

근본 원인은 놀라울 만큼 단순했다

Supabase 크레덴셜이 클라이언트 사이드 JavaScript에 그대로 하드코딩돼 있었습니다. 브라우저 개발자 도구만 열면 누구나 볼 수 있는 상태였던 거죠. 거기에 Row Level Security(RLS) 정책이 아예 설정되지 않아서, 그 키 하나면 전체 데이터베이스에 접근할 수 있었습니다.

AI가 생성한 코드의 전형적인 패턴입니다. "작동"은 합니다. 데이터를 읽고 쓰고, 화면에 표시하는 것까지는 완벽하게요. 다만 그 코드가 외부에서 어떻게 악용될 수 있는지는 전혀 고려하지 않습니다.

이건 Moltbook만의 문제가 아니다

RedHunt Labs가 13만 개의 바이브코딩 사이트를 분석한 결과, 5개 중 1개(약 26,000개)에서 민감한 시크릿이 노출된 상태였습니다. Moltbook은 빙산의 일각인 거예요.

바이브코딩으로 빠르게 만들어서 빠르게 출시하는 건 매력적입니다. 하지만 보안은 "나중에 하면 되는 것"이 아닙니다. 보안 사고는 출시 직후에 터지니까요.

바이브코더를 위한 보안 체크리스트

프로젝트를 배포하기 전, 최소한 이것만은 확인하시길 권합니다:

  1. 클라이언트 코드에 API 키, 시크릿이 노출돼 있지 않은지 확인
  2. Supabase를 쓴다면 RLS 정책이 설정돼 있는지 반드시 점검
  3. 환경 변수(.env)가 Git에 커밋되지 않았는지 확인
  4. 배포 전 브라우저 개발자 도구로 직접 크레덴셜 노출 여부 테스트

AI에게 코드를 맡기되, 보안 검증까지 맡기지는 마세요. 그건 아직 우리의 몫입니다.


FAQ

Supabase RLS란 무엇이고 왜 중요한가요?

Row Level Security(RLS)는 데이터베이스 행(row) 단위로 접근 권한을 제어하는 정책입니다. RLS가 없으면 API 키를 가진 누구나 전체 데이터에 접근할 수 있습니다. Supabase를 사용하는 바이브코딩 프로젝트라면 반드시 설정해야 합니다.

AI가 생성한 코드의 보안 취약점은 어떻게 발견하나요?

가장 기본적인 방법은 배포 전 브라우저 개발자 도구(F12)로 네트워크 탭과 소스를 확인하는 것입니다. API 키나 크레덴셜이 노출돼 있다면 즉시 발견할 수 있습니다. 추가로 GitHub의 secret scanning이나 gitleaks 같은 도구를 활용하면 커밋 히스토리까지 점검할 수 있습니다.


관련 글:
- 23세가 증명한 공식 — AI만으로 개발한 앱이 월 $45K를 만들기까지

0

댓글 0

아직 댓글이 없습니다