Core Concepts
ChatGPT 생성 코드와 StackOverflow 답변 코드의 보안 취약점을 비교한 결과, ChatGPT 코드가 StackOverflow 코드보다 20% 적은 취약점을 가지고 있었지만, 두 플랫폼 모두 다양한 유형의 취약점을 포함하고 있어 개발자들의 주의가 필요하다.
Abstract
이 연구는 ChatGPT와 StackOverflow의 보안 취약점을 비교하여 개발자들의 코드 선택에 대한 인식을 높이고자 했다. 연구진은 Java 보안 관련 질문과 답변 108개를 수집하여 분석했다.
먼저, ChatGPT에 동일한 질문을 제시하고 생성된 코드를 수집했다. 그 다음 CodeQL 정적 분석 도구를 사용하여 두 플랫폼의 코드 취약점을 탐지하고 비교했다.
분석 결과, ChatGPT 생성 코드에는 248개의 취약점이 발견되었고, StackOverflow 답변 코드에는 302개의 취약점이 발견되었다. 이는 ChatGPT 코드가 StackOverflow 코드보다 20% 적은 취약점을 가지고 있음을 보여준다. 하지만 통계적으로 유의미한 차이는 아니었다.
취약점 유형 분석에서는 ChatGPT가 19가지 유형의 CWE(Common Weakness Enumeration)를 가지고 있었고, StackOverflow는 22가지 유형의 CWE를 가지고 있었다. 따라서 ChatGPT가 StackOverflow보다 적은 유형의 취약점을 생성했다.
특히 CWE-327(취약한 암호화 알고리즘 사용), CWE-328(약한 해시 사용), CWE-335(PRNG 시드 사용 오류), CWE-798(하드코딩된 자격 증명 사용) 등의 취약점에서 ChatGPT와 StackOverflow 간 큰 차이가 있었다.
결과적으로 두 플랫폼 모두 다양한 보안 취약점을 포함하고 있어, 개발자들은 외부 소스의 코드를 무분별하게 사용하지 않도록 주의해야 한다. 대신 정적 분석 도구와 소프트웨어 테스트 등 보안 실천 방법을 적용하여 위험을 줄여야 한다.
Stats
ChatGPT 생성 코드에서 발견된 취약점 수: 248개
StackOverflow 답변 코드에서 발견된 취약점 수: 302개
Quotes
"ChatGPT 생성 코드에는 248개의 취약점이 발견되었고, StackOverflow 답변 코드에는 302개의 취약점이 발견되었다."
"ChatGPT가 19가지 유형의 CWE를 가지고 있었고, StackOverflow는 22가지 유형의 CWE를 가지고 있었다."