연구원들이 38만 개의 바이브 코딩 앱을 스캔했다. 그들이 실제로 발견한 것들.
Researchers scanned 380,000 vibe-coded apps. Here's what they actually found.
핵심 요약
AI로 생성된 앱들의 심각한 보안 취약점 실태와 무분별한 배포의 위험성을 경고하는 글입니다.
- 보안 취약점 — AI 생성 코드의 45%가 OWASP Top 10 취약점을 포함함
- 흔한 실수 — 하드코딩된 키, RLS 미설정, 관리자 페이지 노출 등이 빈번함
- 플랫폼 책임 — Lovable, Replit 등 배포 플랫폼의 기본 보안 설정 부재가 문제임
- 바이브 코딩의 함정 — 코드 검토 없이 무분별하게 배포하는 관행이 위험을 초래함
Wired에서 5월에 다룬 이 연구를 봤는데, 그 이후로 계속 머릿속에서 떠나질 않네.
Red Access는 Lovable, Replit, Base44, Netlify에 있는 38만 개 이상의 공개 자산을 스캔했어. 대략 40%가 민감한 데이터를 노출하고 있었지. 수천 개는 인증 자체가 아예 없었어. 약한 인증이 아니라, 아예 없었다고.
Veracode가 별도로 진행한 연구에서는 AI가 생성한 코드의 45%가 최소한 하나의 OWASP Top 10 취약점을 가지고 있다는 사실을 발견했어.
내가 충격받은 부분은 이게 생소한 버그들이 아니라는 거야. 똑같은 다섯 가지 문제가 계속 반복되고 있어:
1. 클라이언트 번들에 포함된 비밀값. AI에게 Stripe를 연결하라고 시켰더니, 브라우저가 읽을 수 있는 곳에 키를 하드코딩해 버린 거야. 개발자 도구를 여는 사람은 누구나 그 키를 볼 수 있지.
2. 행 수준 보안(Row-level security) 누락. 이건 Supabase에서 가장 큰 문제야. 정책을 작성하지 않으면 테이블은 anon 키를 가진 누구에게나 읽힐 수 있어. AI는 보통 정책을 작성하지 않지. 이 패턴에 대한 실제 CVE도 있어 (CVE-2025-48757).
3. 로그인과 권한 부여의 혼동. 로그인은 작동하게 만들었지만, /api/users/:id에서 숫자를 바꾸면 다른 사용자의 데이터를 반환해 버려. 로그인했다고 해서 권한이 있는 건 아니거든.
4. 디버그 및 관리자 경로 방치. AI는 코드를 짜면서 /debug나 /admin 경로를 추가하는데, 아무도 그걸 제거하지 않아.
5. CORS 설정이 *로 되어 있음. 보통 누군가 CORS 에러를 겪고 AI에게 고쳐달라고 했을 때 발생해. AI는 체크 기능을 꺼버리는 방식으로 해결해 버리지.
Moltbook은 제작자가 코드를 한 줄도 안 짰다고 글을 올린 지 3분 만에 데이터베이스가 털렸어. 바이브 코딩을 해서가 아니라, 아무도 확인을 안 했기 때문이야.
바이브 코딩 자체가 문제는 아니야. 확인 없이 배포하는 게 문제지. Supabase를 쓰고 있다면, 지금 당장 RLS 정책을 확인해 봐. 그게 사람들을 골치 아프게 만드는 주범이야.

