인사이트 · 3분 · 05.27

Lovable 앱 380,000개 중 5,000개가 의료기록을 흘리고 있다 — 출시는 끝이 아니라 시작

loopy vibecoder

핵심 요약 (TL;DR)

이스라엘 보안업체 RedAccess가 Lovable·Base44·Replit·Netlify로 만든 vibe-coded 앱 380,000개를 스캔한 결과, 5,000개 이상이 인증과 RLS 사실상 없는 상태로 의료기록·임상시험·환자 가족 대화·기업 GTM 자료를 공개 인터넷에 흘리고 있었습니다(RedAccess 자체 통계). Axios가 운송업체 선박 일정과 영국 임상시험 앱을 독립 검증했고, 핵심 원인은 "프라이버시 기본값이 public"이라는 한 줄로 요약됩니다.

380,000 옆에 5,000

Axios의 5월 7일 보도가 5월 내내 인디핵 신뢰 논쟁의 중심에 섰던 데에는 이유가 있습니다. RedAccess(Dor Zvi)가 380,000개의 vibe-coded 앱을 스캔해 발견한 5,000+개의 누출 앱 중 일부를 기자 Sam Sabin이 직접 들여다봤고, 그 결과가 너무 구체적이었거든요.

운송업체의 내부 앱에서 어떤 선박이 어느 항구에 언제 들어오는지 그대로 보였습니다. 영국의 한 보건 회사 앱에는 영국 전역에서 진행 중인 활성 임상시험 데이터가 노출됐고, 장기요양시설 앱에는 환자 가족과의 대화 로그가 그대로 떠 있었습니다. 종합병원 앱에서는 의사-환자 대화 요약과 직원 스케줄까지 공개로 풀려 있었죠. 검증된 카테고리만 봐도 한 줄 한 줄이 컴플라이언스 위반과 직결되는 데이터들입니다.

왜 다섯에 한 명이 새는가

40%가 "사실상 어떤 인증도 보안도 없는 상태"라는 게 RedAccess의 자체 통계입니다. 이 수치가 충격적이지만, 한 단계 더 들어가면 원인은 단순해요. Lovable·Base44 같은 플랫폼의 프라이버시 기본값이 public이라는 점이죠. 사용자가 직접 private으로 토글하지 않으면, 만든 앱은 공개 인터넷에 기본 노출됩니다.

여기에 한 가지 더. 핵심 회로 결함은 Supabase RLS(Row Level Security) 미설정이 압도적 다수입니다. Supabase 같은 BaaS를 쓰면 데이터베이스가 곧 API가 되는데, RLS가 꺼져 있으면 누구나 fetch 한 줄로 모든 행을 가져갈 수 있습니다. 별도 학술 조사에 따르면 vibe-coded 앱 샘플의 70%에서 RLS가 비활성화되어 있었어요.

"출시했다 = 다 했다"라는 인식이 바이브코딩의 가장 위험한 단계입니다. 코드가 동작하고, 친구한테 링크를 보냈고, 첫 사용자가 가입했으면 그게 끝이 아니라 시작인 거죠. Auth와 RLS를 명시적으로 켜지 않은 상태로 인터넷에 둔 채 며칠이 지나면, 본인 앱이 380,000개 스캔 풀에 들어가 있을 산술적 확률이 0이 아닙니다.

5분 안에 끝내는 체크리스트

복잡할 필요가 없습니다. vibe-coded 앱을 한 번이라도 인터넷에 띄운 분이라면, 오늘 저녁 5분만 들여 세 가지만 확인해보세요.

첫째, Supabase 대시보드의 Table Editor에서 모든 테이블을 한 번씩 클릭해 RLS가 활성화되어 있는지 확인합니다. 기본 정책은 deny all로 두고, 필요한 SELECT/INSERT만 명시적으로 허용하는 게 안전합니다.

둘째, Lovable이나 Base44에서 만든 프로젝트의 visibility 설정을 점검합니다. 기본값이 public이라면, 본인이 직접 toggle을 private으로 옮겨야 합니다. 이 토글 하나가 380,000 풀에서 빠지는 가장 빠른 길이에요.

셋째, Replit Repl의 visibility도 마찬가지입니다. Repl이 public이면 코드뿐 아니라 환경변수까지 노출될 위험이 있습니다. .env 파일은 secrets로 옮기고, Repl 자체를 private으로 바꾸세요.

"내가 만들었다"의 책임 범위

여기서 한 가지 분명히 짚어야 할 게 있습니다. 플랫폼 책임 논쟁이 거센 건 사실이지만, 결국 데이터 컨트롤러는 만든 사람입니다. Lovable 측이 "사용자가 직접 private으로 바꿔야 한다"는 입장을 일부 인정한 상황에서, GDPR과 HIPAA는 플랫폼 기본값을 변명으로 받아주지 않습니다.

비기술 메이커가 빠지기 쉬운 함정이 바로 여기죠. "내가 코드를 안 짰으니까 보안도 내 책임이 아니다"라는 감각이 들기 쉽지만, 법은 그렇게 작동하지 않습니다. AI가 코드를 써줬어도, deploy 버튼을 누른 사람이 책임자거든요.

FAQ

Q. 제 Lovable 앱이 380,000 풀에 들어 있을지 어떻게 아나요?
공개 인터넷에 띄운 적이 있다면 확률은 0이 아닙니다. lovable.app, replit.dev, netlify.app 서브도메인은 모두 표준 스캐너로 발견 가능합니다. 자체 도메인을 매핑했어도 인덱싱되면 동일합니다.

Q. RLS를 켰는데도 데이터가 보일 수 있나요?
가능합니다. RLS는 켜져 있지만 정책이 using (true)로 설정되어 있으면 사실상 deny 없는 상태입니다. 정책 표현식까지 한 번씩 직접 확인해야 합니다.

Q. 5,000개의 sensitive 기준은 무엇인가요?
RedAccess 자체 기준이라 HIPAA·GDPR 공식 분류와는 다를 수 있습니다. 다만 Axios가 독립 검증한 사례들이 의료·임상시험 데이터를 포함하고 있어, 컴플라이언스 위반 가능성이 낮지 않다는 점은 신호로 받아들일 만합니다.

코드가 동작하는 것과 안전하게 동작하는 것은 다른 사건입니다. 오늘 저녁, 본인 앱의 RLS 토글 하나만 확인해보세요. 그게 380,000 줄에서 빠지는 가장 짧은 거리예요.

0

댓글 0

아직 댓글이 없습니다