自动脆弱性检测(ML4VD)机器学习的抽象最新结果非常有前途。仅给出函数F的源代码,ML4VD技术可以决定F是否包含具有高达70%精度的安全漏洞。但是,正如我们自己的实验中明显的那样,相同表现的模型无法区分包含漏洞和漏洞修补的功能的功能。因此,我们如何解释这一矛盾,以及如何改善评估ML4VD技术的方式以更好地了解其实际功能?在本文中,我们确定对无关的特征和分布外概括的过度拟合是两个问题,这不是通过评估ML4VD技术的传统方法来捕获的。作为一种补救措施,我们提出了一种新型的基准标记方法,以帮助研究人员更好地评估ML4VD技术的真正能力和限制。具体说明,我们建议(i)根据我们的交叉验证算法来增强培训和验证数据集,其中在训练集或测试集的增强过程中,应用语义保留转换,以及(ii)用code spippets进行了漏洞的测试集,以增强漏洞的测试集。使用六种ML4VD技术和两个数据集,我们发现(a)最先进的模型非常适合无关的功能,以预测测试数据中的脆弱性,(b)数据增强所获得的性能并不能超出培训期间的特定增强功能,并且(CART)无法将其范围固定在(CART-CART ML4VD TECHENIQUES上)。
主要关键词