바이브 코딩으로 만든 앱은 보안 악몽이다
Vibecoded apps are a security nightmare
핵심 요약
AI로 빠르게 만든 앱들이 보안 취약점을 다수 노출하고 있어 배포 전 철저한 보안 검토가 필수적입니다.
- 보안 취약점 노출 — API 키 유출, 데이터베이스 권한 설정 미흡 등 심각한 보안 결함이 발견됨
- 클라이언트 의존성 문제 — 로컬 스토리지나 프론트엔드 로직에 보안을 의존하는 것은 매우 위험함
- 배포 전 보안 검토 — 사용자 데이터나 결제를 다루는 앱은 반드시 보안 패스를 거쳐야 함
- 개발 역량의 중요성 — AI는 강력한 도구지만, 사용자가 시스템과 보안 위험을 이해하고 있어야 함
최근에 여기 누가 채팅 앱 하나 올렸길래 심심해서 좀 찔러봤거든. 근데 30분도 안 돼서 앱을 완전히 박살 내버렸다.
도메인이랑 민감한 정보는 가렸음.
앱 자체는 돌아가고 UI도 멀쩡해. 주말 동안 만든 프로젝트치고는 기능도 꽤 많아서 겉보기엔 완성된 앱 같지만, 속을 까보면 영 아니더라고.
잘못될 수 있는 건 거의 다 잘못됐다고 보면 됨.
- OpenAI 개인 키가 자바스크립트 번들에 그대로 노출됨
- Firebase 설정이 완전히 공개됨
- 신원 확인용으로 localStorage를 사용함
- 관리자 페이지랑 신고 데이터가 접근 제어 없이 다 읽힘
- 밴(차단) 시스템이 백엔드에서 검증 안 됨
Firebase가 제일 문제였음. 데이터베이스 규칙이 그냥 활짝 열려 있더라. 누구나 모든 채팅방(비밀번호가 필요한 비공개 방 포함)을 읽고 수정할 수 있고, 신고된 유저, 관리자 로그, 유저 통계, 차단 목록 같은 것도 다 볼 수 있었음.
내 유저 등급을 마음대로 바꾸는 건 기본이고, 앱에 있는 다른 유저 데이터도 다 수정 가능했음. (메시지 조작, 등급 강등, 유저네임 변경 등등)
차단 시스템은 아예 있으나 마나임. localStorage에 저장된 기기 ID를 쓰는데, 그냥 값 바꾸거나 캐시랑 쿠키 지우면 차단 바로 뚫림.
흔한 문제점들:
- 프론트엔드에 API 키 노출
- Firebase/Supabase 권한 설정 엉망
- 브라우저랑 기기 상태를 맹신함
- 신원 확인용으로
localStorage를 믿음 - 클라이언트 사이드에서만 관리자 권한 체크
- 클라이언트 사이드에서만 중재(moderation) 체크
- 유저 역할, 등급, 크레딧, 잔액 같은 걸 수정 가능한 레코드에 저장
- UI에서만 숨겨놓고 백엔드에서는 다 읽히는 개인 데이터
이런 앱 만드는 중이면 배포하기 전에 제발 이것 좀 확인해라:
- 배포된 자바스크립트 파일에서
sk_,sk-,OPENAI,SECRET,TOKEN,PRIVATE검색해 봐. 프론트엔드에 개인 키 노출되면 절대 안 됨. - 로그아웃 상태에서 Firebase나 Supabase 권한 테스트해 봐.
- 터미널에서 데이터베이스를 직접 읽어봐.
- 관리자 전용 경로는 버튼만 숨기지 말고 백엔드 규칙으로 확실하게 막아놔.
localStorage를 신원 증명 수단으로 쓰지 마.- 유저가 자기 역할, 등급, 잔액, 메시지 수, 구독 상태를 직접 수정하게 두지 마.
AI 툴 쓰면 빨리 만드는 거? 그거 맞음. 근데 앱이 유저, 돈, 중재, 비공개 방, 관리자 패널 같은 거 다루거나 사람들이 중요하게 생각하는 거라면, 배포하기 전에 보안 검토는 필수다.


