Skip to main content
QUICK REVIEW

[論文レビュー] Software Vulnerability and Functionality Assessment using LLMs

Rasmus Ingemann Tuffveson Jensen, Vali Tawosi|arXiv (Cornell University)|Mar 13, 2024
Software Reliability and Analysis Research被引用数 4
ひとこと要約

この論文は、大規模言語モデル(LLM)を用いた自動コードレビュー、特に脆弱性検出と機能正しさの検証に焦点を当てている。HumanEval、MBPP、SecurityEvalのデータセットを用い、ゼロショットおよびチェーン・オブ・トゥーク(CoT)プロンプティングを適用した結果、GPT-4を含む特許取得済みLLMは脆弱性検出で95%以上、機能正しさ検証で88%以上の正確性を達成した。また、生成された脆弱性記述の36.7%が実際のCWEエントリと一致した。

ABSTRACT

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がコード内のセキュリティ脆弱性を効果的に特定できるかを評価すること。
  • ドキュメンテーション文字列に基づいて、コードが意図した機能を果たしているかをLLMが検証できるかを評価すること。
  • LLMが同時に脆弱性検出と機能正しさ検証を実行できるかを調査すること。
  • LLMが生成するセキュリティ脆弱性の記述が、実際のCWEエントリとどの程度意味的に一致するかを検討すること。
  • コードレビュー課題における特許取得済みLLMとオープンソースLLMのパフォーマンスを比較すること。

提案手法

  • 3つのコードデータセット(HumanEval:148関数、MBPP:476関数、SecurityEval:36の脆弱なスニペット)を用い、すべての関数とドキュメンテーション文字列が1つずつであることを確認した。
  • 脆弱性検出および機能性タスクのための「承認または却認」意思決定を引き出すために、ゼロショットおよびチェーン・オブ・トゥーク(CoT)プロンプティングを用いた。
  • 特許取得済みモデル(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スコアを達成し、オープンソースモデルを著しく上回った。
  • チェーン・オブ・トゥーク(CoT)プロンプティングにより、GPT-4の統合タスクにおける正確性が80.8%から87.2%に、F1スコアが76.6%から85.7%に向上した。
  • オープンソースモデルは、すべてのタスクでランダムベースラインに近いかそれ以下のF1スコアを示し、低いパフォーマンスを示した。
  • GPT-4が生成した脆弱性記述は、実際のCWEエントリと36.7%の割合で一致し、意味的な整合性が確認された。
  • モデルのサイズが大きいほど、GPT、Llama、Dollyの各ファミリーにおいてパフォーマンスが向上したが、特許取得済みモデルはオープンソースモデルを著しく上回った。

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

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

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

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