무슨 일이 밝혀졌나
2026년 3월, 보안 코드 리뷰 전문 기업 DryRun Security가 주요 AI 코딩 에이전트 3종 — Anthropic의 Claude Code(Sonnet 4.6), OpenAI Codex(GPT 5.2), Google Gemini(2.5 Pro) — 을 대상으로 대규모 보안 평가를 실시했다. 연구진은 두 개의 앱(게임 앱, 웹 앱)을 AI 에이전트에게 빌드하게 한 뒤 코드를 38번 스캔했고, 총 143건의 보안 이슈를 발견했다. 30개의 풀 리퀘스트(PR) 중 26개에 취약점이 포함되어 있었다.
Help Net Security와 DarkReading에 따르면, 발견된 취약점은 SQL 인젝션, 크로스사이트 스크립팅(XSS)처럼 이미 10년 넘게 알려진 유형이 대부분이었다. AI가 "새로운 코드"를 작성했지만 결과물은 과거의 실수를 그대로 반복하고 있었던 셈이다.
이와 별도로, CVE-2026-21852로 등록된 취약점도 주목할 만하다. Claude Code에서 프로젝트 설정 파일(.claude/settings.local.json)을 통해 API 키를 탈취할 수 있는 경로가 확인되었다. 악성 프로젝트를 클론하는 것만으로 민감 정보가 유출될 수 있는 위험이다.
어떤 취약점이 반복되는가
DryRun Security는 10개 취약점 카테고리를 식별했다. 가장 빈번하게 발생한 유형은 접근제어 미흡(Broken Access Control)이었다. 이는 사용자 인증은 있지만 "이 사용자가 이 데이터에 접근할 권한이 있는가"를 확인하지 않는 문제로, OWASP Top 10에서도 1위를 차지하는 대표적 취약점이다.
주요 취약점 카테고리를 정리하면 다음과 같다:
| 카테고리 | 설명 | |----------|------| | 접근제어 미흡 | 권한 검증 없이 데이터 접근 허용 | | 비즈니스 로직 실패 | 할인 중복 적용, 잔액 음수 등 로직 허점 | | OAuth 구현 오류 | state 파라미터 누락, 토큰 검증 미흡 | | 레이트 리밋 누락 | API 엔드포인트에 요청 제한 없음 | | SQL 인젝션 | 사용자 입력을 쿼리에 직접 삽입 | | XSS | 사용자 입력을 이스케이프 없이 렌더링 | | 하드코딩된 시크릿 | API 키, 비밀번호를 코드에 직접 작성 | | 불안전한 직접 객체 참조 | ID 조작으로 타인의 리소스 접근 가능 | | 부적절한 에러 처리 | 스택 트레이스, DB 정보가 에러 메시지에 노출 | | 입력 검증 부재 | 파일 업로드, 경로 탐색 등 입력 필터링 없음 |
AI 에이전트들은 "동작하는 코드"를 만드는 데는 능숙했지만, 보안 관점의 방어적 프로그래밍에서는 일관되게 약점을 보였다. SecuritySandman의 분석에 따르면, 에이전트들이 보안 요구사항을 명시적으로 지시받지 않으면 기본적으로 "행복한 경로(happy path)"만 구현하는 경향이 뚜렷했다.
에이전트별 성적 비교
에이전트별 취약점 수를 비교하면 의미 있는 차이가 드러난다.
게임 앱 최종 결과:
- Claude Code(Sonnet 4.6): 8건
- Gemini(2.5 Pro): 7건
- Codex(GPT 5.2): 6건
웹 앱 결과 (기준선 9건에서 시작):
- Claude Code: 13건 (기준선 대비 +4)
- Gemini: 11건 (기준선 대비 +2)
- Codex: 8건 (기준선 대비 -1)
The Hacker News에 따르면, Codex가 상대적으로 가장 적은 취약점을 생성했지만 어떤 에이전트도 "안전하다"고 말할 수 있는 수준은 아니었다. 30개 PR 중 26개(약 87%)에 취약점이 포함된 사실은 현재 AI 코딩 에이전트를 코드 리뷰 없이 사용하는 것이 얼마나 위험한지를 보여준다.
특히 웹 앱에서는 에이전트가 코드를 수정할수록 오히려 취약점이 늘어나는 현상도 관찰됐다. AI가 새 기능을 추가하면서 기존 보안 조치를 무력화하거나 새로운 공격 경로를 열어버리는 패턴이 반복된 것이다.
AI 코딩 시 보안 체크리스트
AI 코딩 에이전트를 활용하더라도 보안 품질은 결국 사람의 몫이다. 다음 항목들을 매 PR마다 확인하자.
-
접근제어 확인: 모든 API 엔드포인트에 인증(Authentication)과 인가(Authorization)가 모두 구현되어 있는가? "로그인 했다"와 "이 데이터를 볼 권한이 있다"는 다른 문제다.
-
OAuth 구현 점검: state 파라미터로 CSRF를 방지하고, 토큰 유효성 검증이 서버 측에서 이루어지는가?
-
레이트 리밋 설정: 로그인, 비밀번호 재설정, API 호출 등 민감한 엔드포인트에 요청 속도 제한이 있는가?
-
입력 검증: 사용자 입력은 항상 서버 측에서 타입, 길이, 범위를 검증하고 이스케이프 처리하는가?
-
시크릿 관리: API 키, DB 비밀번호가 코드에 하드코딩되지 않고 환경 변수나 시크릿 매니저를 통해 관리되는가?
-
SAST 도구 통합: AI가 생성한 코드를 자동으로 스캔하는 정적 분석 도구(Semgrep, CodeQL 등)를 CI 파이프라인에 포함시켰는가?
-
비즈니스 로직 수동 검토: 금액 계산, 권한 변경, 데이터 삭제 등 비즈니스 로직은 AI 스캐너도 놓치기 쉽다. 반드시 사람이 검토한다.
AI 코딩 에이전트는 생산성을 높이는 강력한 도구이지만, 보안은 여전히 자동화할 수 없는 영역이다. "AI가 짜줬으니 괜찮겠지"라는 안일함이 가장 위험한 취약점일 수 있다.
참고 자료