1.基本信息
- DSN-W 2022
- 作者:
海南大学网络空间安全学院
西安电子科技大学网络工程学院
国家计算机网络入侵防护中心,中科院 - 这是一篇综述文章。
2.论文概述
motivation
- 现有的基于AI的漏洞检测方法大多侧重于设计不同的AI模型来提高漏洞检测的准确性,忽视了数据驱动的AI算法的根本问题:-
- 一是缺乏足够的高质量漏洞数据;
- 二是没有统一的标准化构建方法来满足不同漏洞检测模型的标准化评价。
contribution
- 分析了脆弱性数据集构建的诸多难点,总结了一些解决方案。
- 据我们所知,目前还没有对脆弱性数据集的构建和质量进行总结的研究。本文总结了近十年来该领域的研究成果,分析了目前流行的一些漏洞数据集的优缺点。
- 为了促进未来的研究,我们讨论了一些需要在现有数据集中解决的问题,并描述了我们对这些问题的一些潜在看法。
3.数据集构建的难点和解决办法
数据源可靠性问题
由于漏洞描述规范不同,信息不对称,同一个CVE-ID漏洞可能存在数据差异,导致多源漏洞数据集存在数据冗余或错误。Dong等对各种漏洞数据库之间的数据差异问题进行了系统评估。[8]。相关统计结果如图1所示,各数据库之间的最高匹配率不超过40。他们发现,跨数据库的相同漏洞差异很大,包括同一个软件项目的不同名称、受漏洞影响的软件版本范围不一致、漏洞风险级别不同等等。表一比较了NVD和SecurityFocus中CVE-2018-20242漏洞影响的软件版本。但是对于同一个漏洞库描述信息准确可靠的CVE-ID漏洞,仍然需要人工检查,这无疑带来了巨大的劳动消耗。因此,为不同的数据源制定统一的描述和检索规范是非常重要的。
多源数据丢失
从多个数据源构建数据集时,由于数据源中缺失了部分脆弱数据,导致生成的数据集不可避免地引入空值,甚至不同数据源之间的数据维度存在差异。例如,NVD数据库中的一些CVE记录可能只包含描述性信息、缺失的漏洞类型、项目存储库链接、严重性评分等。使用机器学习方法研究漏洞时,这种漏洞数据被认为是有缺陷的。Rostami等人提出了一种监督机器学习方法来填补大多数漏洞样本[9]中缺失的网络攻击行为分类值(ATT&CK)。该方法根据漏洞数据集中常见攻击模式枚举与分类(CAPEC)特征,推导出相应的ATT&CK值。但是,由于攻击行为的复杂性和部分一般性,该方法不能学习数据集中不包含的分类特征,建模困难。这解决了脆弱性数据集数据量不完整的问题。但是,由于攻击行为的复杂性和部分一般性,该方法不能学习数据集中不包含的分类特征,建模困难。
特征
特性是漏洞模型学习的关键(如风险级别、受影响版本、系统环境等)。漏洞样本包含的特征越多,对漏洞的描述就越全面,也就越有利于我们对漏洞的深入研究。例如,漏洞的补丁特征码对漏洞的修复进行了详细的描述。在检测代码重用漏洞时,AI模型能够准确识别漏洞代码与固定代码的区别,减少误报。Mvp: Detecting vulnerabilities using patch-enhanced vulnerability signatures提出了一种将漏洞代码与补丁代码相结合,以哈希值的形式存储的数据集构建方法,可以快速准确地识别代码重用漏洞。但是现有的漏洞数据集大多只收集了漏洞的源代码和普通代码,缺乏对漏洞的全面描述【Devign: Effective vulnerability identification by learning comprehensive program semantics via graph neural networks】。但是,考虑太多的特性也会显著降低模型的性能。因此,漏洞数据集应该具有哪些特征是一个值得思考的问题。
粒度
高质量的数据集应该包含多个粒度级别[12]、[13],例如文件、类、函数等。
但function层面的粒度仍不足以包含漏洞产生的根本原因,模型只能找到漏洞函数,无法精确定位与漏洞直接相关的代码,也无法处理跨function问题。
因此要通过切片问题来解决。
数据集大小
漏洞样本容量大并不是一件好事。**漏洞数据越多并不意味着数据集包含的漏洞种类越多。**由于真实程序中漏洞的多样性,几乎不可能在只覆盖一种或几种漏洞类型的数据集上训练一个真正满足真实程序的漏洞检测模型。此外,面对不断扩展的数据集,我们还必须考虑漏洞检测模型的灾难性遗忘问题。
4.现有最先进的漏洞数据集
综上所述,现有的开源漏洞数据集虽然可以在一定程度上满足特定AI模型的训练需求,但仍存在明显的局限性,无法全面反映真实世界的多元漏洞格局。据我们所知,没有数据集满足真正基准测试数据集的标准。
5.挑战和机遇
数据源多样、数据量足够大、漏洞特征全面、漏洞类型分布均匀、更新频繁的数据集是衡量漏洞检测模型性能的关键。因此,迫切需要一个标准化、规范化的基准数据集作为评估和比较模型有效性的统一标准。我们认为标准基准数据集应该基于多层次的检测粒度进行精心定制,并且应该包含少量的合成代码样本和大量的真实代码样本,以进行定性和定量的评估和比较。
此外,大多数可用的漏洞数据集通常规模较小,这些数据集中有很大一部分缺乏标记信息,甚至被错误标记为[30]、[31]、[5]。如果没有正确标记,这些数据可能成为影响检测模型性能的噪声点。目前,大多数自动化漏洞数据收集框架要么依赖安全专家的先验知识来确定样本的正确标记,要么假设所有收集的样本都被正确标记,这显然是不合理的。手工标注似乎解决了部分问题,但手工验证每个样本数据是一种非常低效的方法。因此,基于人工智能模型的漏洞数据自动标注与人工审查相结合可能是提高漏洞数据集质量的更实用方法。我们相信这是未来脆弱性数据集研究的一个有趣方向。
准确区分应用的补丁和非易受攻击的修改代码信息,甚至失败的补丁,将是一项有趣的任务。