CN113221960A - 一种高质量漏洞数据收集模型的构建方法及收集方法 - Google Patents
一种高质量漏洞数据收集模型的构建方法及收集方法 Download PDFInfo
- Publication number
- CN113221960A CN113221960A CN202110424826.0A CN202110424826A CN113221960A CN 113221960 A CN113221960 A CN 113221960A CN 202110424826 A CN202110424826 A CN 202110424826A CN 113221960 A CN113221960 A CN 113221960A
- Authority
- CN
- China
- Prior art keywords
- sample set
- change submission
- vulnerability
- warehouse
- model
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2411—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24147—Distances to closest patterns, e.g. nearest neighbour classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2415—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on parametric or probabilistic models, e.g. based on likelihood ratio or false acceptance rate versus a false rejection rate
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/243—Classification techniques relating to the number of classes
- G06F18/24323—Tree-organised classifiers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/284—Lexical analysis, e.g. tokenisation or collocates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Probability & Statistics with Applications (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种高质量漏洞数据收集模型的构建方法及收集方法,收集变更提交文件作为样本集,并对样本集进行标签处理得到正样本集和负样本集;提取样本集中变更提交文件的数值特征,提取样本集中变更提交文件的变更提交描述信息,提取样本集中变更提交文件中的代码块;本发明的专家集成模型集成多个优秀的分类器,规避了单个机器学习模型的缺陷,在漏洞识别方面提升了准确率;本发明将专家集成模型和保形评估分类器相结合,即将机器学习技术中的概率学习和统计评估结合起来,显著提高了专家集成模型预测数据的准确性和可靠性,降低了假阳率,解决了现在一些漏洞数据获取模型存在的误报问题,为高质量源代码漏洞数据缺乏提供了可行性方案。
Description
技术领域
本发明属于代审计领域,涉及源代码特征提取技术,具体涉及一种高质量漏洞数据收集模型的构建方法及收集方法。
背景技术
传统的深度学习算法通常需要数以百万计的漏洞样本来学习一个有效的模型,通过数量充分的训练数据才能发挥深度学习对于潜在漏洞模式学习的潜力。但是,由于现实生活中高质量的漏洞样本十分匮乏,所以训练数据的缺乏限制了漏洞检测模型的质量。以前的一些方法是使用程序生成来生成漏洞样本,从而缓解训练样本不足的问题,然而程序生成有两个明显的缺点,一方面,它们受用于生成程序的语法、模板或模型的影响。另一方面,他们不能反映现实程序的多样化和不断发展的模式。
虽然目前存在一些标准漏洞数据库如SARD,SAMATE数据集,为安全研究人员对已有漏洞进行分析和应用提供了便利。但是标准漏洞数据集中的缺陷样本仍然存在很多问题:第一,样本量少,通常一种类型的漏洞只有几百条,不足以支持一个高质量的漏洞检测模型的训练;第二,样本种类单一,标准漏洞库中往往只包含会导致此类漏洞的少数情况;第三,标准漏洞数据集更新缓慢。
基于标准漏洞数据库的上述缺陷,我们将GitHub作为数据收集的平台。GitHub作为全球最大的代码托管平台,能够提供丰富的数据来源。如果能够构建一种高质量的漏洞收集模型,能够自动的从GitHub获取高质量的缺陷样本,则可以解决数据缺乏的问题。
发明内容
针对现有技术存在的不足,本发明的目的在于,提供一种高质量漏洞数据收集模型的构建方法及收集方法,解决现有技术中高质量源代码漏洞数据缺乏的技术问题。
为了解决上述技术问题,本发明采用如下技术方案予以实现:
一种高质量漏洞数据收集模型的构建方法,该方法按照以下步骤进行:
步骤1,收集变更提交文件作为样本集,并对样本集进行标签处理得到正样本集和负样本集;
所述的变更提交文件包括提交到CVE中的易受攻击的变更提交文件和未提交到CVE中的易受攻击的变更提交文件;
步骤2,提取样本集中变更提交文件的数值特征,提取样本集中变更提交文件的变更提交描述信息,提取样本集中变更提交文件中的代码块,并将代码块存储到code集合;
所述的数值特征包括星级、提交总数、发布总数、仓库的贡献者、贡献率和分支总数;
所述的代码块包括修改文件中的删除行代码和增加行代码;
步骤3,对变更提交描述信息进行第一向量化处理得到特征向量1,对code集合进行第二向量化处理得到特征向量2,将数值特征、特征向量1和特征向量2裁剪平铺成一维特征,并将一维特征作为变更提交文件的数字特征向量;
步骤4,将数字特征向量作为训练集,所述的训练集包括正训练集和负训练集;
步骤5,搭建专家集成模型和保形评估分类器;
步骤5.1,利用收集的变更提交文件训练单个分类器,确定每一个分类器的最优超参数;将五个分类器组合成专家集成模型,并选择专家集成模型的投票机制为软投票;
所述的五个分类器是支持向量机、随机森林、k-最近邻、逻辑回归和梯度提升;
步骤5.2,将正训练集和负训练集输入到专家集成模型进行训练,得到训练好的专家集成模型;
步骤5.3,设置保形评估分类器的阈值C,将训练好的专家集成模型输入到保形评估分类器中,得到搭建好的保形评估分类器,将数字特征向量输入到搭建好的保形评估分类器进行训练,得到训练好的保形评估分类器。
具体的,所述的获取数据并对数据进行标签化的过程按照以下步骤进行:
步骤1.1,借助托管平台提供的API爬取仓库名,按照托管平台上仓库的星级排名等级,选取星级高于10的java仓库的仓库名;
步骤1.2,用步骤1.1仓库名和托管平台的API中变更提交文件的下载规则拼接仓库名和关键字作为下载链接,并用下载链接下载高质量的漏洞样本作为第一原始样本集;
所述的关键字为FIX CVE和CVE ID;
步骤1.3,判断第一样本集中变更提交描述信息是否有映射到CVE标准漏洞库的CVE ID且变更提交文件是否对CVE ID描述的漏洞做了修复,否则丢弃数据,是则保留数据,并将其作为第一样本集;
步骤1.4,借助托管平台提供的API爬取仓库名,按照托管平台上仓库的星级排名等级,从中选取仓库星级高于1000的仓库的仓库名。
步骤1.5,用步骤1.4得到的仓库名和托管平台的API中变更提交文件的下载规则拼接仓库名和正则表达式作为下载链接,并用下载链接下载高质量的漏洞样本作为第二样本集;
步骤1.6,将第一样本集和第二样本集共同作为模型训练的样本集。
具体的,所述的标签处理为人工判断样本集中的变更提交文件是否为缺陷数据,若是缺陷数据,则将该变更提交文件作为正样本集,若不是缺陷数据,则将该变更提交文件作为模型训练的负样本集。
具体的,所述的第一向量化处理的过程按照以下步骤进行:
步骤4.1,提取训练集中变更提交文件所属仓库高度相关的数值特征;
步骤4.2,使用词法分析将步骤3中提取的变更提交描述信息划分为一系列token,丢弃带有中文词描述的token,使用工具让每一个token均生成一个与之相对应的50维的向量,将向量拼接得到特征向量1。
具体的,所述的第二向量化处理的过程按照以下步骤进行:
步骤4.2,通过词法分析将步骤3中提取的code集合划分为一系列token使用工具让每一个token均生成一个与之相对应的50维的向量,将向量拼接得到特征向量2;
所述的token包括标识符、关键字、运算符和符号;
一种高质量漏洞数据的收集方法,该方法按照以下步骤进行:
步骤一,收集变更提交文件,并按照权利要求1中所述的步骤2和步骤3对所述的变更提交文件进行处理得到评估用的数字特征向量;
步骤二,将评估用的数字特征向量输入到训练好的专家集成模型和训练好的保形评估分类器,专家集成模型对数字特征向量进行预测并给出预测结果,保形评估分类器对预测结果进行评分,当评分高于1-C,则保留对应的变更提交文件作为高质量的漏洞数据;当评分低于1-C,丢弃对应的变更提交文件。
本发明与现有技术相比,有益的技术效果是:
本发明的专家集成模型集成多个优秀的分类器,规避了单个机器学习模型的缺陷,在漏洞识别方面提升了准确率;本发明将专家集成模型和保形评估分类器相结合,即将机器学习技术中的概率学习和统计评估结合起来,显著提高了专家集成模型预测数据的准确性和可靠性,降低了假阳率,解决了现在一些漏洞数据获取模型存在的误报问题,为高质量源代码漏洞数据缺乏提供了可行性方案。
附图说明
图1本发明的流程图。
图2.变更提交文件。
图3从patch中提取到的code集合。
图4三种特征向量化并裁剪平铺得到2000维数字特征向量。
图5专家集成模型结构图。
图6用于过滤与漏洞相关的变更提交文件步骤的正则表达式。
图7集成分类器与单分类器对比实验。
图8漏洞数据收集方法对比实验。
图9基于VULDEEPECKER方法的数据改进实验。
图10基于μVULDEEPECKER方法的数据改进实验。
图11保形评估分类器的对比实验。
以下结合实施例对本发明的具体内容作进一步详细解释说明。
具体实施方式
需要说明的是,本申请中SARD的全称是Software Assurance ReferenceDataset,即软件保障参考数据集。
需要说明的是,本申请中SAMATE的全称是Software Assurance Metrics AndTool Evaluation即软件保证度量和工具评估。
需要说明的是,本申请中CVE的全称是Common Vulnerabilities and Exposures,即公共漏洞和暴露。
需要说明的是,本申请中CVE ID的全称是Common Vulnerabilities andExposures Identity Document,表示公共漏洞和暴露库中的编号。
需要说明的是,本申请中GitHub是一个面向开源及私有软件项目的托管平台。
需要说明的是,本申请中变更提交文件是指一次代码提交,包含代码修复提交和对代码修复的信息描述。
需要说明的是,本申请变更提交描述信息是指一次代码提交中的修改描述信息。
需要说明的是,本申请中API的全称是Application Programming Interface,即应用程序接口。
需要说明的是,本申请中的word2vec,是一种用来产生词向量的模型。这些模型为浅而双层的神经网络,用来训练以重新建构词文本。
需要说明的是,本申请中LR的全称是Logistic Regression,即逻辑回归。
需要说明的是,本申请中RF的全称是Random Forest,即随机森林。
需要说明的是,本申请中GB的全称是Gradient Boosting,即梯度提升。
需要说明的是,本申请中SVM的全称是Support Vector Machine,即支持向量机。
需要说明的是,本申请中KNN的全称是K-Nearest Neighbor,即K最近邻。
以下给出本发明的具体实施例,需要说明的是本发明并不局限于以下具体实施例凡在本申请技术方案基础上做的等同变换均落入本发明的保护范围。
实施例1:
本实施例给出了一种高质量漏洞数据收集模型的构建方法,该方法按照以下步骤进行:
步骤1,收集变更提交文件作为样本集,并对样本集进行标签处理得到正样本集和负样本集;
在本实施例中,收集到的变更提交文件如图2,
变更提交文件包括提交到CVE中的易受攻击的变更提交文件和未提交到CVE中的易受攻击的变更提交文件;
步骤2,提取样本集中变更提交文件的数值特征,提取样本集中变更提交文件的变更提交描述信息,提取样本集中变更提交文件中的代码块,并将代码块存储到code集合;
数值特征包括星级、提交总数、发布总数、仓库的贡献者、贡献率和分支总数;
在本实施例中,通过提取样本集中如图2所示的变更提交文件中的代码块,并将代码块存储到code集合,code集合如图3所示。
代码块包括修改文件中的删除行代码和增加行代码;
步骤3,对变更提交描述信息进行第一向量化处理得到特征向量1,对code集合进行第二向量化处理得到特征向量2,将数值特征、特征向量1和特征向量2裁剪平铺成一维特征,并将一维特征作为变更提交文件的数字特征向量;
在本实施例中,通过对变更提交描述信息进行第一向量化处理得到特征向量1,对code集合进行第二向量化处理得到特征向量2,将数值特征、特征向量1和特征向量2裁剪平铺成一维特征,并将一维特征作为变更提交文件的数字特征向量向量化处理得到的数字特征向量如图4。
步骤4,将数字特征向量作为训练集,训练集包括正训练集和负训练集;
步骤5,搭建专家集成模型和保形评估分类器;
步骤5.1,利用收集的变更提交文件训练单个分类器,确定每一个分类器的最优超参数;将五个分类器组合成专家集成模型,并选择专家集成模型的投票机制为软投票;
五个分类器是支持向量机、随机森林、k-最近邻、逻辑回归和梯度提升;
在本实施例中,首先通过利用收集的变更提交文件训练单个分类器,确定每一个分类器的最优超参数;将五个分类器组合成专家集成模型,然后保形评估分类器基于计算出的可能性给出评价,若评价高于设定的阈值,则对此次专家集成模型的预测结果给予肯定,专家集成模型最终给出预测结果,0代表变更提交文件不是缺陷数据,1代表变更提交文件是缺陷数据。正训练集和负训练集的数字特征向量输入到专家集成模型和保形评估分类器,得到预测结果。过程如图5。
步骤5.2,将正训练集和负训练集输入到专家集成模型进行训练,得到训练好的专家集成模型;
步骤5.3,设置保形评估分类器的阈值C,将训练好的专家集成模型输入到保形评估分类器中,得到搭建好的保形评估分类器,将数字特征向量输入到搭建好的保形评估分类器进行训练,得到训练好的保形评估分类器。
作为本实施例的一种优选方案,获取数据过程按照以下步骤进行:
步骤1.1,借助托管平台提供的API爬取仓库名,按照托管平台上仓库的星级排名等级,选取星级高于10的java仓库的仓库名;
步骤1.2,用步骤1.1仓库名和托管平台的API中变更提交文件的下载规则拼接仓库名和关键字作为下载链接,并用下载链接下载高质量的漏洞样本作为第一原始样本集;
关键字为FIX CVE和CVE ID;
步骤1.3,判断第一样本集中变更提交描述信息是否有映射到CVE标准漏洞库的CVE ID且变更提交文件是否对CVE ID描述的漏洞做了修复,否则丢弃数据,是则保留数据,并将其作为第一样本集;
步骤1.4,借助托管平台提供的API爬取仓库名,按照托管平台上仓库的星级排名等级,从中选取仓库星级高于1000的仓库的仓库名。
步骤1.5,用步骤1.4得到的仓库名和托管平台的API中变更提交文件的下载规则拼接仓库名和正则表达式作为下载链接,并用下载链接下载高质量的漏洞样本作为第二样本集;
在本实施例中,正则表达式如图6;所采用的的托管平台是GitHub。
步骤1.6,将第一样本集和第二样本集共同作为模型训练的样本集;
作为本实施例的一种优选方案,标签处理为人工判断样本集中的变更提交文件是否为缺陷数据,若是缺陷数据,则将该变更提交文件作为正样本集,若不是缺陷数据,则将该变更提交文件作为模型训练的负样本集。
作为本实施例的一种优选方案,第一向量化处理的过程按照以下步骤进行:
使用词法分析将步骤3中提取的变更提交描述信息划分为一系列token,丢弃带有中文词描述的token,使用工具让每一个token均生成一个与之相对应的50维的向量,将向量拼接得到特征向量1;
本实施例中,实用的工具为word2vec。
作为本实施例的一种优选方案,第二向量化处理的过程按照以下步骤进行:
通过词法分析将步骤3中提取的code集合划分为一系列token使用工具让每一个token均生成一个与之相对应的50维的向量,将向量拼接得到特征向量2;
token包括标识符、关键字、运算符和符号。
实施例2:
本实施例给出了一种高质量漏洞数据的收集方法,该方法按照以下步骤进行:
步骤一,收集变更提交文件,并按照权利要求1中步骤2和步骤3对变更提交文件进行处理得到评估用的数字特征向量;
步骤二,将评估用的数字特征向量输入到训练好的专家集成模型和训练好的保形评估分类器,专家集成模型对数字特征向量进行预测并给出预测结果,保形评估分类器对预测结果进行评分,当评分高于1-C,则保留对应的变更提交文件作为高质量的漏洞数据;当评分低于1-C,丢弃对应的变更提交文件。
在本实施例中,应用保形评估分类器计算输入数字特征向量x的类别y的置信度值pv,为了计算每一个x的pv,使用每个弱监督模型特定的度量函数A(x,y,h)来计算弱监督模型h对数字特征向量x预测的校准分数;
为了计算置信度值pv,预留10%的数字特征向量作为验证集,并分别计算每个弱监督模型对验证集中的n个输入样本的校准分数给定一个新的输入样本xn+1,并利用度量函数A(x,y,h)计算校准分数然后为样本xn+1的pv:
其中:
pv表示保形评估分类器对输入x的评价分数;
COUNT表示样本个数相加;
i表示第i个样本;
yi表示第i个样本的标签;
yp表示样本标签类别;
x表示数字特征向量;
xn+1表示第n+1个数字特征向量;
C表示设定的置信度阈值,在实施例中设置为0.3;
A(x,y,h)表示弱监督模型对输入的数字特征向量x的预测函数;
若计算得到的pv值接近下界1/(n+1),则预测不准确,若接近上界1,则预测是准确的,在本实施例中只考虑pv大于1-C的预测,并设定C为0.3时,专家集成模型具有最佳性能。
实测例1:
遵循上述技术方案,将本发明中专家集成模型和5个漏洞数据爬取模型(VCCFinder、ZvD、VULPECKER、ZHOU et al.、SABETTA et al.)分别在相同的数据集上进行训练。实验结果见图7。横轴表示FPR(真阳率)阈值,纵轴表示TPR(假阳率)阈值。在相同的假阳率阈值下,专家集成模型方法的真阳率高于另外5种数据收集方案;在相同的真阳率阈值下,专家集成模型的假阳率低于另外5种数据收集方案;专家集成模型确保在较低假阳率时仍然拥有较高的真阳率。
实测例2:
遵循上述技术方案,将本发明专家集成模型与单个分类器模型方法进行比较,专家集成模型和5个单独的分类器(LR、RF、GB、SVM、KNN)在相同的数据集上进行训练,实验结果见图8,横轴表示FPR(真阳率)阈值,纵轴表示TPR(假阳率)阈值,在相同的假阳率阈值下,专家集成模型的真阳率均高于另外5个单独的分类器;在相同的真阳率阈值下,专家集成模型的假阳率均低于另外5个单独的分类器;专家集成模型确保在较低假阳率时仍然拥有较高的真阳率。
实测例3:
遵循上述技术方案,将发明中的漏洞收集方法与现有的3种漏洞收集方法(ZvD、ZHOU et al.、SABETTA et al.)进行对比,使用本发明和另外3种漏洞收集方法获得的数据分别应用到两个漏洞检测方法(VULDEEPECKER和μVULDEEPECKER)中,基于VULDEEPECKER漏洞检测方法的实验结果如图9。图9报告了基于VULDEEPECKER漏洞检测方法在使用不同数据收集方法的检测效果,在Accuracy(准确率)、Precision(精确度)、Recall(召回率)、F1score(F1得分)四个评价指标上均有不同幅度的提升。其中,横轴展示了四个评价指标,纵轴展示了对基准模型的提升效果,负值表示性能下降。在Accuracy(准确率)、Precision(精确度)、Recall(召回率)、F1 score(F1得分)四个评价指标上,本发明收集到的数据对μVULDEEPECKER漏洞检测方法的对检测效果的提升均能维持在10.2%~12%之间,而其他三种漏洞数据收集方案收集到的数据对VULDEEPECKER漏洞检测方法的对检测效果的提升最高仅达到6%,本发明中的收集方法对于最终检测效果的提升将近是其他三种方法两倍的效果,因此,本发明中的收集方法优于现有的漏洞收集方法。
基于μVULDEEPECKER漏洞检测方法的实验见图10。图10报告了基于μVULDEEPECKER漏洞检测方法使用不同数据收集方法的检测效果,在Accuracy(准确率)、Precision(精确度)、Recall(召回率)、F1 score(F1得分)四个评价指标上均有不同幅度的提升,横轴展示了四个评价指标,纵轴展示对基准模型的提升效果,负值表示性能下降,在Accuracy(准确率)、Precision(精确度)、Recall(召回率)、F1 score(F1得分)四个评价指标上,本发明收集到的数据对μVULDEEPECKER漏洞检测方法对检测效果的提升均能维持在12%~14%之间,而其他三种漏洞数据收集方案收集到的数据对μVULDEEPECKER漏洞检测方法对检测效果的提升最高仅达到7%,本发明中的收集方法对于最终检测效果的提升将近是其他三种方法两倍的效果,因此,本发明中的收集方法优于现有的漏洞收集方法。
实测例4:
遵循上述技术方案,将集成分类器和应用保形评估分类器的专家集成模型在相同的数据集上进行训练,实验结果见图11,横轴表示实验次数,纵轴表示准确率。应用保形评估分类器的专家集成模型的准确率相比集成分类器提升效果均能维持在%4~12%,应用保形评估分类器的专家集成模型的准确率最高能达到91%,保形评估分类器对于模型的分类起到关键作用。
Claims (6)
1.一种高质量漏洞数据收集模型的构建方法,其特征在于,该方法按照以下步骤进行:
步骤1,收集变更提交文件作为样本集,并对样本集进行标签处理得到正样本集和负样本集;
所述的变更提交文件包括提交到CVE中的易受攻击的变更提交文件和未提交到CVE中的易受攻击的变更提交文件;
步骤2,提取样本集中变更提交文件的数值特征,提取样本集中变更提交文件的变更提交描述信息,提取样本集中变更提交文件中的代码块,并将代码块存储到code集合;
所述的数值特征包括星级、提交总数、发布总数、仓库的贡献者、贡献率和分支总数;
所述的代码块包括修改文件中的删除行代码和增加行代码;
步骤3,对变更提交描述信息进行第一向量化处理得到特征向量1,对code集合进行第二向量化处理得到特征向量2,将数值特征、特征向量1和特征向量2裁剪平铺成一维特征,并将一维特征作为变更提交文件的数字特征向量;
步骤4,将数字特征向量作为训练集,所述的训练集包括正训练集和负训练集;
步骤5,搭建专家集成模型和保形评估分类器;
步骤5.1,利用收集的变更提交文件训练单个分类器,确定每一个分类器的最优超参数;将五个分类器组合成专家集成模型,并选择专家集成模型的投票机制为软投票;
所述的五个分类器是支持向量机、随机森林、k-最近邻、逻辑回归和梯度提升;
步骤5.2,将正训练集和负训练集输入到专家集成模型进行训练,得到训练好的专家集成模型;
步骤5.3,设置保形评估分类器的阈值C,将训练好的专家集成模型输入到保形评估分类器中,得到搭建好的保形评估分类器,将数字特征向量输入到搭建好的保形评估分类器进行训练,得到训练好的保形评估分类器。
2.如权利要求1所述的高质量漏洞数据收集模型的构建方法,其特征在于,所述的获取数据并对数据进行标签化的过程按照以下步骤进行:
步骤1.1,借助托管平台提供的API爬取仓库名,按照托管平台上仓库的星级排名等级,选取星级高于10的java仓库的仓库名;
步骤1.2,用步骤1.1仓库名和托管平台的API中变更提交文件的下载规则拼接仓库名和关键字作为下载链接,并用下载链接下载高质量的漏洞样本作为第一原始样本集;
所述的关键字为FIX CVE和CVE ID;
步骤1.3,判断第一样本集中变更提交描述信息是否有映射到CVE标准漏洞库的CVE ID且变更提交文件是否对CVE ID描述的漏洞做了修复,否则丢弃数据,是则保留数据,并将其作为第一样本集;
步骤1.4,借助托管平台提供的API爬取仓库名,按照托管平台上仓库的星级排名等级,从中选取仓库星级高于1000的仓库的仓库名;
步骤1.5,用步骤1.4得到的仓库名和托管平台的API中变更提交文件的下载规则拼接仓库名和正则表达式作为下载链接,并用下载链接下载高质量的漏洞样本作为第二样本集;
步骤1.6,将第一样本集和第二样本集共同作为模型训练的样本集。
3.如权利要求1所述的高质量漏洞数据收集模型的构建方法,其特征在于,所述的标签处理为人工判断样本集中的变更提交文件是否为缺陷数据,若是缺陷数据,则将该变更提交文件作为正样本集,若不是缺陷数据,则将该变更提交文件作为模型训练的负样本集。
4.如权利要求1所述的高质量漏洞数据收集模型的构建方法,其特征在于,所述的第一向量化处理的过程按照以下步骤进行:
步骤4.1,提取训练集中变更提交文件所属仓库高度相关的数值特征;
步骤4.2,使用词法分析将步骤3中提取的变更提交描述信息划分为一系列token,丢弃带有中文词描述的token,使用工具让每一个token均生成一个与之相对应的50维的向量,将向量拼接得到特征向量1。
5.如权利要求1所述的高质量漏洞数据收集模型的构建方法,其特征在于,所述的第二向量化处理的过程按照以下步骤进行:
步骤4.2,通过词法分析将步骤3中提取的code集合划分为一系列token使用工具让每一个token均生成一个与之相对应的50维的向量,将向量拼接得到特征向量2;
所述的token包括标识符、关键字、运算符和符号。
6.一种高质量漏洞数据的收集方法,其特征在于,该方法按照以下步骤进行:
步骤一,收集变更提交文件,并按照权利要求1中所述的步骤2和步骤3对所述的变更提交文件进行处理得到评估用的数字特征向量;
步骤二,将评估用的数字特征向量输入到训练好的专家集成模型和训练好的保形评估分类器,专家集成模型对数字特征向量进行预测并给出预测结果,保形评估分类器对预测结果进行评分,当评分高于1-C,则保留对应的变更提交文件作为高质量的漏洞数据;当评分低于1-C,丢弃对应的变更提交文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110424826.0A CN113221960B (zh) | 2021-04-20 | 2021-04-20 | 一种高质量漏洞数据收集模型的构建方法及收集方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110424826.0A CN113221960B (zh) | 2021-04-20 | 2021-04-20 | 一种高质量漏洞数据收集模型的构建方法及收集方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113221960A true CN113221960A (zh) | 2021-08-06 |
CN113221960B CN113221960B (zh) | 2023-04-18 |
Family
ID=77088249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110424826.0A Active CN113221960B (zh) | 2021-04-20 | 2021-04-20 | 一种高质量漏洞数据收集模型的构建方法及收集方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113221960B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114120120A (zh) * | 2021-11-25 | 2022-03-01 | 广东电网有限责任公司 | 基于遥感影像的违章建筑检测方法、装置、设备及介质 |
CN115048316A (zh) * | 2022-08-15 | 2022-09-13 | 中国电子科技集团公司第三十研究所 | 一种半监督的软件代码缺陷检测方法及装置 |
CN116302043A (zh) * | 2023-05-25 | 2023-06-23 | 深圳市明源云科技有限公司 | 代码维护问题检测方法、装置、电子设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109886020A (zh) * | 2019-01-24 | 2019-06-14 | 燕山大学 | 基于深度神经网络的软件漏洞自动分类方法 |
CN110197286A (zh) * | 2019-05-10 | 2019-09-03 | 武汉理工大学 | 一种基于混合高斯模型和稀疏贝叶斯的主动学习分类方法 |
US20200320254A1 (en) * | 2019-04-03 | 2020-10-08 | RELX Inc. | Systems and Methods for Dynamically Displaying a User Interface of an Evaluation System Processing Textual Data |
-
2021
- 2021-04-20 CN CN202110424826.0A patent/CN113221960B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109886020A (zh) * | 2019-01-24 | 2019-06-14 | 燕山大学 | 基于深度神经网络的软件漏洞自动分类方法 |
US20200320254A1 (en) * | 2019-04-03 | 2020-10-08 | RELX Inc. | Systems and Methods for Dynamically Displaying a User Interface of an Evaluation System Processing Textual Data |
CN110197286A (zh) * | 2019-05-10 | 2019-09-03 | 武汉理工大学 | 一种基于混合高斯模型和稀疏贝叶斯的主动学习分类方法 |
Non-Patent Citations (2)
Title |
---|
ULF JOHANSSON: "Model-agnostic nonconformity functions for conformal classification", 《2017 INTERNATIONAL JOINT CONFERENCE ON NEURAL NETWORKS (IJCNN)》 * |
任才溶: "基于并行随机森林的城市PM2.5浓度预测", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114120120A (zh) * | 2021-11-25 | 2022-03-01 | 广东电网有限责任公司 | 基于遥感影像的违章建筑检测方法、装置、设备及介质 |
CN115048316A (zh) * | 2022-08-15 | 2022-09-13 | 中国电子科技集团公司第三十研究所 | 一种半监督的软件代码缺陷检测方法及装置 |
CN116302043A (zh) * | 2023-05-25 | 2023-06-23 | 深圳市明源云科技有限公司 | 代码维护问题检测方法、装置、电子设备及可读存储介质 |
CN116302043B (zh) * | 2023-05-25 | 2023-10-10 | 深圳市明源云科技有限公司 | 代码维护问题检测方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113221960B (zh) | 2023-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109697162B (zh) | 一种基于开源代码库的软件缺陷自动检测方法 | |
CN113221960B (zh) | 一种高质量漏洞数据收集模型的构建方法及收集方法 | |
CN111309912B (zh) | 文本分类方法、装置、计算机设备及存储介质 | |
CN109829155B (zh) | 关键词的确定方法、自动评分方法、装置、设备及介质 | |
CN109635108B (zh) | 一种基于人机交互的远程监督实体关系抽取方法 | |
US20210097343A1 (en) | Method and apparatus for managing artificial intelligence systems | |
CN111459799A (zh) | 一种基于Github的软件缺陷检测模型建立、检测方法及*** | |
Kobayashi et al. | Towards an NLP-based log template generation algorithm for system log analysis | |
CN110162478B (zh) | 一种基于缺陷报告的缺陷代码路径定位方法 | |
CN107862327B (zh) | 一种基于多特征的安全缺陷识别***和方法 | |
CN111860981B (zh) | 一种基于lstm深度学习的企业国民行业类别预测方法及*** | |
CN111460250A (zh) | 用于画像的数据的清洗方法、装置、介质及电子设备 | |
CN107368526A (zh) | 一种数据处理方法及装置 | |
US11385988B2 (en) | System and method to improve results of a static code analysis based on the probability of a true error | |
CN113626241A (zh) | 应用程序的异常处理方法、装置、设备及存储介质 | |
Xu et al. | A GitHub-based data collection method for software defect prediction | |
CN112800232A (zh) | 基于大数据的案件自动分类、优化方法及训练集修正方法 | |
CN116523284A (zh) | 基于机器学习的业务操作流程自动化评估方法、*** | |
CN114139636B (zh) | 异常作业处理方法及装置 | |
CN114238768A (zh) | 资讯信息的推送方法、装置、计算机设备和存储介质 | |
CN110888977A (zh) | 文本分类方法、装置、计算机设备和存储介质 | |
CN115686995A (zh) | 一种数据监控处理方法及装置 | |
Ehsan et al. | Ranking code clones to support maintenance activities | |
CN113722230A (zh) | 针对模糊测试工具漏洞挖掘能力的集成化评估方法及装置 | |
CN106326472B (zh) | 一种侦查信息完整性验证方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |