스니크는 블로그를 통해 깃허브 코파일럿이 기존 코드의 보안 문제를 복제할 수 있다며 “기존의 보안 부채가 있다면 코파일럿을 사용하는 개발사의 보안이 더욱 취약해질 수 있다는 뜻”이라고 설명했다. 그러나 깃허브 코파일럿은 보안 문제가 없는 프로젝트에는 안전하지 않은 코드를 제안할 가능성이 적다. 참조할 수 있는 코드 컨텍스트의 위험성이 적기 때문이다.
스니크는 깃허브 코파일럿, 아마존 코드위스퍼러, 챗GPT 같은 생성형 AI 코딩 어시스턴트의 생산성과 코드 효율에 대한 기여를 인정하면서도, 이들 도구가 코드의 의미를 이해하지 못하기 때문에 판단 또한 하지 못한다고 주장했다.
깃허브 코파일럿은 방대한 기존 코드 리포지토리에서 패턴과 구조를 학습해 코드 스니펫을 생성한다. 스니크는 이러한 접근 방식에는 장점이 있지만, 보안 측면에서는 눈에 띄는 단점도 있다고 지적했다. 코파일럿이 제안하는 코드는 인접 파일에 존재하는 기존 보안 취약점이나 잘못된 관행을 복제하는 실수를 저지를 수 있다는 것이다.
스니크는 AI 어시스턴트가 생성한 코드에서 기존 보안 문제가 재발하는 문제를 완화하려면 다음 단계를 따르라고 조언했다.
- 개발자는 코드를 수동으로 검토해야 한다.
- 보안팀은 정책을 포함해 SAST(안전한 애플리케이션 보안 테스트) 가드레일을 마련해야 한다.
- 개발자는 안전한 코딩 가이드라인을 준수해야 한다.
- 보안팀은 개발팀에 교육과 안내를 제공하고, 팀별로 이슈 백로그의 우선순위를 지정, 분류해야 한다.
- 경영진은 보안 가드레일을 의무화해야 한다.
스니크 데이터에 따르면, 상용 소프트웨어 프로젝트에는 퍼스트 파티 코드에 평균 40개의 취약점이 있고, 이중 약 1/3은 심각도가 높은 문제다. 스닉은 “상용 소프트웨어 프로젝트에서는 취약점을 컨텍스트로 사용해 AI 생성 도구가 코드를 놀이처럼 복제한다”라고 지적했다. 스니크가 상용 프로젝트에서 가장 자주 발견하는 문제는 교차 사이트 스크립팅, 경로 탐색, SQL 주입, 하드코딩된 기밀과 자격 증명이었다. 깃허브는 아직 스닉의 주장에 공식 답변을 내놓지 않았다.
editor@itworld.co.kr