Skip to main content
QUICK REVIEW

[논문 리뷰] ChatGPT for Vulnerability Detection, Classification, and Repair: How Far Are We?

Michael C. Fu, Chakkrit Tantithamthavorn|arXiv (Cornell University)|2023. 10. 15.
Software Engineering Research인용 수 6
한 줄 요약

이 연구는 190,000개 이상의 C/C++ 함수를 사용하여 ChatGPT(gpt-3.5-turbo 및 gpt-4)의 소프트웨어 취약성 태스크—검출, 분류, 심각도 추정, 복구—에 대한 평가를 수행한다. 비록 막대한 규모임에도 불구하고 ChatGPT는 특화된 코드 기반 모델에 비해 성능이 크게 열등하여, 효과적인 취약성 예측 및 복구를 위해서는 도메인 특화 미세조정이 필수적임을 시사한다.

ABSTRACT

Large language models (LLMs) like ChatGPT (i.e., gpt-3.5-turbo and gpt-4) exhibited remarkable advancement in a range of software engineering tasks associated with source code such as code review and code generation. In this paper, we undertake a comprehensive study by instructing ChatGPT for four prevalent vulnerability tasks: function and line-level vulnerability prediction, vulnerability classification, severity estimation, and vulnerability repair. We compare ChatGPT with state-of-the-art language models designed for software vulnerability purposes. Through an empirical assessment employing extensive real-world datasets featuring over 190,000 C/C++ functions, we found that ChatGPT achieves limited performance, trailing behind other language models in vulnerability contexts by a significant margin. The experimental outcomes highlight the challenging nature of vulnerability prediction tasks, requiring domain-specific expertise. Despite ChatGPT's substantial model scale, exceeding that of source code-pre-trained language models (e.g., CodeBERT) by a factor of 14,000, the process of fine-tuning remains imperative for ChatGPT to generalize for vulnerability prediction tasks. We publish the studied dataset, experimental prompts for ChatGPT, and experimental results at https://github.com/awsm-research/ChatGPT4Vul.

연구 동기 및 목표

  • 대규모 언어 모델(ChatGPT 등)을 사용한 종단 간 소프트웨어 취약성 태스크의 효과성을 평가하는 것.
  • 소프트웨어 취약성 검출 및 복구에 특화된 최신 기술 기반의 미세조정된 언어 모델과 대비하여 ChatGPT의 성능을 비교하는 것.
  • ChatGPT의 막대한 파라미터 수(최대 1.7조 개)가 미세조정 없이도 취약성 태스크에 대해 우수한 일반화 능력을 제공하는지 조사하는 것.
  • 실제 소프트웨어 시스템에서 오픈소스 LLMs인 ChatGPT를 사용하여 자동 취약성 검출, 분류, 심각도 추정 및 패치 생성이 가능한지 평가하는 것.
  • LLM이 사이버보안 관련 소프트웨어 공학 태스크에서 실용적인 성능을 달성하기 위해 도메인 특화 미세조정이 필수적인지 확인하는 것.

제안 방법

  • 파rameter 미세조정 없이 프롬프트 엔지니어링을 사용하여 ChatGPT의 두 버전(gpt-3.5-turbo 및 gpt-4)을 활용하였다.
  • 실제 도메인 데이터셋 두 개를 사용: Big-Vul(190,000개의 C/C++ 함수)과 CVEFixes를 활용하여 네 가지 취약성 태스크에서 평가하였다.
  • 함수/라인 수준의 취약성 예측, 취약성 유형 분류(CWE-ID), 심각도 추정(CVSS 점수), 자동 패치 복구를 위한 태스크별 프롬프트를 설계하였다.
  • ChatGPT의 성능을 AIBugHunter, CodeBERT, GraphCodeBERT, VulExplainer의 네 가지 미세조정된 기준 모델과 비교하였다.
  • 표준 평가 지표를 사용하여 결과를 평가: F1 점수, 상위 10개 정확도, 다중분류 정확도, 평균 제곱오차(MSE), 평균 절대오차(MAE), 복구 태스크의 %Perfect Prediction(%PP).
  • 공정한 비교를 위해 그리디 디코딩을 사용하였으며, 패치 유사도 평가를 위해 BLEU 및 METEOR 점수도 포함하였다.

실험 결과

연구 질문

  • RQ1ChatGPT는 함수 수준 및 라인 수준의 취약성 예측에서 얼마나 정확한가?
  • RQ2ChatGPT는 취약성 유형 분류(CWE-ID)에서 얼마나 정확한가?
  • RQ3ChatGPT는 취약성 심각도 추정(CVSS 점수)에서 얼마나 정확한가?
  • RQ4ChatGPT는 자동 취약성 복구(패치 생성)에서 얼마나 정확한가?

주요 결과

  • ChatGPT는 함수 수준의 취약성 예측에서 F1 측정치가 10%, 라인 수준에서는 29%를 기록하였으며, 상위 10개 정확도는 각각 25% 및 65%로, 기준 모델에 비해 유의미하게 낮았다.
  • 취약성 분류 태스크에서 ChatGPT는 다중분류 정확도가 각각 13% 및 20%에 머물렀으며, 최고 성능 기준 모델 대비 45%~52% 낮았다.
  • 심각도 추정 태스크에서 ChatGPT는 gpt-3.5-turbo와 gpt-4 각각 MSE가 5.4 및 5.85로 기록되었으며, 이는 미세조정된 기준 모델의 1.8~1.86보다 훨씬 높았다.
  • ChatGPT는 어떤 올바른 복구 패치도 생성하지 못해 %Perfect Prediction(PP)가 0%를 기록하였고, 기준 모델들은 7%에서 30%의 취약 함수를 복구하였다.
  • BLEU 및 METEOR 점수는 미세조정된 모델이 생성한 패치가 지표값에 비해 ChatGPT가 생성한 패치보다 유의미하게 지표값과 유사하다는 것을 확인하였다.
  • 결과적으로 CodeBERT보다 14,000배 많은 파라미터를 가진 ChatGPT이지만, 미세조정 없이선 취약성 태스크에 필요한 도메인 특화 보안 전문 지식이 부족함을 시사한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.