关键词自动采集生成内容系统(软件安全领域缺乏*敏*感*词*、真实、有效的漏洞数据集)
优采云 发布时间: 2021-10-23 04:08关键词自动采集生成内容系统(软件安全领域缺乏*敏*感*词*、真实、有效的漏洞数据集)
漏洞数据分散在数百个资源中。这些数据分散、无格式,采集不便,处理复杂。然而,人工构建的漏洞数据集样本类型简单、特征单一,难以支持真实软件漏洞检测的研究。因此,软件安全领域缺乏*敏*感*词*、真实、有效的漏洞数据集。针对这一问题,本文提出了一种面向开源软件的漏洞数据自动化采集及处理系统,可自动从多源平台对采集补丁文件进行冗余处理和统一处理. 获取精简的数据集,进一步生成大量漏洞样本。与已有研究相比,本文构建的系统可以采集更多的平台漏洞数据源,漏洞数据更丰富,样本质量更高。通过深度学习漏洞检测实验,证明本文在数据集上训练的模型在真实软件漏洞检测中更有效。
本成果已在实验室的github组织下开源,相关内容请访问。
背景和动机
在软件安全领域,漏洞检测技术是一个具有挑战性的问题。为了减少人工参与,提高漏洞检测的检测规模和速度,基于深度学习的漏洞检测模型应运而生。然而,漏洞检测领域缺乏*敏*感*词*、真实的漏洞数据集。一方面,目前公开的人工构建的数据集,如SARD数据集,只能作为学术研究的对象,对真实漏洞的研究帮助相对有限。用于在真实软件中训练基于深度学习的漏洞检测模型。漏洞检测效果不好。另一方面,漏洞数据分散在数百个资源中,没有统一的访问渠道,这些数据零散无格式,给采集和数据的处理带来了挑战。此外,不同来源的漏洞数据质量并不统一。有些是安全缺陷,不一定是漏洞补丁。传统的采集方法依赖安全专家通过人工分析过滤,费时费力,效率低,成本高。针对这些问题,本文构建了一个自动化的漏洞数据采集及处理系统,旨在总结漏洞数据的分布规律和内容特征,突破漏洞数据精准提取的关键点。并自动过滤漏洞补丁链接。解决大数据环境下海量异构漏洞信息自动化采集和多源漏洞补丁采集问题的技术,实现*敏*感*词*、高质量的漏洞构建数据集。学习漏洞检测提供有效的训练数据,提高模型检测的准确率。设计与实现如图1所示。 系统主要有三个模块:1)Data采集模块,输入为美国国家漏洞数据库NVD和常见漏洞,输出为漏洞信息和补丁文件;2)数据处理模块,输入为多个源的补丁文件采集,输出为处理后的精简补丁库;3)
图1 系统架构图
在data采集模块中,我们对权威漏洞数据库NVD的数据进行解析提取,得到结构化的漏洞属性信息。进一步对主流开源软件的漏洞参考链接进行系统分析研究,找出漏洞所在的平台链接,从不同的安全发布平台获取漏洞补丁文件,方便获取漏洞样本,为深度学习提供数据支持漏洞检测研究。. 我们提出了一种基于多源补丁的数据自动化采集模型,并通过三种方法自动化采集补丁。首先是从补丁的安全漏洞公告平台获取补丁,软件厂商自己的漏洞公告平台,以及代码管理仓库。系统分析总结了数百个补丁发布平台,总结了20多个补丁自动化采集网站,如图2所示。 二是过滤GitHub历史修改Commit用“CVE” "关键词,查找CVE的修改记录,自动过滤历史修改。三是在bug追踪平台Bugzilla的NVD Reference中搜索与CVE匹配的bugid,获取对应的bug修复文件或补丁。如图2所示。 二是过滤GitHub的历史修改Commit用“CVE”关键词,找到CVE的修改记录,自动过滤历史修改。三是在bug追踪平台Bugzilla的NVD Reference中搜索与CVE匹配的bugid,获取对应的bug修复文件或补丁。如图2所示。 二是过滤GitHub的历史修改Commit用“CVE”关键词,找到CVE的修改记录,自动过滤历史修改。三是在bug追踪平台Bugzilla的NVD Reference中搜索与CVE匹配的bugid,获取对应的bug修复文件或补丁。
图2 补丁源平台
在数据处理模块中,我们系统地分析了多源补丁的结构和格式,总结了标准补丁文件结构和内容信息,并对通过各种采集方法获得的补丁文件进行了合并和删除。处理,相同软件版本的冗余如图3所示,不同版本软件的冗余如图4所示。 我们提出了一套基于多类信息的补丁有效性评估机制,结合提取的漏洞文件名、函数名、补丁源平台,判断补丁文件与漏洞的相关性。如果补丁直接针对漏洞功能,会被认为是最准确的类型1;如果补丁是针对易受攻击文件的修复,则视为次精准类型2。判断该补丁是针对CVE的修复,为类型3;如果不能根据现有信息直接判断,需要人工进一步处理,则暂按第4类处理。
图3 相同软件版本的补丁冗余
图4 不同软件版本的补丁冗余
在数据生成模块中,我们将补丁文件与代码库进行匹配,得到函数级和文件级的细粒度漏洞样本。由于源代码漏洞数据集为线性文本形式,无法反映代码程序的控制依赖信息和层次结构信息,缺乏程序语义与漏洞特征的关系。难以进一步分析并获得准确的语法结构信息,因此需要具有更多语义信息的中间语言形式的漏洞数据,以提供更全面、更直接的代码表示,提高检测能力和准确率漏洞检测模型。该模块为主流软件的各个版本构建编译环境,查找编译漏洞文件所需的头文件、库文件等依赖,使用编译器生成中间语言形式的漏洞样本。目前已经对19款开源软件进行采集数据处理,获得了有效的细粒度漏洞样本库。补丁库涵盖4643个CVE,收录8685个补丁文件。漏洞样本库收录6847个漏洞文件样本、6573个非漏洞文件样本、10412个漏洞函数/非漏洞函数程序样本。统计结果见表1。并使用编译器生成中间语言形式的漏洞样本。目前已经对19款开源软件进行采集数据处理,获得了有效的细粒度漏洞样本库。补丁库涵盖4643个CVE,收录8685个补丁文件。漏洞样本库收录6847个漏洞文件样本、6573个非漏洞文件样本、10412个漏洞函数/非漏洞函数程序样本。统计结果见表1。并使用编译器生成中间语言形式的漏洞样本。目前已经对19款开源软件进行采集数据处理,获得了有效的细粒度漏洞样本库。补丁库涵盖4643个CVE,收录8685个补丁文件。漏洞样本库收录6847个漏洞文件样本、6573个非漏洞文件样本、10412个漏洞函数/非漏洞函数程序样本。统计结果见表1。漏洞样本库收录6847个漏洞文件样本、6573个非漏洞文件样本、10412个漏洞函数/非漏洞函数程序样本。统计结果见表1。漏洞样本库收录6847个漏洞文件样本、6573个非漏洞文件样本、10412个漏洞函数/非漏洞函数程序样本。统计结果见表1。
表 1 数据集统计
最有效的模型BGRU用于基于深度学习的漏洞检测框架SySeVR()进行训练。第一个实验是使用原创数据集检测真实漏洞数据NVD的结果。原创数据集有来自 SARD 的 14,000 个程序和来自 NVD 的 1591 个程序。其中,SADR漏洞程序(包括漏洞功能和补丁功能)13906个,非漏洞程序94个,NVD漏洞874个。程序,717 个非易受攻击的程序。实验 2 使用了新的数据集,并继续使用原创数据集中来自 SARD 的数据集。将部分NVD数据集替换为本文构建的6847个易受攻击程序和6573个非易受攻击程序,并在真实软件漏洞数据集NVD上进行测试。
表2 漏洞检测实验结果对比
可以看出,使用系统构建的数据集训练的模型在真实数据集漏洞检测中表现更好。这体现在假阴性率和假阳性率的降低,以及准确率、准确率和召回率的提高上。这是因为在模型训练中加入了大量真实的软件漏洞数据,提供了丰富的漏洞样本,让模型可以检查漏洞特征,进行更全面的学习。