Skip to main content
QUICK REVIEW

[論文レビュー] LLMSecEval: A Dataset of Natural Language Prompts for Security Evaluations

Catherine Tony, Markus Mutas|arXiv (Cornell University)|Mar 16, 2023
Software Engineering Research被引用数 4
ひとこと要約

LLMSecEvalは、MITREのTop 25 CWEに由来する脆弱性を引き起こしやすいセキュリティ関連のコードシナリオを記述する自然言語プロンプト150件と、それらに対応する安全なコード例を含むデータセットを提供する。このデータセットを用いることで、CodeQLを用いた自動分析により、LLMが生成するコードのセキュリティ上の欠陥を体系的に評価可能であり、自然言語プロンプトを与えられたとしてもLLMが脆弱なコードを生成する可能性があることを示している。

ABSTRACT

Large Language Models (LLMs) like Codex are powerful tools for performing code completion and code generation tasks as they are trained on billions of lines of code from publicly available sources. Moreover, these models are capable of generating code snippets from Natural Language (NL) descriptions by learning languages and programming practices from public GitHub repositories. Although LLMs promise an effortless NL-driven deployment of software applications, the security of the code they generate has not been extensively investigated nor documented. In this work, we present LLMSecEval, a dataset containing 150 NL prompts that can be leveraged for assessing the security performance of such models. Such prompts are NL descriptions of code snippets prone to various security vulnerabilities listed in MITRE's Top 25 Common Weakness Enumeration (CWE) ranking. Each prompt in our dataset comes with a secure implementation example to facilitate comparative evaluations against code produced by LLMs. As a practical application, we show how LLMSecEval can be used for evaluating the security of snippets automatically generated from NL descriptions.

研究の動機と目的

  • 大規模言語モデル(LLM)が生成するコードのセキュリティを評価するための標準化された自然言語プロンプトの不足に対処すること。
  • MITREのTop 25 CWEから抽出された既知の脆弱性と対応する自然言語記述をマッピングするベンチマークデータセットを提供すること。
  • 各プロンプトに対して安全な参照実装を含めることで、LLMのセキュリティ出力の比較評価を可能にすること。
  • 安全なコード生成のためのプロンプト工学およびLLMが生成するコードにおける自動脆弱性検出に関する研究を支援すること。
  • CodeQLを用いてLLMが生成するコードに存在するCWE関連の脆弱性を検出する可能性を実証すること。

提案手法

  • データセットは、既存のCWE関連コードスニペットからCodexを用いて自然言語記述を生成することで構築され、実世界の脆弱性と整合性を持つようにした。
  • プロンプトはMITREの2021年版Top 25 CWEリストに基づき、25のうち最も深刻な18の弱みに焦点を当てた。
  • 言語的および内容的メトリクスを用いて、自然性、表現力、内容の適切さ、簡潔さの観点から、手作業によるプロンプトのレビューと精錬を実施した。
  • 各プロンプトに対して安全な参照実装を提供し、LLMが生成したコードとの直接比較を可能にした。
  • OpenAIのGPT-3およびCodex APIを活用したアプリケーションを構築し、プロンプトからコードを生成した後、18のCWEを標的とするCodeQLクエリを用いて自動的に脆弱性を検出した。
  • 評価パイプラインは、プロンプト入力、LLMによるコード生成、およびCodeQLによる静的解析を統合し、生成コード内のセキュリティ欠陥を同定する。
Figure 1: NL prompts creation process
Figure 1: NL prompts creation process

実験結果

リサーチクエスチョン

  • RQ1セキュリティ関連の機能を記述する自然言語プロンプトが、一貫してLLMに既知の脆弱性を有するコードの生成を引き起こすか。
  • RQ2GPT-3やCodexなどのLLMが、CWEに起因する脆弱性を有するシナリオの自然言語記述をプロンプトとして与えられた場合、どの程度安全なコードを生成するか。
  • RQ3カスタマイズされたプロンプトデータセットと併用した場合、CodeQLはLLMが生成するコードにおけるCWE関連脆弱性をどの程度効果的に検出できるか。
  • RQ4言語に依存しないプロンプトベースのベンチマークは、コード生成LLMのセキュリティ評価の再現性と標準化を向上させられるか。
  • RQ5自然言語の流暢さとプロンプトの明確さは、LLMが生成するコードのセキュリティ結果にどのように影響するか。

主な発見

  • LLMSecEvalに含まれる150のプロンプトすべてが自然性スコア4以上を達成しており、英語としての流暢さが高く、大多数が表現力スコア4以上であった。
  • 150件中138件のプロンプトが内容の適切さスコア3以上を達成しており、安全なコード生成に必要な十分で関連性のある情報が含まれていることが示された。
  • 150件中135件のプロンプトが簡潔さスコア3以上を達成しており、多くのプロンプトが不要な背景情報を持たないことが示された。
  • LLMSecEvalを基盤に構築したアプリケーションは、GPT-3およびCodexが生成したコードに対して、Top 25 CWEのうち18件をCodeQLで検出でき、このデータセットが自動セキュリティ評価に有効であることを裏付けた。
  • このデータセットにより、LLMが生成したコードと安全な参照実装との直接比較が可能となり、LLMが自然言語記述を与えられたとしても、しばしば脆弱なコードを生成することが明らかになった。
  • 本研究では、公開されたコードベースで学習されたLLMが、訓練データに存在するセキュリティ欠陥を引き継ぎ、それらを拡散する可能性があることが示された。特に、曖昧または不完全な記述を与えられた場合に顕著であった。
Figure 2: An example of NL prompt generated from a Python code snippet covering CWE-20 scenario in the Pearce et al. [ 12 ] dataset.
Figure 2: An example of NL prompt generated from a Python code snippet covering CWE-20 scenario in the Pearce et al. [ 12 ] dataset.

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

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

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

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