NAVRepair: Node-type Aware C/C++ Code Vulnerability Repair

2024年05月08日
  • 简介
    深度学习的快速发展导致了大型语言模型(LLMs)的发展。在漏洞修复领域,先前的研究利用了基于规则的修复、预训练模型和LLM的提示工程。然而,现有方法在代码结构与错误类型的集成方面存在局限性。此外,由于C/C++语言的某些特性,C/C++漏洞修复非常具有挑战性。为了解决这些挑战,我们提出了NAVRepair,这是一个新颖的框架,它将从抽象语法树(ASTs)中提取的节点类型信息与错误类型相结合,专门针对C/C++漏洞。具体而言,我们的方法采用类型分析来定位最小编辑节点(MEN),并根据不同的错误类型定制上下文信息收集。在离线阶段,NAVRepair解析代码补丁以定位MEN,并设计规则来提取每个MEN类型的相关上下文信息。在在线修复阶段,它分析可疑代码,将其与从通用弱点枚举(CWE)中导出的漏洞类型模板相结合,并生成有针对性的修复提示。我们在多个流行的LLMs上评估了NAVRepair,并展示了其在提高代码漏洞修复性能方面的有效性。值得注意的是,我们的框架独立于任何特定的LLMs,并且可以快速适应新的漏洞类型。广泛的实验验证了NAVRepair在帮助LLMs准确检测和修复C/C++漏洞方面取得了出色的结果。与现有的基于LLMs的C/C++漏洞修复方法相比,我们的方法的准确率提高了26%。我们相信,我们的节点类型感知方法具有增强实际C/C++代码安全性的应用前景。
  • 图表
  • 解决问题
    NAVRepair旨在解决C/C++代码漏洞修复中的结构和错误类型集成问题,提出了一种基于AST的节点类型感知框架。
  • 关键思路
    NAVRepair使用类型分析定位最小编辑节点(MEN),并根据不同的错误类型定制上下文信息收集规则,结合CWE漏洞类型模板生成定向修复提示。
  • 其它亮点
    NAVRepair在多个流行的LLM上进行了评估,并证明了其在提高代码漏洞修复性能方面的有效性。该框架独立于任何特定的LLM,并可以快速适应新的漏洞类型。
  • 相关研究
    近期相关研究包括基于规则的修复、预训练模型和LLM的提示工程等。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论