今天分享的论文是《Vul-RAG: Enhancing LLM-based Vulnerability Detection via Knowledge-level RAG》
原文链接:[2406.11147] Vul-RAG: Enhancing LLM-based Vulnerability Detection via Knowledge-level RAG
这是一篇应用RAG技术的LLM漏洞检测方法,据文章所说是第一个使用RAG进行LLM漏洞检测的方法,不过我们有找到开放源代码。
漏洞检测对于软件质量保证至关重要。近年来,深度学习模型(特别 是大型语言模型)在漏洞检测方面显示出了前景。在本文中,提出了一种新的基于 LLM 的漏洞检测技术 Vul- RAG,它利用知识级检索 增强生成(RAG)框架分三个阶段检测给定代码的漏洞。首先,Vul-RAG 通过 LLM 从现有的 CVE 实例中提取多维度的知识,构建了一个漏洞知 识库;第二,对于给定的代码片段,Vul-RAG 基于功能语义从构建的 知识库中检索相关的漏洞知识;第三,Vul-RAG 利用 LLMs,通过推理 漏洞原因的存在和修复检索到的漏洞知识的解决方案,来检查给定代 码 snip- pet 的漏洞。在构建的基准 PairVul 上对 Vul-RAG 进行 的评估表明,Vul-RAG 在准确性/成对准确性方面的相对改进为 12.96%/110% , 大大 优于 所有 基线 。此 外, 用户研究表明,Vul-RAG 生成的漏洞知识可以作为高质量的解释,可以将人工检 测的准确率从 0.60 提高到 0.77。
本文的主要贡献为:
• 基准。构建了一个新的基准代码对,它排他地包含易受攻击 的代码和相似但正确的代码对。
• 初步研究。进行了第一项研究,发现现有的基于学习 的技术在理解和捕获与漏洞相关的代码语义方面能力有 限。
• 技术。基于所提出的多维知识表示,构建了一个漏洞知识 库,并提出了一个新的用于漏洞检测的知识级 RAG 框架 VulRAG。
• 评价。评估了 Vul-RAG,并发现 Vul-RAG 生成的漏洞知识 对于自动和手动漏洞检测都是有用的。
对于现有的基准数据集的评估:
研究对比的基线方法:
在基准 PairVul 上评估了以下最先进的(SOTA)漏洞检测技术。
• LLMAO [8]: 一 种 基 于 LLM 的 故 障 定 位 方 法 , 对 LLM( 即 CodeGen)进行了微调,LLM 也在用于漏洞检测的 Devign 数据 集上进行了微调。
• LineVul [6]:基于 PLM 的漏洞检测模型,提供功能级和行级检测 粒度。
• DeepDFA [3]:一种基于 GNN 的检测技术,具有数据流分析引导的 图形学习框架,设计用于功能级漏洞检测。
• Cppcheck [15]:一个广泛使用的开源静态分析工具。
方法概述:
CVE-2022-38457历史提交漏洞知识提取示例:
四个问题进行评估:
• RQ1:与最先进技术对比:Vul-RAG相比当前最先进的漏洞检测技术表现如何?
• RQ2:与GPT-4基类技术对比:Vul-RAG相较于基于GPT-4的漏洞检测技术有何性能差异?
• RQ3:开发者实用性验证:Vul-RAG生成的漏洞知识能否有效辅助开发者进行人工漏洞检测?
• RQ4:失效案例剖析:为何Vul-RAG在某些漏洞检测场景中会失效?
方法有效性的威胁:
基准中的威胁。漏洞基准和 GPT 协议-4 培训数据之间可能存在潜在 的数据泄漏问题。然而,Vul-RAG 相对于基本 GPT-4 的实质性改进可 以表明 Vul-RAG 的有效性不仅仅是由于数据记忆。一般化的威胁。 由于 Linux 内核 CVEs 的普及和丰富的漏洞信息,基准测试主 要关注它[41],这可能会限制结果的泛化。然而,方法并不 局限于 Linux 内核 CVEs,将来还可以扩展到其他系统的 CVEs。此 外,Vul-RAG 的另一个可推广性问题发生在构建的知识库不包含被检 测代码的相关知识的情况下,这引起了对提取的漏洞知识是否可以 推广到检测来自不同 CVE 的代码片段的关注。为了减轻这种威胁, 手工编译了一个小规模的基准测试,包括 30 个不同 CVE 上的 60 个代码函数(30 个正样本和 30 个负样本)。对于该基准中的每个案 例,手动验证从知识库中的其他 CVE 提取的相关漏洞知识的存 在。Vul- RAG 在该基准上的性能(即 0.83 的召回率和 0.76 的精确 率)证明了所提取的漏洞知识在不同 CVE 上的可推广性。
做一个总结:
在本文中,提出了一种新的基于 LLM 的漏洞检测技术 Vul-RAG, 它利用知识级检索增强生成(RAG)框架来检测给定代码的漏洞。总的 来说,与四个代表性基线相比,Vul-RAG 显示了实质性的改进(即, 准确度提高了 12.96%,成对准确度提高了 110%)。用户研究 结果表明,漏洞知识可以将人工检测的准确率从 0.6 提高到 0.77, 用户反馈也显示了所生成的知识在有用性、精确性和可推广性方面 的高质量。