[논문 리뷰] Using ChatGPT as a Static Application Security Testing Tool
이 논문은 GPT-3.5(ChatGPT를 통해)를 Python 코드의 정적 애플리케이션 보안 테스팅(SAST) 도구로 평가하며, 프롬프트 엔지니어링을 활용해 취약점을 탐지한다. Bandit, Semgrep, SonarQube와 비교해 거짓 양성 및 거짓 음성의 비율이 감소하는 것으로 나타났으며, 특정 설정에서 F1 점수가 최대 0.4101에 이르는 등 보완적인 SAST 보조 도구로서의 잠재력이 높다.
In recent years, artificial intelligence has had a conspicuous growth in almost every aspect of life. One of the most applicable areas is security code review, in which a lot of AI-based tools and approaches have been proposed. Recently, ChatGPT has caught a huge amount of attention with its remarkable performance in following instructions and providing a detailed response. Regarding the similarities between natural language and code, in this paper, we study the feasibility of using ChatGPT for vulnerability detection in Python source code. Toward this goal, we feed an appropriate prompt along with vulnerable data to ChatGPT and compare its results on two datasets with the results of three widely used Static Application Security Testing tools (Bandit, Semgrep and SonarQube). We implement different kinds of experiments with ChatGPT and the results indicate that ChatGPT reduces the false positive and false negative rates and has the potential to be used for Python source code vulnerability detection.
연구 동기 및 목표
- 대규모 언어 모델, 특히 ChatGPT를 활용해 Python 코드의 소프트웨어 취약점을 탐지할 수 있는지의 가능성을 평가하는 것.
- 기존의 SAST 도구인 Bandit, Semgrep, SonarQube와 비교해 ChatGPT의 취약점 탐지 정확도를 평가하는 것.
- ChatGPT를 사용해 프롬프트 엔지니어링을 통해 정적 코드 분석에서 거짓 양성 및 거짓 음성 비율을 줄일 수 있는지 조사하는 것.
- GPT-3.5를 전통적인 SAST 도구의 보조 도구로 활용해 결과를 향상시킬 잠재력을 탐색하는 것.
제안 방법
- 연구는 공통 취약점 분류(CWE) 카테고리 기반으로 Python 소스 코드의 보안 취약점을 탐지하도록 ChatGPT를 지시하기 위해 프롬프트 엔지니어링을 사용한다.
- 네 가지의 별도 실험 설정을 설계함: 이진 분류, 취약점 목록 선택, SAST 보조 역할, 자유형 텍스트 분류.
- ChatGPT는 알려진 취약점이 포함된 세 가지 데이터셋에서 평가되었으며, 정밀도, 재현율, F1 점수 지표를 사용해 Bandit, Semgrep, SonarQube와 결과를 비교하였다.
- 모델 성능 향상을 위해 자연스럽고 표현력 있는 프롬프트를 설계하였으며, 이는 이전의 LLM 프롬프트 평가 연구의 지침에 기반한다.
- 평가 지표는 취약점 데이터셋의 기준 레이블을 사용해 계산되었으며, 다양한 프롬프트 설정에서 결과를 분석하였다.
- 실험은 Python 코드에 국한되며, 이는 이 언어의 보편성과 보안에 민감한 응용 분야에서의 보편성 때문이었다.

실험 결과
연구 질문
- RQ1ChatGPT는 프롬프트 기반 지시를 통해 Python 소스 코드의 보안 취약점을 효과적으로 탐지할 수 있는가?
- RQ2정밀도, 재현율, F1 점수 측면에서 ChatGPT의 취약점 탐지 성능은 Bandit, Semgrep, SonarQube와 같은 기존 SAST 도구와 비교해 어떻게 되는가?
- RQ3ChatGPT를 SAST 보조 도구로 사용할 경우, 존재하는 SAST 도구의 정확도를 향상시켜 거짓 양성 및 거짓 음성 비율을 줄일 수 있는가?
- RQ4다양한 프롬프트 설정이 ChatGPT의 취약점 탐지 결과의 신뢰성과 일관성에 어떤 영향을 미치는가?
주요 결과
- SAST 보조 역할 설정에서 ChatGPT는 F1 점수 0.1808을 기록했으며, 동일한 설정에서 SonarQube(F1: 0.0743), Bandit(F1: 0.1022), Semgrep(F1: 0.1812)를 모두 앞서는 성능을 보였다.
- 자유형 텍스트 분류 작업에서 ChatGPT는 F1 점수 0.1808을 기록했으며, 규칙 기반 SAST 도구와 비교해 중간 정도이지만 경쟁 가능한 성능을 보였다.
- 이진 분류 실험에서 ChatGPT는 F1 점수 0.4101을 기록했으며, Semgrep(F1: 0.1812), Bandit(F1: 0.1022), SonarQube(F1: 0.0743)를 크게 앞서는 성능을 보였다.
- 여러 실험에서 ChatGPT는 모든 세 가지 기준 SAST 도구보다 낮은 거짓 양성 및 거짓 음성 비율을 보였으며, 특히 이진 분류 설정에서 두드러졌다.
- 모델 성능은 프롬프트 설계에 민감했으며, 최적화된 프롬프트가 유의미하게 더 좋은 결과를 낳는 것으로 나타나, 신뢰성 있는 출력을 위해 프롬프트 엔지니어링이 필수적임을 시사했다.
- 다른 결과들에도 불구하고, 본 연구는 GPT-3.5(비 GPT-4)에 의존하고, 데이터셋 커버리지의 격차가 있으며, 외부 서버에 소스 코드를 업로드함에 따른 보안 우려가 있음을 인정했다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.