제공 서비스
웹 보안 점검 소스코드 분석 (SAST) CRM 보안 진단 다크웹 유출 조회
요금제 스토어 블로그 파트너 마이페이지 무료 보안 점검
보안 2026.03.15 · 조회 89

바이브코딩으로 만든 웹사이트, 해커가 가장 먼저 노리는 5가지

Bolt, Cursor, Replit 같은 AI 코딩 도구로 만든 사이트에는 공통적인 보안 취약점이 존재합니다. 해커들이 가장 먼저 노리는 5가지 포인트를 짚어드립니다.

AI 코딩 도구의 등장으로 비개발자도 웹사이트를 뚝딱 만들 수 있는 시대가 됐습니다. Bolt, Cursor, Replit, Lovable 같은 도구들 덕분에 아이디어만 있으면 몇 시간 안에 그럴싸한 서비스를 런칭할 수 있죠. 이른바 바이브코딩(Vibe Coding)의 시대입니다.

그런데 문제가 있습니다. AI가 생성한 코드는 기능적으로는 동작하지만, 보안 관점에서는 허점투성이인 경우가 많습니다. 해커들은 이 사실을 이미 알고 있고, 바이브코딩으로 만들어진 사이트를 집중적으로 노리고 있습니다.

이 글에서는 실제 침투 테스트 경험을 바탕으로, 바이브코딩 사이트에서 반복적으로 발견되는 5가지 취약점을 정리했습니다.

1. 하드코딩된 비밀키와 API 키

바이브코딩 도구에 "결제 기능 추가해줘"라고 요청하면 AI는 코드를 즉시 생성합니다. 문제는 예시용 API 키나 실제 키를 코드에 직접 박아넣는 패턴이 나온다는 것입니다.

// AI가 생성한 코드 예시
const stripe = require('stripe')('sk_live_XXXXXXXXXXXXXXXXXXXXXXXX');
const supabaseKey = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';

이런 코드가 GitHub에 올라가거나 Replit의 공개 프로젝트로 설정되면, 해커들의 자동화 스캐너가 수초 만에 해당 키를 발견합니다. 실제로 GitHub에는 매 시간 수천 개의 API 키가 노출되고 있으며, 자동화 봇이 이를 수집해 악용합니다.

해커가 노리는 것

  • Stripe, PayPal 등 결제 API 키 → 무단 결제 실행
  • AWS, GCP 클라우드 키 → 서버 장악 또는 고액 과금 유발
  • Supabase 서비스 키 → DB 전체 접근 및 삭제
  • OpenAI API 키 → 무단 사용으로 수십만 원 청구

확인 방법: 코드베이스 전체를 검색해 sk_live, api_key, secret 같은 패턴이 하드코딩되어 있는지 점검하세요. 환경변수(.env)로 분리하는 것이 기본입니다.

2. SQL 인젝션과 ORM 우회

AI 도구들은 빠른 프로토타입을 위해 raw query를 사용하는 경우가 있습니다. 특히 사용자 입력을 그대로 쿼리에 붙이는 패턴이 자주 등장합니다.

# 위험한 패턴
query = f"SELECT * FROM users WHERE email = '{user_input}'"
cursor.execute(query)

공격자가 user_input' OR '1'='1을 입력하면 전체 사용자 데이터가 노출됩니다. 바이브코딩으로 만들어진 Python/Node.js 앱에서 이 패턴이 특히 자주 발견됩니다.

실제 피해 시나리오

  • 회원 전체 이메일/비밀번호 해시 유출
  • 관리자 계정 탈취
  • 데이터베이스 전체 삭제 (DROP TABLE 인젝션)

Django ORM, SQLAlchemy 같은 프레임워크를 올바르게 사용하면 자동으로 방어되지만, AI가 생성한 코드가 항상 이를 준수하지는 않습니다.

3. 인증 없는 관리자 API 엔드포인트

