AI가 작성한 코드는 작동한다. 정말 안전할까?
들어가며
AI 코딩 에이전트는 자연어 지시만으로 함수와 파일을 작성하고, 저장소 전체의 소스 트리를 구성할 수 있다. 그러나 프로그램이 실행된다는 사실이 안전하다는 뜻은 아니다. Last Secure Code Benchmark는 보안 요구사항을 별도로 제시하지 않은 일반적인 기능 명세만으로도 에이전트가 취약점 없는 코드를 만들 수 있는지 검증했다.
무엇을 평가했나
연구진은 실제 취약점 150개에서 출발해 450개의 과제를 구성했다. 대상 언어는 Java, C, C++, JavaScript, Python, PHP, Go 등 7개이며, 24개 CWE 범주를 포함한다. 이 가운데 2025년 CWE Top 25의 21개 취약점과 KEV Top 10의 8개 약점도 다뤘다.
과제는 세 가지 바이브 코딩 상황을 재현한다. 하나의 함수를 완성하는 작업, 파일 하나를 작성하는 작업, 저장소의 소스 트리를 처음부터 구축하는 작업이다. 명세에는 기능만 담고 입력 검증이나 권한 통제 같은 보안 지침은 직접 언급하지 않았다. 결과물은 공개되지 않은 기능 테스트와 보안 테스트로 각각 평가됐다.
핵심 결과
- 6개 최첨단 코딩 에이전트의 기능 테스트 통과율은 73.6~91.3%였다.
- 기능과 보안 검사를 함께 통과한 비율은 16.4~25.1%로 떨어졌다.
- 가장 높은 성능을 보인 Claude Fable 5도 두 조건을 모두 만족한 비율은 25.1%였다.
- 모든 바이브 코딩 설정을 합치면, 최우수 모델이 통과한 취약점 시나리오는 12%에 불과했다.
왜 중요한가
이 결과는 AI 코딩 도구를 사용할 수 없다는 의미가 아니다. 기능적 성공만으로는 소프트웨어 품질과 보안을 판단할 수 없다는 뜻에 가깝다. 에이전트는 요구된 업무 로직을 구현하면서도 신뢰할 수 없는 입력, 위험한 API 호출, 인증과 권한의 경계, 예외 상황을 놓칠 수 있다. 프롬프트에 보안 조건이 없으면 안전한 기본값보다 빠르고 그럴듯한 구현을 우선할 가능성도 있다.
개발팀은 생성된 코드에 기능 테스트만 적용해서는 안 된다. 정적 분석, 의존성 및 비밀정보 검사, 퍼징, 위협 모델을 이해하는 개발자의 리뷰를 여러 단계로 결합해야 한다. 인증, 결제, 파일 처리, 외부 네트워크 서비스처럼 위험도가 높은 모듈에는 더 엄격한 검증 기준이 필요하다.
이번 결과는 코딩 에이전트 평가 방식에도 시사점을 준다. 컴파일 성공이나 단위 테스트 점수만으로는 실제 배포 준비도를 설명하기 어렵다. 보안 요구가 명시되지 않은 상황에서의 기본 동작, 여러 파일에 걸친 변경, 장기 저장소 작업에서도 취약점을 피하는지를 함께 측정해야 한다. 현재의 바이브 코딩은 검증이 끝난 자동 개발이 아니라, 보안 검토를 전제로 한 구현 보조 수단으로 보는 편이 타당하다.
댓글
로그인 상태 확인 중…
댓글 불러오는 중…