[논문 리뷰] Comparison of Static Application Security Testing Tools and Large Language Models for Repo-level Vulnerability Detection
이 연구는 자바, C, 파이썬에서 레포지토리 수준의 취약성 탐지에 대해 15개의 SAST 도구와 12개의 LLM을 비교한다. SAST 도구는 낮은 탐지율과 적은 거짓 양성 결과를 보이지만, LLM은 90–100%의 탐지율을 달성하지만 거짓 양성이 높다. 양방향 융합은 각각의 한계를 줄이며 종합적인 성능을 향상시킨다.
Software vulnerabilities pose significant security challenges and potential risks to society, necessitating extensive efforts in automated vulnerability detection. There are two popular lines of work to address automated vulnerability detection. On one hand, Static Application Security Testing (SAST) is usually utilized to scan source code for security vulnerabilities, especially in industries. On the other hand, deep learning (DL)-based methods, especially since the introduction of large language models (LLMs), have demonstrated their potential in software vulnerability detection. However, there is no comparative study between SAST tools and LLMs, aiming to determine their effectiveness in vulnerability detection, understand the pros and cons of both SAST and LLMs, and explore the potential combination of these two families of approaches. In this paper, we compared 15 diverse SAST tools with 12 popular or state-of-the-art open-source LLMs in detecting software vulnerabilities from repositories of three popular programming languages: Java, C, and Python. The experimental results showed that SAST tools obtain low vulnerability detection rates with relatively low false positives, while LLMs can detect up 90\% to 100\% of vulnerabilities but suffer from high false positives. By further ensembling the SAST tools and LLMs, the drawbacks of both SAST tools and LLMs can be mitigated to some extent. Our analysis sheds light on both the current progress and future directions for software vulnerability detection.
연구 동기 및 목표
- 레포지토리 수준의 취약성 탐지에서 SAST 도구와 LLM 간의 비교 연구 부족을 해결하기 위해.
- SAST 도구와 LLM 모두에 적합한 새로운 레포지토리 수준의 취약성 탐지 작업을 제안하기 위해.
- 자바, C, 파이썬을 위한 취약한 레포지토리의 완전한 소스 코드를 포함하는 세 가지 새로운 데이터셋을 구축하고 정제하기 위해.
- 다양한 LLM과 레포지토리 수준의 취약성 탐지에 적합한 적응 기법을 지원하는 통합 평가 프레임워크를 개발하기 위해.
- 다양한 프로그래밍 언어에서 실제 환경에서 SAST 도구와 LLM의 효과성, 강점, 한계를 경험적으로 비교하기 위해.
제안 방법
- 모델이 개별 함수가 아닌 전체 레포지토리의 취약성을 식별하는 레포지토리 수준의 취약성 탐지에 새로운 작업을 제안하였다.
- 취약한 레포지토리의 완전한 소스 코드와 레이블이 부여된 취약성 정보를 포함하는 세 가지 새로운 데이터셋—VulnRepo-Java, VulnRepo-C, VulnRepo-Python—을 정제하였다.
- 모든 세 언어에서 표준 스캐닝 설정을 사용하여 15개의 다양한 SAST 도구를 평가하였다.
- 레포지토리 수준 탐지 작업을 위해 여러 프롬프팅 전략(제로샷, 피셔샷, 사고의 사슬)과 파인튜닝을 사용하여 12개의 오픈소스 LLM을 평가하였다.
- SAST 도구와 LLM의 예측을 융합하여 개별 도구의 약점을 보완하는 앙상블 방법을 적용하였다.
- 표준 메트릭(탐지율, 거짓 양성률, F1 점수)을 사용하여 도구와 모델 간의 성능을 비교하였다.
실험 결과
연구 질문
- RQ1자바, C, 파이썬에서 레포지토리 수준의 취약성 탐지에서 SAST 도구와 LLM은 어떻게 비교되는가?
- RQ2실제 레포지토리에 적용했을 때 SAST 도구와 LLM의 탐지율과 거짓 양성률은 각각 얼마인가?
- RQ3SAST 도구와 LLM을 앙상블 방법으로 융합하면 종합적인 취약성 탐지 성능이 향상되는가?
- RQ4다양한 LLM 아키텍처와 프롬프팅 전략은 레포지토리 수준의 취약성 탐지 성능에 어떻게 영향을 미치는가?
- RQ5실제 다중 언어 환경에서 SAST 도구와 LLM의 핵심 강점과 한계는 무엇인가?
주요 결과
- SAST 도구는 낮은 취약성 탐지율을 보였지만 낮은 거짓 양성률을 유지하여 높은 정밀도를 보였지만 재현율은 낮았다.
- LLM은 세 언어 모두에서 90%에서 100%의 탐지율을 달성하여 높은 재현율을 보였지만 높은 거짓 양성률 문제를 겪었다.
- SAST 도구와 LLM의 앙상블는 높은 탐지율을 유지하면서도 거짓 양성을 줄여 개별 접근 방식보다 향상된 F1 점수를 달성하였다.
- LLM의 성능은 프롬프팅 전략에 따라 크게 달라졌으며, 사고의 사슬 프롬프팅이 제로샷 또는 피셔샷 프롬프팅보다 더 우수한 결과를 보였다.
- 이 연구는 파이썬 취약성 탐지에 대해 SAST 도구를 평가한 최초의 연구로, 이 언어에서의 고유한 과제를 드러냈다.
- 정제된 데이터셋—VulnRepo-Java, VulnRepo-C, VulnRepo-Python—은 향후 레포지토리 수준의 취약성 탐지 연구를 위한 새로운 기준이 되었다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.