关键词:
PU学习
漏洞检测
集成学习
得分调整
半监督学习
摘要:
基于人工智能的漏洞检测方法相比于传统漏洞检测方法减少了对专家经验的依赖并提升了检测效率。通常漏洞检测模型的训练过程需要大量有标记的样本,然而在实际应用中,有标记的漏洞样本的收集较为困难。因此,在仅有少量有标记漏洞样本的条件下,如何有效地利用大量的未标记源码样本以提高漏洞检测模型的训练性能成为漏洞检测领域的重要问题。正类-未标记样本学习(PU Learning)是一种新型半监督学习模式,PU学习能够结合少量正类样本与大量未标记样本对随机森林等模型进行训练,通过对未标记样本的类别评分以产生大量的伪标记训练样本,用于提升模型的训练性能。然而,当部分未标记样本的类别得分在阈值附近时,PU Learning容易产生错误的伪标记。为了实现基于PU Learning的源码漏洞检测,提出了一种集成式PU学习方法PUEVD。PUEVD首先基于PU风险最小化构建随机森林,计算未标记源码样本的类别得分,并筛选出源码样本的典型特征集合;然后在典型特征中随机选择一组代码特征子集;最后在该子集上比较易误分类样本的取值与可信正类/可信负类源码样本的相似度的差异。基于集成学习原理,PUEVD将任意易误分类源码样本x在给定的代码特征子集上计算出的相似度差异当作x在一个弱分类器的分类结果,之后基于x在多组随机选择的特征子集所获得的一组差异值融合调整x的类别得分,进而将样本的类别分值优化到可信的区间内,以降低源码样本被误分类的风险。将PUEVD应用到软件漏洞挖掘过程,实现了少量已标记源码样本条件下的漏洞检测,在标准源码漏洞数据集,CWE399,libtiff,asterisk上的实验结果表明,PUEVD在AUC和F1分数上均优于传统方法,证明了PUEVD方法在漏洞检测应用中的有效性。