[论文解读] Can Large Language Models Find And Fix Vulnerable Software?
GPT-4 识别的漏洞数量远超传统分析工具,并能提出修复方案,在多语言环境下实现约4倍的发现量提升,并在修正后将漏洞数量最多降低约90% 。
In this study, we evaluated the capability of Large Language Models (LLMs), particularly OpenAI's GPT-4, in detecting software vulnerabilities, comparing their performance against traditional static code analyzers like Snyk and Fortify. Our analysis covered numerous repositories, including those from NASA and the Department of Defense. GPT-4 identified approximately four times the vulnerabilities than its counterparts. Furthermore, it provided viable fixes for each vulnerability, demonstrating a low rate of false positives. Our tests encompassed 129 code samples across eight programming languages, revealing the highest vulnerabilities in PHP and JavaScript. GPT-4's code corrections led to a 90% reduction in vulnerabilities, requiring only an 11% increase in code lines. A critical insight was LLMs' ability to self-audit, suggesting fixes for their identified vulnerabilities and underscoring their precision. Future research should explore system-level vulnerabilities and integrate multiple static code analyzers for a holistic perspective on LLMs' potential.
研究动机与目标
- 评估 GPT-4 与传统静态分析器(如 Snyk 和 Fortify)在检测软件漏洞方面的能力对比。
- 评估 GPT-4 提出并应用对已识别漏洞的修复方案的能力。
- 量化在多样化代码库和编程语言中的漏洞检测/修复情况。
- 检查LLM 是否能够通过自我审计来提出自身发现问题的修复方案。
提出的方法
- 通过 API 自动查询 GPT-4,并将系统上下文设定为针对多语言的静态代码分析器。
- 在八种语言上进行评估:C、Ruby、PHP、Java、JavaScript、C#、Go、Python。
- 与 Snyk 在六个公开 GitHub 仓库以及一个更大规模的129文件、2372 LOC 的漏洞数据集进行对比。
- 最终评估中让 GPT-4 被提示改写存在漏洞的代码并附上修复,然后再由 Snyk 重新扫描以衡量改进程度。
实验结果
研究问题
- RQ1GPT-4 的漏洞检测性能与 Snyk 与 Fortify 在不同代码库上的表现相比如何?
- RQ2GPT-4 能否为识别出的漏洞在多语言环境中生成可操作且正确的修复方案?
- RQ3通过提示 GPT-4 修复代码后,重新用静态分析工具扫描是否能降低总体漏洞数量?
- RQ4是否存在某些语言或漏洞类别使得 GPT-4 的表现特别好或特别差?
主要发现
| 代码库与参考 | 源代码行数 | 关键 | 高 | 中 | 低 |
|---|---|---|---|---|---|
| 原始 GitHub 仓库 [2] | 2372 | 0 | 66 | 20 | 12 |
| GPT-4 已修正 GitHub 仓库 [38] | 2636 | 0 | 4 | 5 | 1 |
| 差异 | +264 | 0 | -62 | -15 | -11 |
- GPT-4 识别的漏洞数量约为传统分析工具(如 Snyk)的4倍左右。
- GPT-4 为每个识别的漏洞提供了可行的修复方案,错误报告率较低。
- 通过 GPT-4 进行修复后的代码将漏洞减少约90%,同时新增代码行增加了11%。
- 在129个文件中,PHP和JavaScript包含几乎一半的发现。
- 修复后 Snyk 报告高危漏洞减少了94%、中等减少了75%、低减少了92%(从98降至10)。
- GPT-4 的修复在漏洞集合中产生了398个代码修复。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。