中文

语句级漏洞检测:通过信息论与对比学习习得漏洞模式

密码学与安全 2024-06-13 v2 人工智能 机器学习

摘要

软件漏洞是一个严重且关键的问题。通常,在由数百或数千行源代码语句构成的函数或程序中,仅有少数语句导致了相应的漏洞。当前大多数漏洞标注工作是在函数或程序级别上,由专家在机器学习工具的辅助下完成的。将这种方法扩展到代码语句级别成本更高、更耗时,并且仍是一个开放问题。在本文中,我们提出了一种新颖的基于端到端深度学习的方法,用于识别特定函数中与漏洞相关的代码语句。受真实世界漏洞代码中观察到的特定结构启发,我们首先利用互信息学习一组潜变量,用于表示源代码语句与对应函数漏洞的相关性。随后,我们提出新颖的聚类空间对比学习,以进一步改进漏洞相关代码语句的表示学习与鲁棒选择过程。在包含 20 万以上 C/C++ 函数的真实世界数据集上的实验结果表明,我们的方法优于其他最先进的基线方法。总体而言,在无监督设置下于真实世界数据集上运行时,我们的方法在 VCP、VCA 和 Top-10 ACC 指标上比基线高出 3% 至 14%。我们发布的源代码样本公开于 \href{https://github.com/vannguyennd/livuitcl}{https://github.com/vannguyennd/livuitcl}。

关键词

引用

@article{arxiv.2209.10414,
  title  = {Statement-Level Vulnerability Detection: Learning Vulnerability Patterns Through Information Theory and Contrastive Learning},
  author = {Van Nguyen and Trung Le and Chakkrit Tantithamthavorn and Michael Fu and John Grundy and Hung Nguyen and Seyit Camtepe and Paul Quirk and Dinh Phung},
  journal= {arXiv preprint arXiv:2209.10414},
  year   = {2024}
}