[논문 리뷰] Software Vulnerability and Functionality Assessment using LLMs
이 논문은 대규모 언어 모델(Large Language Models, LLMs)을 사용하여 자동화된 코드 리뷰를 수행하는 데 초점을 맞추며, 취약성 탐지 및 기능 정합성 검증을 다룹니다. HumanEval, MBPP, SecurityEval 데이터셋에서 zero-shot 및 chain-of-thought 프롬프팅을 적용한 결과, GPT-4와 같은 기업 전용 LLM은 취약성 탐지에서 95% 이상의 정확도와 기능 검증에서 88%의 정확도를 기록했으며, 생성된 취약성 설명 중 36.7%가 실제 CWE 항목과 일치했습니다.
While code review is central to the software development process, it can be tedious and expensive to carry out. In this paper, we investigate whether and how Large Language Models (LLMs) can aid with code reviews. Our investigation focuses on two tasks that we argue are fundamental to good reviews: (i) flagging code with security vulnerabilities and (ii) performing software functionality validation, i.e., ensuring that code meets its intended functionality. To test performance on both tasks, we use zero-shot and chain-of-thought prompting to obtain final ``approve or reject'' recommendations. As data, we employ seminal code generation datasets (HumanEval and MBPP) along with expert-written code snippets with security vulnerabilities from the Common Weakness Enumeration (CWE). Our experiments consider a mixture of three proprietary models from OpenAI and smaller open-source LLMs. We find that the former outperforms the latter by a large margin. Motivated by promising results, we finally ask our models to provide detailed descriptions of security vulnerabilities. Results show that 36.7% of LLM-generated descriptions can be associated with true CWE vulnerabilities.
연구 동기 및 목표
- 실행 없이 LLM이 코드 내 보안 취약성을 효과적으로 식별할 수 있는지 평가하기 위해.
- 문서화된 설명(docstrings)을 바탕으로 LLM이 코드가 의도한 기능을 충족하는지 검증할 수 있는지 평가하기 위해.
- LLM이 동시에 취약성 탐지와 기능 검증을 수행할 수 있는지 조사하기 위해.
- LLM이 생성한 보안 취약성 설명의 품질이 실제 CWE 항목과 얼마나 유사한지 분석하기 위해.
- 코드 리뷰 작업에서 기업 전용 모델과 오픈소스 모델 간 성능을 비교하기 위해.
제안 방법
- HumanEval(148개 함수), MBPP(476개 함수), SecurityEval(36개 취약한 스크립트 조각)을 포함한 세 가지 코드 데이터셋을 사용하였으며, 모두 단일 함수와 문서화된 설명을 포함하고 있습니다.
- 취약성 및 기능성 작업에 대해 '승인 또는 거부' 결정을 유도하기 위해 zero-shot 및 chain-of-thought 프롬프팅을 적용했습니다.
- 기업 전용 모델(GPT-3.5-turbo, GPT-4, text-davinci-003)과 오픈소스 모델(Llama-2, Dolly-v2, Falcon, CodeLlama)의 조합을 평가했습니다.
- 확률적 요동을 줄이고 결과의 강건성을 높이기 위해 입력 변형과 다중 실행을 적용했습니다.
- 정확도, F1 점수, 그리고 LLM이 생성한 취약성 설명이 실제 CWE 식별자와 일치하는 비율을 측정하여 성능을 평가했습니다.
- 모든 출처에서 일관된 함수 및 문서화된 설명 구조를 확보하기 위해 통합된 데이터셋을 구축했습니다.
실험 결과
연구 질문
- RQ1RQ1: LLM은 보안 취약성이 있는 코드를 식별할 수 있는가?
- RQ2RQ2: LLM은 실행 없이 소프트웨어 기능 검증을 수행할 수 있는가?
- RQ3RQ3: LLM은 동시에 취약성 식별과 기능 검증을 수행할 수 있는가?
- RQ4RQ4: LLM은 보안 취약성에 대해 의미 있는 피드백을 제공할 수 있는가?
주요 결과
- 기업 전용 모델인 text-davinci-003는 보안 취약성 탐지에서 95.6%의 정확도와 37.9%의 F1 점수를 기록했다.
- GPT-4는 기능 검증에서 88.7%의 정확도와 88.2%의 F1 점수를 기록했으며, 오픈소스 모델보다 유의미하게 뛰어났다.
- Chain-of-thought 프롬프팅은 GPT-4의 병합 작업 정확도를 80.8%에서 87.2%로 향상시키며 F1 점수도 76.6%에서 85.7%로 상승시켰다.
- 오픈소스 모델의 성능은 모든 작업에서 무작위 기준 수준 이하 또는 근접한 F1 점수를 기록했다.
- GPT-4는 생성한 취약성 설명 중 36.7%가 실제 CWE 항목과 일치시켰으며, 의미적 일치가 있음을 시사했다.
- 모델 크기가 커질수록 GPT, Llama, Dolly 계열 모두에서 성능이 향상되었으며, 기업 전용 모델이 오픈소스 모델보다 유의미하게 뛰어났다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.