[论文解读] ChatGPT for Vulnerability Detection, Classification, and Repair: How Far Are We?
本研究评估了ChatGPT(gpt-3.5-turbo和gpt-4)在四种软件漏洞任务——检测、分类、严重性估计和修复——中的表现,使用了超过19万个C/C++函数。尽管规模庞大,ChatGPT的表现显著逊于微调过的代码专用模型,凸显了在有效漏洞预测与修复中进行领域特定微调的必要性。
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.
研究动机与目标
- 评估提示工程在大型语言模型(如ChatGPT)上执行端到端软件漏洞任务的有效性。
- 将ChatGPT的性能与专为软件漏洞检测和修复设计的最先进微调语言模型进行比较。
- 探究ChatGPT的庞大参数量(高达1.7万亿)是否能在无微调的情况下实现漏洞任务的优越泛化能力。
- 评估使用现成的大型语言模型(如ChatGPT)在真实软件系统中实现自动化漏洞检测、分类、严重性估计和补丁生成的可行性。
- 确定领域特定微调是否对大型语言模型在网络安全相关软件工程任务中实现实际性能至关重要。
提出的方法
- 采用两个版本的ChatGPT——gpt-3.5-turbo和gpt-4——通过提示工程实现,未进行参数微调。
- 使用两个真实世界数据集:Big-Vul(190,000个C/C++函数)和CVEFixes,用于在四个漏洞任务上进行评估。
- 为函数/行级漏洞预测、漏洞类型分类(CWE-ID)、严重性估计(CVSS分数)以及自动化补丁修复设计了任务特定提示。
- 将ChatGPT的性能与四个微调基线模型(AIBugHunter、CodeBERT、GraphCodeBERT和VulExplainer)进行比较。
- 使用标准指标评估结果:F1-score、top-10准确率、多分类准确率、均方误差(MSE)、平均绝对误差(MAE)以及修复任务的%Perfect Prediction(%PP)。
- 采用贪婪解码以确保公平比较,并引入BLEU和METEOR分数以评估生成补丁与真实补丁的相似度。
实验结果
研究问题
- RQ1ChatGPT在函数级和行级漏洞预测中的准确率如何?
- RQ2ChatGPT在漏洞类型分类(CWE-ID)中的准确率如何?
- RQ3ChatGPT在漏洞严重性估计(CVSS分数)中的准确率如何?
- RQ4ChatGPT在自动化漏洞修复(补丁生成)中的准确率如何?
主要发现
- 对于函数级漏洞预测,ChatGPT的F1-measure为10%;对于行级漏洞预测,F1-measure为29%,top-10准确率分别为25%和65%,显著低于基线模型。
- 在漏洞分类任务中,ChatGPT的多分类准确率仅为13%和20%,比表现最佳的基线模型低45%至52%。
- ChatGPT的严重性估计表现出最高的均方误差(MSE):gpt-3.5-turbo为5.4,gpt-4为5.85,而微调基线模型的MSE为1.8至1.86。
- ChatGPT未能生成任何正确的修复补丁,%Perfect Prediction(PP)为0%,而基线模型可修复7%至30%的漏洞函数。
- BLEU和METEOR分数证实,微调模型生成的补丁与真实补丁相比显著更接近。
- 结果表明,尽管ChatGPT的参数量比CodeBERT高出14,000倍,但在无微调的情况下仍缺乏漏洞任务所需的领域特定安全专业知识。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。