2026-10-13 수정 '2.74배'의 출처를 'The Register 2026년 3월 실증 분석'에서 CodeRabbit 보고서(2025-12-17)로 바로잡고, 의미를 'AI 생성 코드 취약점 2.74배'에서 '보안 항목별 최대 배율(XSS)'로 고쳤습니다. 보안 이슈 전체(약 1.57배)와 항목별 배율은 이 보고서를 인용한 The Register 보도(2025-12-17)를 따랐습니다. 1차 출처로 확인하지 못한 '취약점 포함 비율(사람 약 20%, AI 40~62%)'과 월별 CVE 수치는 삭제했습니다.

AI 코딩의 숨겨진 대가

AI 코딩 도구를 쓰면 코드는 빠르게 늘어납니다. 하지만 AI 코드 리뷰 서비스 회사 CodeRabbit이 2025년 12월 17일 공개한 보고서에 따르면, AI가 함께 작성한 풀 리퀘스트(PR)는 사람만 작성한 PR보다 이슈가 약 1.7배 많았습니다. CodeRabbit은 '보안 이슈가 최대 2.74배'라고 밝혔는데, 같은 보고서를 인용한 The Register 보도에 따르면 보안 이슈 전체는 약 1.57배였고 2.74배는 XSS 항목의 배율이었습니다.

데이터가 말하는 현실

지표 사람만 작성한 PR AI가 함께 작성한 PR
분석한 PR 150건 320건
PR 1건당 이슈 6.45건 10.83건(약 1.7배)
보안 이슈 전체 기준 약 1.57배
보안 항목: XSS 기준 2.74배
보안 항목: 안전하지 않은 객체 참조 기준 1.91배
보안 항목: 부적절한 비밀번호 처리 기준 1.88배
보안 항목: 안전하지 않은 역직렬화 기준 1.82배

보안 이슈 전체와 항목별 배율은 보고서를 인용한 The Register 보도(2025-12-17) 기준입니다. 배율은 각 집단의 PR 100건당 이슈 수를 비교한 값이며, 취약점이 포함된 PR의 비율을 뜻하지는 않습니다. CodeRabbit은 가장 두드러진 패턴으로 부적절한 비밀번호 처리와 안전하지 않은 객체 참조를 꼽았습니다. AI에서만 나타난 취약점 유형은 없었지만, 거의 모든 유형이 AI가 함께 작성한 PR에서 더 많이 나타났습니다.

수치를 읽을 때 알아 둘 점도 있습니다.

  • 공개 GitHub 저장소의 PR 470건을 CodeRabbit의 이슈 분류 기준으로 비교한 결과입니다. 여러분의 코드에서도 같은 비율이 나온다는 뜻은 아닙니다.
  • '최대 2.74배'는 XSS 한 항목의 배율입니다. 보안 이슈 전체는 약 1.57배였습니다.
  • CodeRabbit은 AI 공동 작성 표시가 없는 PR을 사람이 작성한 것으로 간주했습니다. 그래서 보고서 스스로 '사람이 작성했다고 분류한 PR이 모두 사람만 작성했다고 보장할 수는 없다'고 한계를 밝혔습니다.
  • CodeRabbit은 AI 코드 리뷰 도구를 파는 회사이고, 같은 글에서 자사 도구를 권합니다.

AI가 쓴 코드가 공개 취약점으로 이어진 사례를 모으는 곳도 있습니다. 조지아공대 SSLab의 Vibe Security Radar는 공개된 CVE·GHSA 가운데 AI가 작성한 변경, 취약한 동작, 이를 막은 수정이 같은 공격 경로에서 확인된 경우만 목록에 올립니다. 다만 이 목록은 스스로 '전수 조사가 아닌 하한선'이라고 하고, 'AI가 사람 코드보다 위험하다고 주장하지 않으며 비율 비교 자료도 아니다'라고 밝힙니다.

왜 AI 코드에 취약점이 생기는가

1. 학습 데이터의 한계

AI 모델은 인터넷의 코드를 학습합니다. 여기에는 오래된 패턴, 보안이 고려되지 않은 예제 코드, 알려진 취약한 라이브러리 사용 코드가 포함되어 있습니다.

2. 맥락 부재

AI는 요청받은 코드 밖의 시스템 구조, 인증 흐름, 데이터 민감도를 충분히 반영하지 못하는 경우가 많습니다. 단위 코드는 동작해도 전체 시스템 관점에서 보안 결함이 생길 수 있습니다.

3. 개발자의 과신

"AI가 만든 코드니까 괜찮겠지"라는 심리가 코드 리뷰를 소홀하게 만들 수 있습니다. 스탠퍼드대 연구진의 실험(ACM CCS 2023)에서는 AI 도우미를 쓴 참가자가 쓰지 않은 참가자보다 덜 안전한 코드를 작성했고, 자기 코드가 안전하다고 믿는 경향은 더 컸습니다.

흔한 AI 생성 코드 취약점

  1. 부적절한 비밀번호 처리: 정해진 처리 방식을 거치지 않고 비밀번호를 다룸(평문 저장, 약한 해시, 코드에 직접 쓰기 등)
  2. 안전하지 않은 직접 객체 참조(IDOR): 요청한 사용자가 해당 데이터에 접근하거나 이를 변경할 권한이 있는지 확인하지 않음
  3. SQL Injection: 입력값 검증 없이 쿼리에 직접 삽입
  4. XSS: 사용자 입력을 이스케이프 없이 HTML에 출력
  5. 하드코딩된 시크릿: API 키, 비밀번호를 소스 코드에 직접 포함
  6. 안전하지 않은 역직렬화: 신뢰할 수 없는 데이터의 역직렬화

1·2번은 CodeRabbit이 가장 두드러졌다고 꼽은 유형이고, 4번 XSS(2.74배)와 6번 역직렬화(1.82배)도 보고서의 보안 항목에 들어 있습니다(배율은 The Register 보도 기준).

AI 코딩 시대의 보안 워크플로우

코드 생성 → 코드 리뷰 → 보안 스캔 → 테스트 → 배포
                         ↑ 여기가 빠지면 안 됩니다

보고서는 인증정보 처리를 한곳으로 모으고, 정해진 방식 밖에서 비밀번호를 다루는 코드를 막고, 정적 분석(SAST)과 보안 린터를 자동으로 돌리라고 권합니다.

배포한 주소에서 밖으로 보이는 설정과 노출 항목은 CodeScan 무료 스캔으로 먼저 확인할 수 있습니다. CodeScan은 입력한 URL을 밖에서 점검하므로 소스 코드 안의 비밀번호 처리나 객체 참조 오류까지는 보지 못합니다. 로그인 이후 권한과 업무 흐름까지 확인하려면 AI 심화 취약점 진단의 웹·API 진단을 검토하세요.

참고 자료

우리 서비스, 지금 안전한가?

URL 하나로 주요 보안 항목을 자동 진단. 등급 + 수정 가이드까지 자동 생성.