中文

基于代码中心的即时漏洞检测学习方法

软件工程 2023-04-18 v1

摘要

利用软件漏洞对计算机系统的攻击会对现代社会和经济的网络基础设施造成重大损害。为将后果降至最低,尽快检测并修复漏洞至关重要。即时漏洞检测(JIT-VD)用于发现易致漏洞(“危险”)的提交,以防止其被合并到源代码中并引发漏洞。通过 JIT-VD,那些正确理解提交的作者可以在相关修改仍记忆犹新时审查这些危险提交,并在必要时修复它们。本文提出 CodeJIT,一种新颖的基于代码中心的即时漏洞检测方法。CodeJIT 的核心思想是:一次提交中代码变更的含义是判定该提交对代码是否危险的直接且决定性因素。基于该思想,我们设计了一种新颖的基于图的表示,从代码结构与程序依赖两方面刻画代码变更的语义。我们开发了图神经网络模型,以捕捉由该基于图的表示所表达代码变更的含义,并学习区分危险与安全提交。我们在包含 1998 年至 2022 年 506 个真实项目中 2 万余条危险与安全提交的数据集上开展了实验以评估 CodeJIT 的 JIT-VD 性能。结果表明,CodeJIT 在召回率(Recall)、精确率(Precision)和 F1 上分别比最先进的 JIT-VD 方法显著提升达 66%、136% 和 68%。此外,CodeJIT 正确分类了近 9/10 的危险/安全(良性)提交,甚至检测出 69 个修复了某漏洞却在源代码中引入其他问题的提交。

关键词

引用

@article{arxiv.2304.08396,
  title  = {Code-centric Learning-based Just-In-Time Vulnerability Detection},
  author = {Son Nguyen and Thu-Trang Nguyen and Thanh Trong Vu and Thanh-Dat Do and Kien-Tuan Ngo and Hieu Dinh Vo},
  journal= {arXiv preprint arXiv:2304.08396},
  year   = {2023}
}