摘要
摘要
随着深度学习在多个领域的成功应用,深度学习方法由于无需人工提取特
征而在近年来被广泛应用于软件漏洞的自动检测,且多项研究结果证明了这种
方法的有效性。然而,文件、函数或切片级的粗粒度漏洞检测结果只能判断文
件、函数或切片代码是否包含漏洞,不能提供支撑性的解释信息,辅助开发者
分析和诊断漏洞的成因。因此,为了提升漏洞检测结果的可解释性,研究人员
提出了多种解释方法来分析深度学习漏洞检测模型检测结果的可解释性。
为了探究深度学习漏洞检测结果的可解释性上的有效性,本文针对目前最
先进的深度学习漏洞检测模型,采用模型自解释法、模型逼近法以及样本反馈
法这三类较为普遍的解释方法,分析了漏洞检测结果的可解释性。研究结果表
明,基于语句遮盖的样本反馈法能够更好地给出辅助开发人员理解漏洞的解释
信息。
考虑到语句级的解释信息不够精细、丰富,本文进一步研究了token级的
解释方法。并对token级解释和语句级解释进行了对比,结果表明token级解释
可以提供更丰富的信息,能够更好地辅助开发人员理解模型的预测依据并辅助
开发人员分析和诊断漏洞的成因。
针对token级解释方法所需的搜索空间较大,冗余项较多,导致token级解
释方法性能较差且时间开销较大的问题,本文提出了先获得语句级解释再进行
token级解释的两阶段方法,对模型逼近法和样本反馈法进行优化。实验结果表
明,在SARD数据集和基于序列特征的GRU漏洞检测模型上,基于LIME的
tokenACC@3ACC@5
两阶段级模型逼近法具有最好的解释效果,该方法在、
和解释重要性分数这三个指标上相比基于LIME的单阶段模型逼近法,分别提
15%5%0.13tokenACC@3
高了、和;另外,基于两阶段搜索的级样本反馈法在、
ACC@5以及解释重要性分数三个指标上比基于直接搜索的token级样本反馈
法分别高出12%、11%、0.17,该方法不仅降低了解释方法的时间开销,而且
还提高了解释信息的准确性。
为了进一步研究解释方法在分析漏洞检测模型预测结果可解释性上的适
应性并为筛选漏洞检测模型提供参考依据,本文分别使用基于语句遮盖的样本
反馈法以及基于LIME的两阶段token级模型逼近法,对多种深度学习的漏洞
检测模型从漏洞检测性能和漏洞检测结果的可解释性进行了评估后,结果表明,
-I-
摘要
在基于序列特征的漏洞检测模型中,GRU模型在检测性能和检测结果的可解释
性方面取得了最好的结果。
关键词:漏洞检测结果的可解释性;深度学习;模型自解释法;模型逼近
法;样本反馈法
-II-
哈尔滨工业大学工学硕士学位论文
Abstract
Withthesuccessfulapplicationofdeeplearninginvariousfields,thedeep
learningmethodhasbeenwidelyusedintheautomaticdetectionofsoftware
vulnerabilitiesinrecentyears,asitdoesnotrequiremanualfeatureextraction,
andmultipleresearchresultshavedemonstrateditseffectiveness.However,
coarse-grainedvul