翻译:Multi-role Consensus through LLMs Discussions for Vulnerability Detection
大型语言模型(LLMs)的最新进展突显了其在漏洞检测方面的潜力,而漏洞检测是软件质量保证的关键组成部分。尽管取得了这些进展,大多数研究仍局限于单一角色的视角,通常是测试人员,缺乏来自典型软件开发生命周期中不同角色(包括开发人员和测试人员)的多样化观点。为此,本文提出了一种多角色方法,利用LLMs模拟不同角色,重现现实中的代码审查过程,并通过讨论就代码中漏洞的存在及其分类达成共识。对该方法的初步评估
通过LLMs讨论实现多角色共识以进行漏洞检测
Multi-role Consensus through LLMs Discussions for Vulnerability Detection
摘要
大型语言模型(LLMs)的最新进展突显了其在漏洞检测方面的潜力,而漏洞检测是软件质量保证的关键组成部分。尽管取得了这些进展,大多数研究仍局限于单一角色的视角,通常是测试人员,缺乏来自典型软件开发生命周期中不同角色(包括开发人员和测试人员)的多样化观点。为此,本文提出了一种多角色方法,利用LLMs模拟不同角色,重现现实中的代码审查过程,并通过讨论就代码中漏洞的存在及其分类达成共识。对该方法的初步评估表明,精确率提高了13.48%,召回率提高了18.25%,F1分数提高了16.13%。
关键词—大型语言模型;漏洞检测;提示工程;软件质量保证
2 多角色方法
2.1 初始化阶段
初始化阶段旨在使测试人员能够独立提供初步判断。测试人员会收到一个初始提示,详细说明其角色设定、任务以及需要分析的代码片段。测试人员被要求输出其首次响应,该响应为一段文本补全内容,包括一个判断(限于二元指示符:1 表示存在漏洞,0 表示无漏洞)和简要推理。响应受到最大标记数限制,以确保测试人员的推理既精确又有实质性,从而为后续的辩证互动提供清晰且高效的输入。然后,这一初步判断及推理将与类似的初始提示一起转发给开发人员。
2.2 讨论阶段
讨论阶段的目标是实现一种迭代输出交换,以尝试在代码审查团队内部达成多视角共识。测试人员和开发人员凭借各自独特的视角和判断进入辩证互动,旨在探索并解决关于潜在漏洞的不同意见。在此阶段,测试人员和开发人员重复“提出问题 - 推导回答 - 传递见解”的循环,这一过程充当增量提示,推动参与者重新评估并完善其判断和推理。讨论轮次的最大深度预先设定,以防止对话陷入无休止的循环,确保讨论既目标导向又时间高效。
2.3 结论阶段
结论阶段总结讨论并输出最终结果。一旦达成共识或达到预设的最大讨论深度,测试人员的最新判断将被记录为最终判断,因为测试人员通常在审查过程中承担主要责任。
3 初步评估
初步评估由以下研究问题驱动:所提出的方法如何提升漏洞检测的性能?
3.1 实验设置
- 数据集:实验使用的数据集如文献[6]中所述,是一个 C/C++ 数据集,包含四类代码片段(有漏洞和无漏洞):库/API 函数调用(FC)、算术表达式(AE)、数组使用(AU)和指针使用(PU)。
- 任务:LLMs 被赋予对提供的代码片段进行二分类的任务,判断其是否包含属于 FC、AE、AU 或 PU 的任何漏洞。
- 基线:本实验中使用的所有 LLMs 均为 gpt-3.5-turbo-0125 模型的实例。所提出的多角色方法与单一角色 LLM 方法的结果进行了比较。受文献[3]启发,以下两种类型的提示用于测试这两种方法。基本提示直接询问 LLM 是否存在 FC、AE、AU 或 PU 中的任何漏洞,而无需额外上下文。链式思维(CoT),即逐步推导,也被用于分析特定漏洞的存在。
- 讨论约束:最大讨论深度设置为 5,最大响应长度设置为 120 标记。
- 指标:为了评估漏洞检测性能的提升,本研究采用了三个关键指标:精确率、召回率和 F1 分数[3]。
3.2 结果与讨论
表 I 总结了实验结果,突出了通过所提出方法取得的改进。平均而言,精确率提高了 13.48%,召回率提高了 18.25%,F1 分数提高了 16.13%。在计算成本方面,由于不同角色之间需要对话,消耗的标记数量增加了 484%。以下是一个展示开发人员如何帮助提高测试人员检测准确性的讨论记录示例:最初,测试人员因两个缓冲区连接时缺乏验证或清理而判定某代码片段存在漏洞。然而,开发人员指出 wcsncat 函数和适当的大小参数已被用于防止缓冲区溢出,测试人员最终做出了正确的判断,即该代码片段不存在漏洞。由于篇幅限制,请访问 github.com/rockmao45/LLMVulnDetection 查看完整讨论记录。实验结果表明,当测试数据集中漏洞数据的比例较高时,改进尤为明显,特别是在召回率和 F1 分数方面。这可能是因为多轮讨论使 LLMs 能够探索更广泛的潜在漏洞。
4 结论与未来工作
本文提出了一种新颖的方法,通过让 LLMs 在现实代码审查团队中扮演不同角色,讨论漏洞的存在及其分类以达成共识,从而改进漏洞检测。初步评估显示,在精确率、召回率和 F1 分数方面取得了显著改进。未来的工作应通过整合上下文学习来增强这种方法,以指导 LLMs 更好地协作讨论。

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)