2026년 5월 7일, 보안업체 레드액세스(RedAccess)가 던진 숫자 하나가 개발자 커뮤니티를 조용히 얼어붙게 했다. AI 도구로 만든 웹 앱 약 5,000개가 사실상 아무 인증 없이 인터넷에 열려 있었다는 것이다. URL만 알면 누구나 앱과 그 안의 데이터에 접근할 수 있었다.
더 서늘한 건 내용물이었다. 그중 약 40%가 민감 정보를 노출하고 있었다. 의료 기록, 금융 데이터, 회사 발표자료와 전략 문서, 챗봇과 나눈 고객 대화 로그까지. 이 앱들은 Lovable·Replit·Base44·Netlify 같은 플랫폼 도메인에 올라간 것만 센 것이고, 각자 산 도메인에 올린 것까지 하면 수천 개가 더 있을 거라고 연구팀은 덧붙였다.
RedAccess 리포트 · 2026.5.7
5,000개 노출 · 40% 민감정보
별도로 Escape.tech가 바이브코딩 플랫폼 앱 1,400개를 스캔한 결과 치명적 취약점 2,038건, 유출된 시크릿 400건 이상, 의료·금융·인증정보를 포함한 개인정보 노출 175건이 나왔다. 모두 실사용자가 있는 프로덕션 앱이었다.
여기서 오해는 금물이다. 이건 "바이브코딩 하지 마라"는 이야기가 아니다. 이 취약점들의 공통점은 하나다 — 전부 배포 전에 발견 가능했고, 대부분 오후 반나절이면 고칠 수 있었다. 문제는 아무도 확인하지 않았다는 것뿐이다. 실제 사고들이 반복한 실수를 뒤집으면, 그게 곧 체크리스트가 된다.
🔍 사고는 왜 반복됐나 — 공통 실수 4가지
보고서와 감사 결과를 겹쳐 보면 원인이 놀랍도록 똑같다. 화려한 제로데이가 아니라, 기본값을 그대로 둔 것이다. 한 감사에서는 바이브코딩 앱 50개 중 88%가 데이터베이스 행 수준 보안(RLS)을 아예 꺼둔 채 운영되고 있었다. 미설정이 아니라 '비활성화' — 즉 어떤 쿼리에도 모든 행을 그대로 내주는 상태였다.
깨진 접근 제어(Broken Access Control)는 OWASP 위험 순위 1위이자, 공개된 바이브코딩 유출 사고 대부분의 진짜 범인이다. 인증이 없거나 RLS가 꺼져 있어서 데이터베이스나 엔드포인트를 아무나 읽을 수 있었던 것이다.
✅ 배포 전 5분 체크리스트
Tier 1 — 실사용자가 닿기 전 반드시
프런트엔드에 시크릿 두지 않기
클라이언트 자바스크립트에 박힌 API 키는 브라우저 개발자 도구로 누구나 읽는다. 키는 환경변수에 두고, .env를 .gitignore에 추가하고, 외부 호출은 백엔드로 프록시한다. 한 번이라도 노출됐으면 즉시 회전(rotate). 파일에서 지워도 git 히스토리에 영원히 남는다.
모든 테이블에 RLS 켜기
Supabase·Postgres를 쓴다면 행 수준 보안(RLS)이 공개 키가 전체 행을 읽는 걸 막는 유일한 장치다. 모든 테이블에 켜고, 각 행을 소유자 범위로 제한하는 정책을 쓴다. Lovable 앱들이 놓쳤던 바로 그 설정이다.
서버 측 인가(authorization) 확인
"프런트에서 버튼 숨겼으니 됐다"는 착각이 사고를 부른다. 누가 무엇을 할 수 있는지는 서버가 판단해야 한다. 클라이언트가 보낸 요청을 그대로 믿지 않는다.
노출된 관리자 도구·엔드포인트 없애기
디버그 페이지, 관리자 패널, 테스트 엔드포인트가 인증 없이 열려 있는지 점검한다. AI는 종종 편의를 위해 이런 걸 열어두고, UI만 봐서는 보이지 않는다.
Tier 2~3 — 규모를 키우거나 결제를 받기 전
| 항목 | 확인 내용 |
|---|---|
| 입력 검증 | 폼·API 입력값 서버에서 검증, SQL/스크립트 주입 차단 |
| 속도 제한 | 로그인·API에 rate limit, 무차별 대입·비용 폭탄 방지 |
| 의존성 점검 | AI가 추천한 패키지가 실존·최신인지(존재하지 않는 패키지 사칭 주의) |
| 로그·모니터링 | 이상 접근 감지, 공개 노출 여부 주기 점검 |
속도의 대가를 미리 치르기
바이브코딩의 매력은 속도다. 며칠 만에 앱이 나오고, 그 속도가 트위터에서 "미래가 왔다"는 증거로 인용된다. 하지만 초고속으로 만든 몰트북(Moltbook)이라는 앱은 몇 주 만에 API 토큰 150만 개와 이메일 3만 5천 개를 흘렸다. 속도는 공짜가 아니다 — 다만 그 대가를 사고로 치를지, 배포 전 5분으로 치를지를 고를 수 있을 뿐이다.
이 글의 모든 취약점은 실사용자가 의존하기 전에 찾을 수 있었던 것들이다. 발견한 사람과 못 한 사람의 차이는 실력이 아니라, 배포 버튼을 누르기 전에 한 번 들여다볼 생각을 했느냐였다. 다음에 앱을 올리기 전, 위 네 칸부터 소리 내어 확인해 보자. "내 앱은 지금 누가 열어볼 수 있지?"