Skip to main content
QUICK REVIEW

[논문 리뷰] Can Large Language Models Find And Fix Vulnerable Software?

David Noever|arXiv (Cornell University)|2023. 08. 20.
Software Reliability and Analysis Research인용 수 12
한 줄 요약

GPT-4는 전통적 분석기보다 훨씬 더 많은 취약점을 식별하고 수정책을 제시할 수 있으며, 여러 언어에 걸쳐 발견 건수에서 약 4배 증가, 수정 후 취약점 감소 최대 90%에 달한다.

ABSTRACT

In this study, we evaluated the capability of Large Language Models (LLMs), particularly OpenAI's GPT-4, in detecting software vulnerabilities, comparing their performance against traditional static code analyzers like Snyk and Fortify. Our analysis covered numerous repositories, including those from NASA and the Department of Defense. GPT-4 identified approximately four times the vulnerabilities than its counterparts. Furthermore, it provided viable fixes for each vulnerability, demonstrating a low rate of false positives. Our tests encompassed 129 code samples across eight programming languages, revealing the highest vulnerabilities in PHP and JavaScript. GPT-4's code corrections led to a 90% reduction in vulnerabilities, requiring only an 11% increase in code lines. A critical insight was LLMs' ability to self-audit, suggesting fixes for their identified vulnerabilities and underscoring their precision. Future research should explore system-level vulnerabilities and integrate multiple static code analyzers for a holistic perspective on LLMs' potential.

연구 동기 및 목표

  • GPT-4가 Snyk 및 Fortify 등 전통적인 정적 분석기와 비교해 소프트웨어 취약점을 탐지하는 능력을 평가한다.
  • 식별된 취약점에 대한 수정안을 제시하고 적용하는 GPT-4의 능력을 평가한다.
  • 다양한 저장소 및 프로그래밍 언어에 걸친 취약점 탐지/수리 능력을 정량화한다.
  • 대형언어모델(LLM)이 자신이 식별한 문제에 대해 수정안을 제시함으로써 자체 감사를 수행할 수 있는지 여부를 검토한다.

제안 방법

  • 다중 언어에 대해 정적 코드 분석가로 작동하도록 시스템 컨텍스트를 설정한 상태에서 API를 통해 GPT-4를 자동으로 질의한다.
  • 8개 언어(C, Ruby, PHP, Java, JavaScript, C#, Go, Python)에서 평가한다.
  • 6개의 공개 GitHub 저장소와 더 큰 129파일, 2372-LOC 취약점 데이터셋에서 Snyk와의 비교.
  • 수정이 포함된 취약 코드 재작성로 GPT-4를 최종 평가하고, 그런 다음 Snyk로 재스캔해 개선을 측정한다.

실험 결과

연구 질문

  • RQ1다양한 코드베이스에서 GPT-4의 취약점 탐지 성능이 Snyk 및 Fortify와 어떻게 비교되는가?
  • RQ2GPT-4가 여러 언어에 걸쳐 식별된 취약점에 대해 실행 가능한 정확한 수정을 제시할 수 있는가?
  • RQ3코드를 수정하도록 GPT-4에 프롬프트를 주면 정적 분석기로 재스캔할 때 전반적인 취약점이 감소하는가?
  • RQ4GPT-4가 특히 잘하거나 못하는 언어 또는 취약점 분류 패턴이 있는가?

주요 결과

Codebase & ReferenceSLOC치명적높음중간낮음
Original GitHub Repo [2]23720662012
GPT-4 Corrected GitHub Repo [38]26360451
Difference+2640-62-15-11
  • GPT-4는 전통적 분석기(예: Snyk)보다 취약점을 약 4배 많이 식별했다.
  • GPT-4는 식별된 각 취약점에 대해 실행 가능한 수정안을 제공했고 거짓 양성률이 낮았다.
  • GPT-4를 통한 수정으로 취약점이 약 90% 감소했고 추가된 코드 라인이 11% 증가했다.
  • 129개 파일 전체에서 PHP와 JavaScript가 거의 절반에 가까운 발견을 차지했다.
  • 수정 후 Snyk의 고위험 취약점은 94%, 중간은 75%, 낮음은 92% 감소(98에서 10으로).
  • GPT-4 수정은 취약점 집합 전반에 걸쳐 398개의 코드 수정을 만들어냈다.

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

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

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

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