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)|Oct 15, 2023
Software Engineering Research被引用数 6
ひとこと要約

本研究では、190,000件以上のC/C++関数を用いて、ChatGPT(gpt-3.5-turboおよびgpt-4)を用いて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.

研究の動機と目的

  • 大規模言語モデル(LLM)であるChatGPTを用いた、エンドツーエンドのソフトウェア脆弱性タスクの有効性を評価すること。
  • ソフトウェア脆弱性検出および修復に特化して設計された最新のファインチューニング済み言語モデルと比較して、ChatGPTのパフォーマンスを評価すること。
  • ChatGPTの膨大なパラメータ数(最大1兆7千億)が、ファインチューニングなしでも脆弱性タスクにおける優れた一般化能力を提供するかを調査すること。
  • 実世界のソフトウェアシステムにおいて、オフザシェルのLLM(例:ChatGPT)を用いた自動脆弱性検出、分類、深刻度推定、パッチ生成の実現可能性を評価すること。
  • LLMがサイバーセキュリティ関連のソフトウェア工学タスクで実用的なパフォーマンスを達成するには、ドメイン特化のファインチューニングが不可欠であるかを特定すること。

提案手法

  • パrameterのファインチューニングなしで、プロンプト工学を用いてChatGPTの2バージョン(gpt-3.5-turboおよびgpt-4)を採用した。
  • 2つの実世界のデータセット(Big-Vul:190,000件のC/C++関数、CVEFixes)を用いて、4つの脆弱性タスクにおける評価を実施した。
  • 関数/行単位の脆弱性予測、脆弱性タイプ分類(CWE-ID)、深刻度推定(CVSSスコア)、自動パッチ修復のためのタスク固有のプロンプトを設計した。
  • AIBugHunter、CodeBERT、GraphCodeBERT、VulExplainerの4つのファインチューニング済みベースラインとChatGPTのパフォーマンスを比較した。
  • 標準指標(F1スコア、トップ10正解率、多クラス正解率、平均二乗誤差(MSE)、平均絶対誤差(MAE)、パッチ生成の完全一致率(%Perfect Prediction, %PP))を用いて結果を評価した。
  • 公平な比較を確保するため、グリーディデコードを採用し、パッチ類似度を評価するためBLEUおよびMETEORスコアも含めた。

実験結果

リサーチクエスチョン

  • RQ1ChatGPTは関数レベルおよび行レベルの脆弱性予測においてどの程度の正確性を示すか?
  • RQ2ChatGPTは脆弱性タイプ分類(CWE-ID)においてどの程度の正確性を示すか?
  • RQ3ChatGPTは脆弱性深刻度推定(CVSSスコア)においてどの程度の正確性を示すか?
  • RQ4ChatGPTは自動脆弱性修復(パッチ生成)においてどの程度の正確性を示すか?

主な発見

  • 関数レベルの脆弱性予測ではF1スコアが10%、行レベルでは29%を記録し、トップ10正解率は25%および65%であった。これはベースラインモデルに比べて著しく低い。
  • 脆弱性分類においては、多クラス正解率が13%および20%にとどまり、最良のベースラインモデルと比較して45%~52%低い。
  • 深刻度推定においては、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より1万4千倍もパラメータ数が多いにもかかわらず、ChatGPTはファインチューニングなしでは脆弱性タスクに必要なドメイン特化のセキュリティ知識を欠いていることが示された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。