中文

ActiveClean:通过主动学习生成行级漏洞数据

软件工程 2023-12-05 v1 机器学习

摘要

深度学习漏洞检测工具日益流行,且已被证明有效。这些工具依赖大量高质量训练数据,而这类数据极难获取。当前大多数可用数据集提供函数级标签,报告函数是否存在漏洞。然而,为使漏洞检测有用,我们还需要知道与漏洞相关的行。本文致力于开发系统性工具,并提出ActiveClean,从提交(commits)中生成大量行级漏洞数据。也就是说,除函数级标签外,它还报告函数中哪些行可能对漏洞检测负责。过去,静态分析已被应用于清理提交以生成行级数据。我们基于主动学习的方法易于使用且可扩展,为静态分析提供了互补途径。我们从提交行设计了语义和语法属性,并用它们训练模型。我们在Java和C数据集上评估了我们的方法,处理了超过4.3K次提交和119K提交行。ActiveClean达到了70-74的F1分数。此外,我们还表明主动学习是有效的,仅使用400个训练数据就达到了70.23的F1分数。使用ActiveClean,我们为Devign数据集中的整个FFMpeg项目生成了行级标签,包括5K个函数,并且检测出了不正确的函数级标签。我们证明,使用我们清理后的数据,LineVul(一个SOTA行级漏洞检测工具)多检测出70个漏洞行和18个漏洞函数,并将Top 10准确率从66%提升到73%。

关键词

引用

@article{arxiv.2312.01588,
  title  = {ActiveClean: Generating Line-Level Vulnerability Data via Active Learning},
  author = {Ashwin Kallingal Joshy and Mirza Sanjida Alam and Shaila Sharmin and Qi Li and Wei Le},
  journal= {arXiv preprint arXiv:2312.01588},
  year   = {2023}
}