arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 2404.15596cs.SEcs.CR
收藏

VulEval:面向仓库级软件漏洞检测的评估

VulEval: Towards Repository-Level Evaluation of Software Vulnerability Detection

Xin-Cheng Wen, Xinchen Wang, Yujia Chen, Ruida Hu, David Lo, Cuiyun Gao

AI总结:

提出仓库级评估系统VulEval,通过函数级检测、依赖预测和仓库级检测三项任务及大规模数据集,填补了过程间漏洞检测评估的空白。

摘要:

基于深度学习(DL)的方法已被证明在软件漏洞检测方面是有效的,具有大幅提升漏洞检测生产力的潜力。当前方法主要关注检测单个函数(即过程内漏洞),忽略了实践中更复杂的过程间漏洞检测场景。例如,开发者通常会结合程序分析来检测仓库内跨越多个函数的漏洞。此外,广泛使用的基准数据集通常只包含过程内漏洞,对过程间漏洞检测能力的评估仍未被探索。为了缓解这些问题,我们提出了一个名为VulEval的仓库级评估系统,旨在同时评估过程间和过程内漏洞的检测性能。具体而言,VulEval包含三个相互关联的评估任务:(1)函数级漏洞检测,旨在给定代码片段的情况下检测过程内漏洞;(2)漏洞相关依赖预测,旨在从调用图中检索最相关的依赖项,为开发者提供关于漏洞的解释;(3)仓库级漏洞检测,旨在结合第二个任务中识别的依赖项来检测过程间漏洞。VulEval还包含一个大规模数据集,共有4,196个CVE条目、232,239个函数以及相应的4,699个C/C++编程语言的仓库级源代码。我们的分析强调了软件漏洞检测的当前进展和未来方向。

英文摘要:

Deep Learning (DL)-based methods have proven to be effective for software vulnerability detection, with a potential for substantial productivity enhancements for detecting vulnerabilities. Current methods mainly focus on detecting single functions (i.e., intra-procedural vulnerabilities), ignoring the more complex inter-procedural vulnerability detection scenarios in practice. For example, developers routinely engage with program analysis to detect vulnerabilities that span multiple functions within repositories. In addition, the widely-used benchmark datasets generally contain only intra-procedural vulnerabilities, leaving the assessment of inter-procedural vulnerability detection capabilities unexplored. To mitigate the issues, we propose a repository-level evaluation system, named \textbf{VulEval}, aiming at evaluating the detection performance of inter- and intra-procedural vulnerabilities simultaneously. Specifically, VulEval consists of three interconnected evaluation tasks: \textbf{(1) Function-Level Vulnerability Detection}, aiming at detecting intra-procedural vulnerability given a code snippet; \textbf{(2) Vulnerability-Related Dependency Prediction}, aiming at retrieving the most relevant dependencies from call graphs for providing developers with explanations about the vulnerabilities; and \textbf{(3) Repository-Level Vulnerability Detection}, aiming at detecting inter-procedural vulnerabilities by combining with the dependencies identified in the second task. VulEval also consists of a large-scale dataset, with a total of 4,196 CVE entries, 232,239 functions, and corresponding 4,699 repository-level source code in C/C++ programming languages. Our analysis highlights the current progress and future directions for software vulnerability detection.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