한 연구에 따르면 AI가 생성한 코드는 인간이 작성한 코드보다 심각한 문제가 1.7배 더 많고 보안 취약점이 2.74배 더 많은 것으로 나타났습니다. Cursor, Claude Code 또는 GitHub Copilot으로 뭔가를 구축했다면, 당신의 프로젝트에는 가장 흔한 5가지 보안 허점 중 최소 하나 이상이 있을 가능성이 높습니다. 이것이 무엇인지, 그리고 어떻게 찾을 수 있는지 알아보겠습니다.
- 45%의 AI 생성 코드는 최소 하나의 보안 취약점을 포함합니다
- 1.7배 더 많은 심각한 문제가 인간 작성 코드와 비교할 때 발생합니다
- 2.74배 더 보안 취약점에 취약합니다
- 가장 흔한 것: 하드코딩된 API 키, 입력 유효성 검사 누락, 행 수준 보안 없음
- 감시 시간: 일반적인 바이브 코딩 프로젝트의 경우 2-3시간
- 마지막 확인: 2026년 4월
AI 코드가 취약한 이유
AI 코딩 도구는 "작동하는가?"에 최적화되어 있지 "안전한가?"에 최적화되어 있지 않습니다. Cursor에게 "사용자 인증을 추가하라"고 요청하면, 사용자를 인증하는 코드를 생성합니다. 속도 제한, 입력 살균, CSRF 보호 또는 보안 세션 관리를 자동으로 추가하지 않습니다. 왜냐하면 당신이 요청하지 않았기 때문입니다.
AI는 당신이 설명한 대로 정확히 코드를 작성합니다. 보안을 위해서는 자연스럽게 생각하지 않는 것들을 설명해야 합니다. 경계 사례, 악의적인 입력, 무단 액세스 패턴 등입니다. 당신의 프롬프트에 없으면 당신의 코드에도 없습니다.
5가지 가장 흔한 취약점
1. 프론트엔드 코드에 하드코딩된 API 키. AI는 종종 API 키를 클라이언트 측 JavaScript 또는 React 컴포넌트에 직접 배치합니다. 누구나 브라우저 DevTools를 열어서 볼 수 있습니다. 해결책: 모든 키를 환경 변수(.env 파일)로 이동하고 서버 측에서만 액세스합니다. 시간: 15분.
2. 데이터베이스의 행 수준 보안 없음. Supabase를 사용 중이면(바이브 코딩에 흔함), AI 생성 코드는 인증된 모든 사용자에게 다른 모든 사용자의 데이터에 대한 액세스 권한을 제공합니다. 해결책: 행 수준 보안을 활성화하고 사용자별 정책을 추가합니다. 시간: 30분.
3. 서버 측 입력 유효성 검사 없음. 양식이 무엇이든 수용합니다. 스크립트, 크기가 큰 페이로드, SQL 주입 시도 등입니다. AI는 클라이언트 측 유효성 검사를 추가하지만(사용자가 우회할 수 있음) 서버 측 유효성 검사는 건너뜁니다. 해결책: 모든 API 엔드포인트에 Zod 스키마나 유사한 유효성 검사를 추가합니다. 시간: 엔드포인트당 30분.
4. 속도 제한 없음. 누구나 초당 1,000회 API를 호출할 수 있습니다. 조절 없음, 악용 방지 없음. 해결책: Upstash Redis 또는 유사한 것을 통해 속도 제한을 추가합니다. 시간: 20분.
5. 보호되지 않은 경로. 대시보드 페이지, 관리자 패널 및 사용자 데이터 엔드포인트는 사용자 로그인 여부를 확인하지 않고 로드됩니다. 해결책: 모든 보호된 경로에 인증 미들웨어를 추가합니다. 시간: 15분.
이것이 도움이 되셨나요? 우리는 매주 AI 구축 프로젝트용 보안 가이드를 발행합니다. 안전하게 구축하는 독자들과 함께하세요 →
프로젝트를 감시하는 방법
AI 코딩 도구로 구축된 모든 프로젝트에 대해 이 체크리스트를 진행하세요:
전체 코드베이스에서 하드코딩된 키를 검색합니다. 프로젝트 디렉토리에서 grep -r "sk-" . && grep -r "api_key" . && grep -r "secret" .를 실행합니다. 프론트엔드 파일의 모든 일치는 중요한 취약점입니다.
모든 API 엔드포인트에서 입력 유효성 검사를 확인합니다. 각 API 경로 파일을 엽니다. 유효성 검사 없이 req.body를 직접 사용하면 취약합니다.
데이터베이스 보안을 확인합니다. Supabase를 사용 중이면 인증 → 정책 탭을 확인합니다. RLS 정책이 없으면 모든 사용자가 다른 모든 사용자의 데이터를 볼 수 있습니다.
모든 페이지에서 인증을 테스트합니다. 브라우저를 시크릿 모드로 열고(로그인하지 않음) 앱의 모든 페이지로 이동합니다. 대시보드나 사용자별 페이지가 로드되면 해당 경로는 보호되지 않습니다.
속도 제한을 확인합니다. 간단한 스크립트를 사용하여 API 엔드포인트를 빠르게 100번 연속으로 호출해봅니다. 100개 모두 성공하면 속도 제한이 없습니다.
완전한 보안 체크리스트를 보려면 바이브 코딩된 앱 보안 완전 가이드를 참조하세요. 가장 흔한 실수와 해결책을 보려면 모든 바이브 코더가 하는 5가지 보안 실수를 읽으세요.
사고방식의 전환
AI는 작동하는 코드를 작성합니다. 당신은 코드가 안전한지 확인해야 합니다. 이것은 두 가지 다른 기술입니다. AI 코딩 도구에 대한 모든 프롬프트에는 기능 요구사항과 함께 보안 요구사항이 포함되어야 합니다. "속도 제한, 입력 유효성 검사, 보호된 경로가 있는 사용자 인증 추가"는 "사용자 인증 추가"보다 훨씬 더 안전한 코드를 생성합니다.
우리의 프롬프트 옵티마이저는 모든 코딩 프롬프트에 이러한 보안 사양을 자동으로 추가하는 데 도움을 줄 수 있습니다.
이것은 우리가 매주 하는 일입니다. AI 도구, 워크플로우, 솔직한 의견에 대한 한 가지 심화 분석. 과장 없음, 채우기 없음. 우리와 함께하세요 →
공시: 이 기사의 일부 링크는 제휴 링크입니다. 우리는 개인적으로 테스트하고 정기적으로 사용하는 도구만 추천합니다. 전체 공시 정책을 참조하세요.