中文

通过细微语义表示学习与解释区分形似无害与存在漏洞的代码

软件工程 2023-08-23 v1

摘要

尽管已有许多基于深度学习(DL)的漏洞检测方法被提出并确实取得了显著性能,它们在泛化性及实际使用中仍存在局限。更确切地说,现有基于 DL 的方法(1)在词法相似但语义相反的函數间的预测任务上表现不佳;(2)对检测结果未提供直观的面向开发者的解释。本文提出一种名为 SVulD 的新方法,即用于漏洞检测的函数级细微语义嵌入及直观解释,以缓解上述局限。具体而言,SVulD 首先训练一个模型来学习函数可区分的语义表示,而不受其词法相似性的影响。随后,对检测出的漏洞函数,SVulD 提供结果的自然语言解释(如根本原因),帮助开发者直观理解漏洞。为评估 SVulD 的有效性,我们在一个广泛使用的实际漏洞数据集上开展大规模实验,并考虑五项性能指标,与四种最先进(SOTA)方法比较。实验结果表明,SVulD 以显著提升优于所有 SOTA(即 F1 分数提升 23.5%–68.0%,PR-AUC 提升 15.9%–134.8%,准确率提升 7.4%–64.4%)。此外,我们开展用户案例研究,评估 SVulD 对开发者理解漏洞代码的实用性,参与者反馈表明 SVulD 有助于开发实践。

关键词

引用

@article{arxiv.2308.11237,
  title  = {Distinguishing Look-Alike Innocent and Vulnerable Code by Subtle Semantic Representation Learning and Explanation},
  author = {Chao Ni and Xin Yin and Kaiwen Yang and Dehai Zhao and Zhenchang Xing and Xin Xia},
  journal= {arXiv preprint arXiv:2308.11237},
  year   = {2023}
}

备注

Accepted By FSE'23