用于自动软件漏洞检测的神经网络技术比较研究
软件工程
2021-05-03 v1 密码学与安全
机器学习
摘要
软件漏洞通常由设计缺陷或实现错误引起,可能被利用从而损害系统安全。目前最常用的软件漏洞检测方法是静态分析。大多数相关技术基于规则或代码相似性(源代码层面)工作,并依赖人工定义的漏洞特征。然而,这些规则和漏洞特征难以准确界定和设计,使静态分析在实际应用中面临诸多挑战。为缓解该问题,一些研究者提出利用具有自动特征提取能力的神经网络来提升检测智能化水平。但神经网络种类繁多,不同的数据预处理方法对模型性能有显著影响。对于工程师和研究者而言,针对给定问题选择合适的神经网络与数据预处理方法是一大挑战。为此,我们开展了大量实验,测试两种最典型神经网络(即Bi-LSTM和RVFL)与两种最经典数据预处理方法(即向量表示与程序符号化方法)在软件漏洞检测问题上的性能,得到一系列有趣的研究结论,可为研究者和工程师提供有价值的指导。具体而言,我们发现:1)RVFL的训练速度始终快于Bi-LSTM,但Bi-LSTM模型的预测精度高于RVFL;2)使用doc2vec进行向量表示可使模型比使用word2vec具有更快的训练速度和泛化能力;3)多级符号化有助于提高神经网络模型的精度。
引用
@article{arxiv.2104.14978,
title = {A comparative study of neural network techniques for automatic software vulnerability detection},
author = {Gaigai Tang and Lianxiao Meng and Shuangyin Ren and Weipeng Cao and Qiang Wang and Lin Yang},
journal= {arXiv preprint arXiv:2104.14978},
year = {2021}
}
备注
This paper has been published at April 28,2021. However, there are some experimental data issues in the published manuscript, which are caused by the calculation error of indicators. This paper is a revised version