요즘 많은 개발자가 코드를 작성하는 데 생성형 인공지능(AI)을 사용합니다. 미국 소프트웨어 기업 Sourcegraph 설문조사에 따르면, 개발자 95%가 ‘코드 작성에 도움을 받고자 생성형 AI를 이용한다’고 응답했죠. 시중에는 OpenAI의 ChatGPT, GitHub의 Copilot, Google의 Gemini, Amazon의 CodeWhisperer 등 다양한 코드 생성 AI 도구가 있습니다.
생성형 AI는 짧은 시간에 많은 코드를 작성하는 데 도움이 되죠. 그러나 AI로 생성한 코드에는 부정확하고, 최적의 상태가 아닌 알고리즘이 있을 수 있습니다. 또 잠재적인 보안 결함이 있을 수도 있죠. 이러한 코드를 테스트 없이 프로덕션에 적용하면 소프트웨어에 취약점이 발생하고요. 이는 비즈니스에 부정적 영향을 미칠 수 있습니다.
개발자는 이러한 문제점을 염두에 두고 소프트웨어 개발에 생성형 AI를 분별력 있게 사용해야 하는데요. 이 글에서는 AI로 생성한 코드의 문제점과 그에 따른 유의 사항을 자세히 살펴보고요. GitLab의 AI 기능 모음인 GitLab Duo를 사용해 AI로 생성한 코드의 문제점을 파악하고, 보안과 코드 품질을 향상하는 방법을 알아보겠습니다.
보안 위험
출처=픽사베이IT 업계에서는 ‘AI로 생성한 코드가 안전하지 않다’는 실험·설문 결과가 계속 나오고 있습니다. 미국 스탠퍼드대 연구진은 ‘생성형 AI인 Codex로 생성한 코드가 사이버 보안에 취약하다’는 실험 결과*를 발표했는데요. Codex를 이용한 참가자 집단은 이 도구를 사용하지 않은 집단보다 사이버 보안 측면에서 안전하지 않은 코드를 만들었죠. 미국 사이버 보안 기업 Snyk가 소프트웨어 엔지니어링과 보안 팀원, 리더 537명을 대상으로 설문 조사한 결과, 응답자 91.6%가 “AI 코딩 도구가 안전하지 않은 코드 제안을 가끔 생성했다”고 답했습니다.
문제는 AI로 생성한 코드가 안전하지 않은데도 ‘안전하다’고 생각하는 이들이 많고요. 코드 보안을 향상하려는 노력이 부족하다는 건데요. 스탠퍼드대 연구진의 실험에서 Codex를 이용한 참가자 집단은 ‘Codex로 생성한 코드가 안전하지 않은데도 안전하다’고 믿었습니다. Snyk 설문조사에 따르면, 응답자 80%가 ‘조직 내 개발자들이 AI 보안 정책을 우회한다’고 답했고요. 응답자 25%만 ‘AI 코딩 제안에 포함된 오픈 소스 구성요소의 보안을 확인하기 위해 자동화된 스캐닝 도구를 사용한다’고 했죠. 오픈 소스 라이브러리가 안전한지 보장하고자 적절한 조치를 취하려는 이가 적다는 겁니다.
AI로 코드를 생성하면, 입력 데이터를 제대로 검증하지 않아 SQL 인젝션, 크로스 사이트 스크립팅(XSS) 등 보안 취약점