바이브코딩으로 백엔드를 만들 때 흔히 발생하는 패턴입니다. AI가 빠른 구현을 위해 인증 미들웨어를 생략하거나, /api/admin/users 같은 민감한 엔드포인트를 인증 없이 노출시킵니다.

// 인증 없는 관리 API - AI가 자주 생성하는 패턴
app.get('/api/admin/users', async (req, res) => {
  const users = await User.findAll();
  res.json(users); // 누구나 접근 가능!
});

해커들은 /api/, /admin/, /v1/ 같은 경로를 자동으로 스캔합니다. 인증 없이 노출된 관리 API는 전체 사용자 데이터를 외부에 공개하는 것이나 다름없습니다.

해커의 스캔 패턴

  • /api/users, /api/admin, /api/config
  • /.env, /config.json, /settings.py
  • /wp-admin, /phpmyadmin
  • /debug, /test, /dev

4. CORS 설정 오류 (와일드카드 허용)

AI 도구로 API 서버를 만들 때 CORS 에러가 자주 발생합니다. AI는 이 에러를 빠르게 해결하기 위해 모든 출처를 허용하는 설정을 추가합니다.

# AI가 '일단 에러 없애려고' 생성하는 설정
CORS_ALLOW_ALL_ORIGINS = True
# 또는
Access-Control-Allow-Origin: *

이 설정이 인증 쿠키나 토큰과 함께 사용되면 CSRF 공격이 가능해집니다. 악성 사이트가 로그인된 사용자의 권한을 빌려 API를 호출할 수 있게 됩니다.

실제 바이브코딩 프로젝트를 분석했을 때, 약 60% 이상이 CORS를 전체 허용하는 설정을 갖고 있었습니다. 배포 이후 수정되지 않고 그대로 운영되는 경우가 대부분입니다.

5. 에러 메시지와 스택 트레이스 노출

바이브코딩 환경에서는 개발 편의를 위해 디버그 모드를 켜두는 경우가 많습니다. Django의 DEBUG=True, Flask의 debug=True 상태로 프로덕션에 배포되면 에러 발생 시 전체 스택 트레이스가 사용자에게 그대로 노출됩니다.

스택 트레이스에는 다음 정보가 담깁니다:

  • 서버의 절대 파일 경로 (디렉토리 구조 파악 가능)
  • 사용 중인 라이브러리 버전 (알려진 취약점 있는 버전 특정)
  • 환경변수 이름 (존재하는 설정 키 파악)
  • 데이터베이스 연결 정보 일부

이 정보들은 해커에게 정밀 공격을 위한 지도가 됩니다. 개발 환경과 프로덕션 환경을 명확히 분리하고, 프로덕션에서는 반드시 디버그 모드를 비활성화해야 합니다.

지금 당장 점검하는 방법

위 5가지 취약점은 전문가가 아니어도 기본 도구로 확인할 수 있습니다. 하지만 더 체계적인 점검이 필요하다면 자동화된 보안 스캐너를 활용하는 것이 효율적입니다.

CodeScan은 URL 하나만 입력하면 15개 보안 항목을 자동으로 점검하고 등급과 취약점 목록을 제공합니다. 바이브코딩으로 만든 사이트라면 특히 유용합니다.

지금 바로 내 사이트 보안 점검하기 → CodeScan 무료 스캔

바이브코딩 웹보안 해킹

내 사이트도 점검해보세요

CodeScan으로 보안 취약점을 무료로 점검할 수 있습니다.

무료 스캔 시작하기 →
🛒
추천 상품
웹서비스 런칭 전 보안 세팅
런칭 전에 반드시 해야 하는 보안 설정을 원격으로 직접 해드립니다. HTTPS, 환경변수 분리, 보안 헤더…
220,000원 150,000원

🔒 바이브코딩 보안 체크리스트 받기

바이브코딩 보안 체크리스트(PDF)를 무료로 받아보세요.