Quittr는 2025년 바이브 코딩의 성공 신화입니다: 매출 100만 달러, 10일 만에 구축, 오프라 언급. 그런데 Firebase 데이터베이스가 전체 공개 상태였습니다.
Quittr is the vibe coding success story of 2025: $1M revenue, built in 10 days, Oprah mention. And its Firebase database was publicly readable.
핵심 요약
10일 만에 빌드해 대박 난 앱 Quittr가 보안 설정 오류로 민감한 사용자 데이터 60만 건을 유출했습니다.
- 보안 사고 발생 — Firebase의 테스트 모드 설정을 그대로 방치해 60만 명의 민감한 개인 정보가 노출됨.
- 민감 데이터 유출 — 단순 이메일이 아닌 자위 빈도, 정서적 트리거 등 극도로 사적인 고백 내용이 포함됨.
- 바이브 코딩의 명암 — 10일 만에 구축해 100만 달러 매출을 올렸으나 기본적인 보안 검증 부재로 비판받음.
- Firebase 기본값 비판 — 작성자는 Firebase의 'test mode' 기본 설정과 배포 시 경고 부재가 근본 원인이라 주장함.
600,000건의 사용자 기록이 노출되었습니다. 그중 100,000건은 미성년자입니다. 단순한 이메일 주소뿐만 아니라, 스스로 보고한 자위 빈도, 정서적 트리거, 콘텐츠 카테고리, 그리고 자유 형식의 개인적인 고백까지 포함되어 있습니다. 검증된 연령대와 연결된, 소비자 인터넷이 다루는 가장 친밀한 데이터들입니다.
해당 앱은 포르노 끊기를 돕는 앱인 Quittr입니다. 가입 시 다음과 같이 묻습니다: 몇 살인가요? 포르노를 얼마나 자주 보나요? 자위를 얼마나 자주 하나요? 무엇이 당신을 자극하나요? 어떤 카테고리인가요? 왜 끊고 싶나요?
이 모든 답변들이 다음과 같은 규칙으로 실행되는 Firebase 데이터베이스에 그대로 놓여 있었습니다:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
이것은 Firebase의 "테스트 모드" 기본값입니다. 새 프로젝트를 생성할 때 온보딩 흐름에서 제시되는 옵션입니다. 이는 인터넷상의 누구라도 인증이나 소유권 확인 없이 무엇이든 읽고 쓸 수 있음을 의미합니다.
Quittr의 창업자 Alex Slater는 SwiftUI + Firebase + Superwall을 사용하여 약 10일 만에 이 앱을 만들었습니다. 다운로드 350,000건 달성, 120개국 진출, 6개월 만에 100만 달러 이상의 매출을 기록하며 외부 투자 없이 자생했습니다. 오프라 윈프리 쇼에도 소개되었습니다. 정확히 이 서브레딧이 찬양하는 바로 그 빌드 방식입니다.
Firebase 규칙은 첫날 설정된 이후 한 번도 변경되지 않았습니다.
분명히 말씀드리고 싶습니다: 이것은 단순히 부주의한 창업자에 대한 이야기가 아닙니다. 이것은 Firebase가 기본적으로 무엇을 배포하는지에 대한 이야기입니다. 규칙 파일은 여러분이 빌드하는 탭과는 다른 콘솔 탭에 위치합니다. 규칙이 열려 있든 잠겨 있든 앱은 동일하게 작동합니다. 빌드 시점의 체크도, 배포 시점의 경고도, "정말 확실합니까?"라는 프롬프트도 없습니다. firebase deploy는 눈 하나 깜짝 안 하고 테스트 모드를 프로덕션에 배포합니다.
이것은 지난 1년 동안 우리가 다룬 네 번째 주요 Firebase/BaaS 보안 사고입니다. Cal AI(건강 기록 320만 건), Tea(정부 ID 7.2만 건), 그리고 916개 프로젝트 전염병(총 1억 2,500만 건 기록)에 이은 것입니다. 같은 기본 설정, 다른 앱, 다른 데이터, 하지만 결과는 같습니다.
데이터의 성격이 Quittr의 유출을 다르게 만듭니다. 대부분의 Firebase 유출은 이메일 목록이나 사용자 프로필입니다. Quittr의 데이터베이스에는 사용자별 자위 빈도, 왜 끊고 싶은지에 대한 개인적인 고백, 그리고 10만 명의 미성년자 나이가 포함되어 있었습니다. 이것은 단순한 개인정보(PII)가 아닙니다. 검증된 나이와 연결된 성착취 및 괴롭힘의 소재입니다.
만약 Firebase로 무언가를 배포했다면, 지금 당장 이 탭을 여세요:
Firebase Console → 프로젝트 선택 → Firestore/Realtime DB → Rules
if true를 검색하세요. 루트 레벨에 나타난다면 Quittr와 같은 버그가 있는 것입니다. 그런 다음 Firebase Storage도 별도로 확인하세요. 그것은 다른 규칙 파일을 가진 다른 제품이며, 사람들이 하나는 보안을 설정하고 다른 하나는 잊어버리는 이유가 바로 이 때문입니다.
기본 거부(deny-by-default) 규칙 템플릿, 5단계 감사 체크리스트, 그리고 왜 firebase deploy가 명시적인 오버라이드 플래그 없이 if true 배포를 거부해야 한다고 생각하는지에 대한 전체 글은 여기서 확인하세요:


