IT/AI
바이브 코딩, 작동한다고 안전하지 않습니다
기능이 정상 동작하는 바이브 코딩 결과물의 80% 이상이 보안 취약점을 포함하고 있습니다. CMU 연구팀이 실제 GitHub 리포지터리 108개에서 측정한 수치입니다. “일단 돌아가면 된다”는 접근이 어떤 구멍을 만드는지, 공식 자료를 직접 확인했습니다.
바이브 코딩이 뭔지, 지금 얼마나 쓰이는지
바이브 코딩은 2025년 초 AI 연구자 안드레이 카르파티(Andrej Karpathy)가 만든 용어입니다. 코드를 한 줄씩 쓰는 대신, 자연어로 원하는 기능을 설명하면 AI가 코드를 생성하는 방식입니다. 카르파티 본인 표현으로는 “코드가 존재한다는 사실조차 잊어버리는” 개발 방식이고, 콜린스 사전이 2025년 올해의 단어로 선정했습니다.
수치가 이미 꽤 큽니다. GitHub Copilot은 2026년 기준 개발자가 작성하는 코드의 46%를 차지하고 있으며 (출처: GitHub 공식 통계, 2026.01), 조사에 따르면 개발자 75%가 바이브 코딩을 활용하고 있고 그 중 90%가 만족한다고 응답했습니다. (출처: The Information 설문, CMU 논문 인용) 속도는 실제로 빠릅니다. 그 속도가 무엇을 함께 데려오는지가 문제입니다.
카르파티가 바이브 코딩을 소개할 때 명시한 전제는 “일회성 주말 프로젝트”입니다. (출처: Google Cloud 공식 바이브 코딩 가이드, 2026.02.26) 하지만 실제 시장에서는 이 방식이 MVP 개발, 실제 서비스 론칭, 팀 프로젝트까지 그대로 확장되고 있습니다. 처음 전제한 적용 범위와 현실의 사용 범위 사이에 큰 간격이 생긴 게 지금의 문제입니다.
기능이 돌아간다는 게 전부가 아닌 이유
솔직히 말하면, 이 부분이 가장 충격적이었습니다. CMU 연구팀이 발표한 “Is Vibe Coding Safe?” 논문(arxiv: 2512.03262)은 실제 GitHub 리포지터리 108개에서 200개 작업을 AI 에이전트에게 맡긴 뒤 기능 테스트와 보안 테스트를 따로 돌렸습니다. 결과가 딱 이렇게 나왔습니다.
| 조합 | 기능 테스트 통과 | 기능+보안 모두 통과 |
|---|---|---|
| SWE-Agent + Claude 4 Sonnet | 61% | 10.5% |
| OpenHands + Claude 4 Sonnet | 약 42% | 12.5% |
| OpenHands + Gemini 2.5 Pro | 약 35% | 약 10% |
(출처: CMU 연구팀, “Is Vibe Coding Safe?”, arxiv.org/abs/2512.03262)
최고 성능 조합인 SWE-Agent + Claude 4 Sonnet 기준으로, 기능적으로 올바른 코드 중 82.8%가 보안 취약점을 포함하고 있었습니다. 다시 말해, “테스트가 통과됐다”는 것이 “이 코드는 안전하다”를 전혀 보장하지 않습니다.
CodeRabbit이 2025년 12월 470개 오픈소스 GitHub PR을 분석한 결과도 비슷합니다. AI가 작성한 코드는 사람이 작성한 것보다 보안 취약점이 2.74배 더 많이 발견됐습니다. (출처: CodeRabbit 공식 보고서, 2025.12) 수치 자체보다 더 중요한 건, 이게 실험적 사이드 프로젝트가 아니라 실제 서비스에 올라간 프로덕션 코드라는 점입니다.
실제로 어떤 취약점이 생기나 — 4가지 패턴
CMU 논문이 사례 분석에서 밝힌 취약점들은 낯선 개념이 아닙니다. 실제 버그 바운티나 레드팀이 고가치 서비스에서 찾아내는 것과 같은 종류입니다.
Django 비밀번호 검증 — 타이밍 사이드 채널 공격
verify_password() 함수를 AI가 구현할 때, 비밀번호가 None이거나 사용 불가할 경우 즉시 반환하는 코드를 생성했습니다. 응답 속도 차이로 “사용자가 존재하는지”를 외부에서 추론할 수 있게 됩니다. 기능 테스트는 통과하지만, 보안 테스트에서 탈락합니다.
Buildbot HTTP 리다이렉트 — CRLF 인젝션
리다이렉트 URL을 Location 헤더에 그대로 삽입하는 코드를 생성했습니다. 공격자가 \r\n을 삽입하면 위조된 헤더를 추가할 수 있어 세션 고정 또는 캐시 포이즈닝이 가능합니다.
aiohttp_session — 만료된 세션이 계속 유효
복호화 가능한 세션 데이터는 무조건 복원하는 코드를 만들었습니다. max_age 기준으로 만료 여부를 확인하는 로직이 빠져 있어, 이미 만료된 세션이 여전히 유효하게 처리됩니다.
Wagtail CMS — Stored XSS
Draft.js 링크 엔티티를 <a href="...">로 변환할 때 URL 스킴 검증을 하지 않았습니다. javascript: URL을 그대로 허용해 저장형 XSS 공격이 가능합니다.
공통점이 있습니다. AI는 기능 요구사항을 구현하는 건 잘 합니다. 하지만 “타이밍 일관성”, “URL 스킴 검증”, “세션 만료 처리” 같이 보안 불변 조건(security invariant)을 지키는 부분에서 반복적으로 실패합니다. 기능을 이해하는 것과 그 기능이 안전해야 한다는 맥락을 함께 이해하는 건 다른 문제이기 때문입니다.
“보안 신경 써줘”라고 해도 안 되는 이유
CMU 연구팀은 프롬프트로 보안 문제를 해결할 수 있는지도 실험했습니다. 세 가지 방식을 시도했습니다. 첫째는 “보안을 신경 써줘”라는 일반 안내 추가, 둘째는 에이전트가 스스로 관련 CWE를 식별하게 하는 방식, 셋째는 정확한 CVE 번호를 직접 알려주는 방식입니다. 결과는 생각보다 단호했습니다.
보안 프롬프트를 추가하면 보안 통과율이 부분적으로 올라가는 경우도 있습니다. 하지만 동시에 기능 정확도가 5~8%p 낮아집니다. 최종적으로 “기능도 맞고 보안도 맞는” 코드의 비율은 실질적으로 늘지 않았습니다. (출처: CMU 논문, arxiv 2512.03262) 보안을 “더 열심히 생각해줘”라고 요청하면 AI는 기능 구현을 덜 열심히 하게 되는 트레이드오프가 발생합니다.
또 다른 연구 수치도 있습니다. Legit Security가 인용한 연구에서 AI에게 반복적으로 코드를 수정하게 하면 개발 속도는 빨라지지만, 치명적 취약점이 37% 증가했습니다. (출처: Legit Security 공식 블로그, 2025.12.22) 빠르게 고치면 고칠수록 더 많은 구멍이 생긴다는 건데, 바이브 코딩의 특성인 “에러 메시지 붙여넣기 → AI 수정 반복” 루프가 정확히 이 상황을 만들어 냅니다.
결론적으로, 바이브 코딩의 보안 문제는 프롬프트를 더 잘 쓰는 방식으로는 해결되지 않습니다. 모델 외부에서 작동하는 독립적인 검증 체계가 필요합니다.
코드 저작권, 생각보다 훨씬 복잡합니다
보안 이외에 잘 알려지지 않은 함정이 하나 더 있습니다. 바이브 코딩으로 만든 코드는 저작권 보호를 받기 어렵습니다. 대한민국을 포함해 베른 협약 가입국에서는 저작권이 인간의 사상과 감정을 표현한 자연인에게만 귀속됩니다. AI가 생성한 코드는 이 기준에서 저작물로 인정되지 않습니다. (출처: 나무위키 바이브 코딩 항목 법적 쟁점 섹션 / 저작권법 ‘아이디어·표현 이분법’ 원칙)
실용적으로 이것이 의미하는 건 뭘까요. 경쟁사가 내 바이브 코딩 결과물을 그대로 복사해도 법적으로 대응하기 어려울 수 있습니다. 반대로, AI가 학습 과정에서 사용한 오픈소스 코드의 저작권은 원 저작자에게 그대로 남아 있습니다. GitHub Copilot이 저작권 세탁 논란을 받는 이유도 여기에 있습니다. 프로젝트를 서비스로 키울 계획이라면, 법률 검토가 코드 검토만큼 중요한 단계가 됩니다.
바이브 코딩을 쓰면 안 되는 상황이 있습니다
Google Cloud 공식 문서는 바이브 코딩이 적합한 시작점으로 “일회성 프로토타입, 빠른 아이디어 구현”을 명시합니다. (출처: Google Cloud 공식 바이브 코딩 가이드, 2026.02.26) 그 반대 경우, 즉 쓰면 위험해지는 상황도 사실상 공식 문서 안에 정의되어 있습니다. 아래 세 경우입니다.
보안 불변 조건이 가장 많이 요구되는 영역입니다. 바이브 코딩이 일관되게 실패하는 지점과 정확히 겹칩니다. Forbes는 이 영역의 코드는 반드시 사람 리뷰를 거쳐야 한다고 명시합니다. (출처: Forbes, 2026.03.20)
바이브 코딩 특성상 코드 구조와 가독성이 낮습니다. Stack Overflow Developer Survey 2025에 따르면 개발자 66%가 AI 코드의 “거의 맞는데 완전하지 않은” 문제, 즉 생산성 세금(productivity tax)을 경험하고 있습니다. 나중에 누군가 유지보수해야 할 서비스라면 비용이 눈에 보이지 않는 곳에서 누적됩니다.
나무위키 바이브 코딩 항목에 나온 지적이 정확합니다. AI의 정확도는 학습 데이터 양에 비례합니다. 임베디드처럼 vendor-specific 정보가 필요한 영역에서는 잘못된 코드를 자신 있게 내놓는 경우가 많습니다. 환각-피드백-환각 루프만 반복됩니다.
그래도 쓸 거라면 — 실질적인 선택 기준
바이브 코딩을 버리자는 게 아닙니다. GitHub Copilot이 개발자 코드의 46%를 차지하는 지금, 이 흐름을 역행하는 게 오히려 비현실적입니다. Forbes가 정리한 실제로 잘 쓰는 팀들의 방식은 명확합니다. AI가 생성한 코드를 시작점으로만 쓰고, 프로덕션에 올리기 전에 자동화된 보안 스캔을 반드시 거칩니다.
Snyk, Semgrep, CodeRabbit처럼 AI 코드 전용 리뷰 도구를 쓰면 많은 취약점을 배포 전에 잡을 수 있습니다. CMU 연구팀이 제시한 프레임도 같습니다. “AI 개별 결과물을 믿는 게 아니라, AI를 감싸는 가드레일 시스템을 믿는” 구조가 되어야 합니다. 인증, 결제, 개인정보 관련 코드만큼은 사람이 전체 diff를 확인하고 승인하는 단계를 생략하지 말 것을 권장합니다.
속도는 빠릅니다. 그런데 Escape.tech가 공개 배포된 바이브 코딩 앱 5,600개를 스캔했을 때 2,000개 이상의 취약점과 400개의 노출된 API 키·인증 정보가 발견됐습니다. (출처: Escape.tech 연구, Forbes 인용, 2026.03.20) 개발 3일을 아끼고, 보안 사고 대응에 3주를 쓰는 계산이 되지 않으려면 속도와 검증을 세트로 묶는 게 맞습니다.
자주 묻는 질문
바이브 코딩으로 만든 앱, 개인 프로젝트라면 보안 걱정 안 해도 되나요?
+
이메일, 전화번호, 위치정보 등 개인 식별 정보를 다루지 않는 순수 개인 프로젝트라면 위험이 상대적으로 낮습니다. 하지만 사용자 계정이나 로그인 기능이 포함되는 순간부터는 다릅니다. Escape.tech 스캔 사례처럼 API 키가 코드에 그대로 노출되는 일이 쉽게 발생하고, 공개 저장소에 올리면 즉시 검색됩니다.
Claude보다 Gemini가 보안에 더 낫다는 게 맞나요?
+
CMU 연구 결과에서는 기능적으로 맞은 코드 중 보안도 통과하는 비율이 Gemini 2.5 Pro가 27.6%, Claude 4 Sonnet이 17.2%였습니다. 하지만 조건이 있습니다. Gemini는 기능 정확도 자체가 낮았습니다. 특정 CWE 유형에서 Claude가 기능 정확도 58.8%에 보안 통과율 0%인 반면 Gemini는 기능 17.7%에 보안 100%인 사례도 나왔습니다. 모델 하나가 모든 취약점 유형에 강한 경우는 없습니다.
프롬프트에 “보안 코드 작성해줘”라고 추가하면 해결되지 않나요?
+
CMU 연구팀이 정확히 이걸 실험했고, 결론은 “순효과 없음”입니다. 보안 안내를 추가하면 일부 취약점이 줄지만, 기능 정확도가 5~8%p 떨어지면서 최종적으로 기능+보안 모두 통과하는 코드 비율은 거의 변하지 않았습니다. 모델에게 요청하는 방식이 아니라, 모델 외부에서 독립적으로 점검하는 구조가 필요합니다.
바이브 코딩으로 만든 코드, 특허나 저작권 등록이 가능한가요?
+
저작권은 현재로서는 어렵습니다. 베른 협약 가입국(한국 포함)에서 저작권은 자연인의 창작물에만 인정됩니다. AI가 생성한 코드는 저작물로 보호받기 어렵습니다. 특허는 아이디어 자체를 사람이 발명한 것으로 출원 가능하지만, 코드 자체의 저작권 보호는 별개입니다. 서비스로 키울 계획이라면 법률 전문가 검토가 필요합니다.
비개발자도 바이브 코딩으로 실제 서비스를 만들 수 있나요?
+
단순한 프로토타입은 가능합니다. Stack Overflow 블로그에서 비개발자가 Bolt로 앱을 직접 만든 사례가 있는데, 앱 자체는 완성됐지만 보안 취약점이 즉시 발견됐습니다. Stack Overflow Developer Survey 2025에서 개발자의 66%가 AI 코드의 “거의 맞지만 완전하지 않은” 문제를 경험했습니다. 프로토타입으로 아이디어를 빠르게 검증하는 용도로는 충분하지만, 실사용자 데이터를 다루는 서비스로 키우려면 개발자의 검토가 반드시 필요합니다.
마치며
바이브 코딩이 빠른 건 사실입니다. 카르파티가 이 개념을 소개한 지 1년 만에 개발자 75%가 사용하고, GitHub Copilot은 전체 코드의 46%를 차지하고 있습니다. 속도는 실제입니다. 그런데 CMU 연구가 보여준 건, 그 속도가 만들어낸 코드의 80% 이상이 보안 구멍을 안고 있다는 겁니다.
프롬프트를 더 잘 쓴다고 해결되지 않고, AI를 바꿔도 구조적으로 같은 문제가 반복됩니다. 결국 바이브 코딩을 도구로 제대로 쓰려면 “AI가 짰으니 됐겠지”가 아니라 “AI가 짰으니 한 번 더 검증하자”는 판단이 프로세스에 들어가야 합니다. 배포 전 자동 스캔, 인증/결제 코드에 대한 사람 리뷰, 이 두 가지만 지켜도 실제 사고 확률은 크게 달라집니다.
빠른 것과 안전한 것은 기본값으로 같이 오지 않습니다. 직접 설계해야 같이 옵니다.
📚 본 포스팅 참고 자료
- Google Cloud 공식 바이브 코딩 가이드 — cloud.google.com/discover/what-is-vibe-coding
- CMU 연구팀, “Is Vibe Coding Safe?” — arxiv.org/abs/2512.03262
- Forbes, “Vibe Coding Has A Massive Security Problem” (2026.03.20) — forbes.com
- Symbiotic Security, “Vibe Coding Is Not Secured by Default” — symbioticsec.ai
- Stack Overflow Blog, “A New Worst Coder Has Entered the Chat” (2026.01.02) — stackoverflow.blog
본 포스팅 작성 이후 서비스 정책·UI·기능이 변경될 수 있습니다. 인용된 연구 수치는 각 원문 기준이며, 최신 수치는 출처 URL에서 직접 확인하시기 바랍니다. 법률·보안 관련 사항은 전문가와 별도로 검토하시기 바랍니다.


댓글 남기기