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 提供了一个包含 150 个自然语言提示的语料库,用于描述源自 MITRE Top 25 CWE 的、易受漏洞影响的安全关键代码场景,并配以安全的代码示例。该语料库支持通过 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.

研究动机与目标

  • 为评估大型语言模型(LLMs)生成代码的安全性,解决缺乏标准化自然语言提示的问题。
  • 提供一个基准语料库,将自然语言描述映射到 MITRE Top 25 CWE 中已知的安全漏洞。
  • 通过为每个提示提供安全的参考实现,支持对 LLM 安全输出的对比评估。
  • 支持安全代码生成的提示工程研究以及 LLM 生成代码中自动化漏洞检测的研究。
  • 证明利用 CodeQL 检测 LLM 生成代码中与 CWE 相关漏洞的可行性。

提出的方法

  • 通过使用 Codex 从现有的 CWE 相关代码片段生成自然语言描述,构建语料库,确保与真实世界漏洞保持一致。
  • 提示基于 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 生成已知漏洞的代码?
  • RQ2当使用描述 CWE 易感场景的自然语言提示时,GPT-3 和 Codex 等 LLM 生成安全代码的程度如何?
  • RQ3在结合经筛选的提示语料库时,CodeQL 在检测 LLM 生成代码中与 CWE 相关漏洞方面的有效性如何?
  • RQ4语言无关的、基于提示的基准是否能提升 LLM 代码生成安全性评估的可复现性和标准化水平?
  • RQ5语言流畅性和提示清晰度如何影响 LLM 生成代码的安全结果?

主要发现

  • LLMSecEval 中的全部 150 个提示自然度评分均达到 4 分或以上,表明其在英语中的流畅性较高,大多数提示在表达力方面得分 4 分或以上。
  • 138 个提示(占 150 个的 92%)在内容充分性评分中达到 3 分或以上,表明大多数提示包含足够且相关的信息,可用于安全代码生成。
  • 135 个提示(占 150 个的 90%)在简洁性评分中达到 3 分或以上,表明大多数提示避免了不必要的背景信息。
  • 基于 LLMSecEval 构建的应用程序成功使用 CodeQL 在 GPT-3 和 Codex 生成的代码中检测出 18 个 Top 25 CWE,验证了该语料库在自动化安全评估中的实用性。
  • 该语料库支持将 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 生成,并经人工编辑审核。