AIㆍML / 개발자 / 보안

글로벌 칼럼 | 챗GPT가 작성한 코드와 악성코드

Lou Steinberg | InfoWorld 2023.11.07
개발자는 오랫동안 스택 오버플로우(Stack Overflow) 같은 사이트를 코드 예제와 도움을 받을 수 있는 커뮤니티로 이용했다. 하지만 이런 커뮤니티가 챗GPT와 같은 생성형 AI 툴로 빠르게 대체되고 있다. 오늘날 개발자는 샘플 코드 작성, 한 프로그래밍 언어에서 다른 프로그래밍 언어로 변환, 테스트 케이스 작성 등을 AI 챗봇에 요청한다. 챗봇은 매우 인상적인 생산성 향상 효과를 가져오며 개발팀의 정식 구성원으로 자리를 잡는 수준에 이르렀다.
 
ⓒ Getty Images Bank

하지만, 한 가지 문제가 있다. 생성형 AI 챗봇은 코딩을 어떻게 배웠을까? 설계 오류, 버그, 해커가 삽입한 악성코드가 넘쳐나는 수십억 줄의 오픈소스 소프트웨어를 읽으면서 배울 수밖에 없다. 오픈소스로 AI 도구를 학습시키는 것은 은행을 털고 달아난 강도에게 고등학교 운전 교육을 가르치는 것과 같다. 나쁜 것을 가르치려는 편향성이 내재되어 있다.

다양한 리포지토리에 매년 10억 건이 넘는 오픈소스 기여가 이뤄지고 있다. 2022년에는 깃허브에만 4억 건이 넘는 코드가 올라왔다. 이는 불량 코드가 유입될 수 있는 가능성이 클 뿐만 아니라 문제를 탐색할 수 있는 거대한 '공격 표면'이다. 이런 오픈소스가 일단 AI 모델을 학습하는 데 사용되면, AI 모델이 생성하는 모든 코드는 학습한 내용에 영향을 받는다.

생성형 AI 챗봇이 작성하고 개발자가 사용하는 코드는 면밀히 검사할 수 있으며, 검사해야 한다. 안타깝게도 개발자가 챗봇의 도움을 가장 많이 받을 때는 코드를 직접 작성하기에 충분한 지식이 부족할 때이다. 즉, 생성된 코드에 의도적으로 숨겨진 백도어나 악성코드가 있는지 제대로 파악할 수 있는 역량도 부족하다는 의미이다.

필자는 링크드인에서 AI가 생성한 코드의 품질과 보안을 얼마나 주의 깊게 검사하는지 물었다. "매우, 매우 신중하게", "그래서 생성형 AI를 코드 생성에 사용하지 않는다", "사용하기에는 너무 이르다", "임베디드 멀웨어와 알려진 설계 취약점의 위험이 너무 크다" 등 다양한 답변이 돌아왔다. 하지만 많은 기업이 생성형 AI를 사용해 코드를 개발하고 있으며, 더 많은 기업이 이런 흐름에 동참하고 있다는 사실은 변함이 없다.

그렇다면 기업은 어떻게 해야 할까? 먼저, 생성형 AI가 작성한 코드를 주의 깊게 검사해야 한다. 이때 검사 방법이 중요하다. AI가 작성한 코드는 매번 바뀌기 때문에 잘 알려진 악성코드 시그니처와 일치할 것이라 생각해서는 안 된다. 대신 정적 동작 스캔과 소프트웨어 구성 분석(SCA)을 사용해 생성된 소프트웨어에 설계 결함이 있는지 또는 악의적인 작업을 수행할 수 있는지 확인해야 한다.

당연한 이야기일 수도 있지만, 고위험 코드를 생성하는 동일한 생성형 AI가 테스트 케이스를 작성해 코드가 위험한지 확인하는 것은 좋은 생각이 아니다. 여우에게 닭장에 여우가 있는지 확인하라고 시키는 것이나 마찬가지다. 

생성형 AI가 잘못된 코드를 생성할 위험은 현실이지만, 생성형 AI를 사용한 코딩의 이점도 무시할 수 없다. 결국 생성된 코드를 신뢰하려면 오래된 격언을 적용해야 한다. “신뢰하되 검증하라.”

* Lou Steinberg는 사이버 보안 연구소이자 인큐베이터인 CTM 인사이트의 설립자이다.
editor@itworld.co.kr
Sponsored

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.