Software Vulnerability and Functionality Assessment using LLMs

📄 arXiv: 2403.08429v1 📥 PDF

作者: Rasmus Ingemann Tuffveson Jensen, Vali Tawosi, Salwa Alamir

分类: cs.SE, cs.AI

发布日期: 2024-03-13

备注: 4 pages, accepted to NLBSE'24


💡 一句话要点

利用大型语言模型提升软件漏洞与功能评估效率

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 大型语言模型 代码审查 安全漏洞 功能验证 自动化工具

📋 核心要点

  1. 现有的代码审查方法效率低下,人工审查不仅耗时且成本高,难以满足快速开发的需求。
  2. 本文提出利用大型语言模型辅助代码审查,通过自动标记漏洞和验证功能来提升效率和准确性。
  3. 实验结果显示,OpenAI的模型在标记漏洞和功能验证方面表现优异,且生成的漏洞描述与真实漏洞的关联度较高。

📝 摘要(中文)

代码审查是软件开发过程中的核心环节,但其过程往往繁琐且成本高昂。本文探讨了大型语言模型(LLMs)在代码审查中的应用,重点关注两个基本任务:标记安全漏洞和验证软件功能。通过零-shot和链式思维提示,我们对模型的“批准或拒绝”建议进行了评估。实验使用了经典的代码生成数据集(HumanEval和MBPP)以及来自公共弱点枚举(CWE)的专家编写的漏洞代码片段。结果表明,OpenAI的专有模型在性能上显著优于小型开源LLMs。此外,模型生成的安全漏洞描述中,有36.7%与真实CWE漏洞相关联。

🔬 方法详解

问题定义:本文旨在解决传统代码审查中效率低下和成本高昂的问题,现有方法往往依赖人工审查,难以快速识别安全漏洞和功能缺陷。

核心思路:通过利用大型语言模型(LLMs),实现对代码的自动化审查,重点在于安全漏洞标记和功能验证,以提高审查的效率和准确性。

技术框架:整体架构包括数据准备、模型选择、提示设计和结果评估四个主要模块。数据准备阶段使用经典代码生成数据集和CWE漏洞代码片段,模型选择阶段比较了OpenAI的专有模型与小型开源LLMs,提示设计则采用零-shot和链式思维提示策略。

关键创新:最重要的创新在于将LLMs应用于代码审查的两个核心任务,并通过实验验证其在标记漏洞和功能验证方面的有效性,显著提高了审查的自动化程度。

关键设计:在实验中,采用了多种提示策略,并对模型的输出进行了详细分析,特别关注生成的漏洞描述的准确性和关联性。

📊 实验亮点

实验结果显示,OpenAI的模型在标记安全漏洞和功能验证方面的表现显著优于小型开源LLMs,且生成的漏洞描述中有36.7%与真实CWE漏洞相关联,表明其在实际应用中的有效性。

🎯 应用场景

该研究的潜在应用领域包括软件开发、代码审查工具和安全审计等。通过自动化的漏洞检测和功能验证,能够显著降低开发成本,提高软件的安全性和可靠性,未来可能对软件工程实践产生深远影响。

📄 摘要(原文)

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.