摘要
当前基于深度学习的源代码漏洞检测是一种效率较高的漏洞分析方式,但其面临2个挑战:容量较大的数据集和有效的学习方式.针对这2个挑战做了2方面的研究工作:首先基于SARD数据集构建了样本容量为280 793的多漏洞数据集,包含150种CWE漏洞类型.其次提出基于比较学习的深度学习方法.其核心思想是为深度学习训练集中每一个样本构建1个类型相同的样本集合,以及1个类型不相同的样本集合,形成一种比较学习的氛围.基于该思想创建的训练数据集,深度学习模型在训练的过程中,不但可以学习同类型样本大量的、细微的特征,还可以提取不同类型样本中区分性较强的特征.经过实验验证,基于所创建的数据集和提出的学习方法训练的深度学习模型可以识别150种CWE漏洞类型,准确率可以达到92.0%,平均PR值可以达到0.85,平均ROC-AUC值可以达到0.96.此外,也对基于深度学习的漏洞分析技术中普遍使用的代码符号化技术进行分析与讨论.实验表明,深度学习训练过程中,是否对代码进行符号化,并不会影响深度学习模型的漏洞识别准确率.
-
单位中国科学院信息工程研究所; 中国科学院大学; 北京城市学院