문은 잠그고 나오셨나요? — 바이브코딩 시대의 기초 보안
AI가 5분 만에 만들어준 앱, 그대로 세상에 내놔도 될까
요즘은 "이런 거 만들어줘" 한마디면 AI가 그럴듯한 앱을 뚝딱 만들어냅니다. 데이터베이스도 붙고, 로그인도 되고, 화면도 멀쩡하죠. 이 속도에 익숙해지면 자연스럽게 이런 생각이 듭니다. "이대로 배포하면 되겠네."
그런데 여기서 한 번은 멈춰야 합니다. AI가 빠르게 짜줬다는 것과 그 코드가 안전하다는 것은 전혀 다른 이야기거든요. 실제로 널리 인용되는 한 조사에서는 AI가 생성한 코드의 약 45%가 기본적인 보안 테스트를 통과하지 못했다고 합니다. 코드가 돌아가는 것과 안전한 것은 별개라는 뜻이죠.
대부분의 사고는 '해킹'이 아니라 '문 안 잠그고 나간 것'
이 대목에서 지레 겁먹을 필요는 없습니다. 오히려 다행인 사실이 하나 있거든요. 요즘 벌어지는 바이브코딩 보안 사고의 상당수는, 누군가 작정하고 뚫은 정교한 공격이 아닙니다. 그냥 문을 안 잠그고 나간 쪽에 가깝습니다. 열쇠를 문 앞에 붙여두고, 창문을 열어둔 채 외출한 셈이죠.
뒤집어 말하면, 기본만 제대로 챙겨도 초기 단계 사고의 대부분은 막을 수 있다는 이야기입니다. 그래서 보안을 거창한 전문 영역으로 여기기보다, "외출 전에 문 잠그기" 같은 습관으로 받아들이는 게 훨씬 현실적입니다.
바이브코더가 가장 자주 열어두는 문들
실제로 우리가 만들 때 가장 흔히 놓치는 구멍 몇 가지를 볼게요. 이름은 어려워 보여도 개념은 단순합니다.
API 키를 코드에 그대로 적어두기. API 키는 우리 집 열쇠 같은 겁니다. 그걸 코드 안에 박아두고 GitHub에 올리면, 열쇠를 대문에 테이프로 붙여둔 것과 같아요. 키는 반드시 코드 바깥(환경 변수 등)에 두고, 실수로 올라간 키는 즉시 폐기·재발급해야 합니다.
데이터베이스를 누구에게나 열어두기. 특히 Supabase 같은 걸 쓸 때 자주 나오는 실수입니다. 접근 권한(RLS, 행 단위 보안)을 설정하지 않으면, 사실상 아무나 남의 데이터를 들여다보거나 고칠 수 있는 상태가 됩니다. "일단 되게" 해두고 이 설정을 미루는 순간이 가장 위험합니다.
로그인은 있는데 '권한'은 없는 경우. 로그인 화면만 만들어두고 "이 사람이 이걸 봐도 되는지"는 확인하지 않는 경우가 많습니다. A 사용자가 주소창의 번호만 슬쩍 바꿔서 B 사용자의 정보를 열어보는 식이죠.
사용자가 넣은 값을 그대로 믿기. 입력창에 들어온 값을 의심 없이 받아 쓰면, 그 틈으로 엉뚱한 명령이 끼어들 수 있습니다(SQL 인젝션이나 프롬프트 인젝션 같은 것들). 바깥에서 들어오는 값은 일단 의심하는 게 기본입니다.
핵심은 '언제' 챙기느냐 — 답은 '지금'
이 모든 것보다 중요한 원칙이 하나 있습니다. "나중에 하자"는 마음을 버리는 것.
트래픽이 좀 모이면, 결제 기능이 붙으면, 시간이 나면 그때 챙기자 — 이렇게 미루다 사고가 난 다음에야 부랴부랴 손대는 경우가 대부분입니다. 지금 사고 난 서비스들도 처음엔 다 "일단 돌아가니까 됐지"에서 출발했을 거예요. 보안은 설계할 때 한 줄, 개발하면서 습관 하나, 배포 전에 점검 한 번 — 이렇게 처음부터 조금씩 얹는 게 나중에 통째로 뜯어고치는 것보다 훨씬 쌉니다.
혼자 다 못 챙기니, 도구의 손을 빌리자
물론 이걸 매번 사람 눈으로 다 잡아내긴 벅찹니다. 그래서 도구를 씁니다. 다행히 요즘은 따로 뭘 켤 것도 없이 지금 쓰는 코딩 에이전트 안에서 바로 점검할 수 있어요.
예를 들어 Claude Code에는 /security-review 같은 명령어가 있어서, 커밋 전에 흔한 취약점(인젝션, 인증 허점 등)을 훑어봐 줍니다. 더 본격적으로는 Snyk, Semgrep, SonarQube 같은 외부 보안 도구를 MCP로 연결해, 에이전트가 코드를 검사받게 할 수도 있고요. 상당수가 무료로 시작할 수 있으니 부담도 적습니다.
단, 오해하면 안 되는 게 하나 있습니다. 도구는 거들 뿐, 대신 다 해주지 않습니다. 경고를 읽고 실제로 고치는 건 결국 사람입니다. 그리고 사고가 터진 뒤에 보안 업체에 항의 메일을 백 번 보낸들, 이미 떠난 고객은 돌아오지 않죠.
결국, 두 가지만 기억하면 됩니다
어려운 원칙은 나중에 필요할 때 배워도 됩니다. 시작하는 단계에서 몸에 새길 건 딱 두 가지예요.
첫째, AI를 너무 믿지 마세요. AI가 짠 코드일수록 오히려 한 번 더 의심하고, 세상에 내놓기 전에 사람이 직접 확인해야 합니다.
둘째, '나중에'를 버리세요. 완벽한 방패는 어차피 세울 수 없습니다. 공격 방법은 계속 진화하니까요. 그러니 원칙을 지키며 지금 시작하는 것, 그게 최선입니다.
우리처럼 회사 안에서 무언가를 만들어 쓰는 사람이라면 더더욱 그렇습니다. 우리가 다루는 건 대개 누군가의 진짜 정보니까요. 다음에 AI로 뭔가 뚝딱 만들어 배포하기 전에, 딱 한 번만 스스로에게 물어봐 주세요. "문은 잠그고 나왔나?" 그 한 번의 점검이, 기초 보안의 시작입니다.

