Vibe Coding으로 만든 웹사이트들을 해킹해 봤는데, 발견한 것들 공유함
I HACKED VIBE CODED WEBSITES AND HERE'S WHAT I FOUND
핵심 요약
Vibe Coding으로 제작된 웹사이트들의 보안 취약점을 분석하고, 필수적인 보안 조치를 제안함.
- 레이트 리미팅 — IP당 계정 생성 및 메시지 발송 제한으로 무분별한 남용 방지함
- 이메일 인증 — 계정 생성 후 이메일 인증을 도입하여 타인 이메일 도용 방지함
- API 키 보안 — 프론트엔드에 API 키를 노출하지 말고 서버 측에서 관리하여 비용 폭탄 방지함
- 보안 실습 — 초보 개발자가 보안 취약점을 직접 점검하며 실무 역량을 강화함
여러분 안녕하세요. 어제 제가 여러분의 Vibe Coded 웹사이트를 공유해 주시면 취약점 같은 걸 확인해 보겠다는 글을 올렸는데, 정말 많은 분이 공유해 주셨습니다.
각 댓글에 일일이 답글을 달긴 했지만, 거의 모든 웹사이트에서 공통으로 발견되는 몇 가지 문제점이 있었습니다.
첫 번째는 레이트 리미팅(rate limiting)입니다. 제발 웹사이트에 이걸 추가하세요. 이게 없으면 누구나 여러분의 웹사이트를 악용해서 리소스를 고갈시킬 수 있습니다. 제가 말하는 건, 웹사이트에서 단일 IP 주소로 생성할 수 있는 계정 수에 제한을 두라는 겁니다. 그리고 단일 IP에서 들어오는 이메일 수에도 제한이 있어야 합니다. 확인해 본 결과, 한 곳을 제외하고는 모든(네, 전부 다) 웹사이트의 '문의하기' 페이지에 레이트 리미팅이 없었습니다.
왜 IP를 제한하라고 하냐고요? 그냥 이메일 하나당 메시지 발송 횟수를 제한하면 되지 않냐고요? 안 됩니다. Burp Suite 같은 도구(혹은 간단한 파이썬 스크립트)를 사용하면 공격자가 메시지를 보낼 때마다 이메일 주소를 계속 바꿀 수 있기 때문입니다.
두 번째, 계정 생성 후 이메일 인증을 추가하세요. 이게 없으면 누구나 타인의 이메일로 가입할 수 있는데, 이건 아주 좋지 않습니다.
세 번째, 과거에는 큰 문제였지만 AI가 똑똑해지면서 줄어들고 있는 문제입니다. 바로 Firebase나 Supabase, 혹은 AI 관련 API 키를 프론트엔드에 그대로 노출하는 것입니다. 말 그대로 누구나 '요소 검사(inspect element)'를 통해 여러분의 API 키를 탈취해서 마음대로 사용할 수 있습니다. 장담하는데, 수천 달러의 API 청구서를 받고 싶지는 않으실 겁니다.
(이제 막 사이버 보안과 모의 해킹 등을 시작한 단계라 제가 찾지 못한 다른 취약점들이 있을 수도 있습니다. 그냥 제 실력을 조금 다듬어 보려고 한 일이었고, 진심으로 정말 재미있었습니다. 제게 웹사이트 점검을 맡겨주신 모든 분께 감사드립니다.)

