(19)中华 人民共和国 国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210049750.2
(22)申请日 2022.01.17
(71)申请人 浙大城市学院
地址 310015 浙江省杭州市拱 墅区湖州街
51号
(72)发明人 张芸 吴明晖 王世超 鲍凌峰
夏鑫
(74)专利代理 机构 杭州求是专利事务所有限公
司 33200
代理人 陈升华
(51)Int.Cl.
G06F 21/57(2013.01)
G06F 21/56(2013.01)
G06F 40/289(2020.01)
G06F 40/30(2020.01)G06K 9/62(2022.01)
G06N 3/04(2006.01)
G06N 3/08(2006.01)
(54)发明名称
基于排序的开源软件安全漏洞补丁定位方
法
(57)摘要
本发明提供了一种基于排序的开源软件安
全漏洞补丁定位方法, 具体包括: 从网站中收集
漏洞和代码提交数据; 使用数据挖掘、 统计分析
方法抽取代码行、 漏洞身份、 漏洞修复位置、 分词
词袋共4个维度的漏洞和代码提交相似性特征;
训练基于Bert模型的漏洞领域文本语义编码模
块, 并使用语义编码模块提取漏洞语义特征和代
码提交语义特征; 将漏洞语义特征和代码提交语
义特征的拼接起来组成漏洞和代码提交的全部
特征; 模型训练; 使用多数投票的思想进行模型
融合。 本发明能够从漏洞和代码提交中抽取特
征, 建立漏洞补丁提交排序模型, 将开源软件仓
库中的代码提交按照与漏洞的匹配程度进行排
序, 有效地降低补丁标注人员需要检查的代码提
交数量。
权利要求书1页 说明书7页 附图4页
CN 114386048 A
2022.04.22
CN 114386048 A
1.一种基于排序的开源软件安全漏洞补丁定位方法, 其特 征在于, 包括以下步骤:
步骤1: 数据采集;
步骤2: 数据预处 理;
步骤3: 漏洞与代码提交相似性特 征提取;
步骤4: 漏洞语义特 征和代码提交语义特 征提取;
步骤5: 将步骤3和步骤4得到的所有特 征拼接起 来组成漏洞和代码提交的全部特 征;
步骤6: 模型训练;
步骤7: 使用多数投票的思想进行模型融合。
2.根据权利要求1所述的基于排序的开源软件安全漏洞补丁定位方法, 其特征在于, 步
骤1中, 数据采集具体包括:
从Snyk网站中收集漏洞与代码提交匹配关系, 根据漏洞及出现仓库生成对应负样本,
从CVE和NVD网站中收集漏洞相关数据, 从GitHub和GitLab网站收集代码提交数据。
3.根据权利要求1所述的基于排序的开源软件安全漏洞补丁定位方法, 其特征在于, 步
骤2中, 数据预处 理包括:
使用Google公司的Cubert中的分词方法对漏洞和代码提交中的文本内容进行分词, 去
掉分词后的停用词, 保留既存在于漏洞词袋中又存在于代码提交词袋中的分词。
4.根据权利要求1所述的基于排序的开源软件安全漏洞补丁定位方法, 其特征在于, 步
骤3中, 漏洞与代码提交相似性特 征提取, 包括:
代码行、 漏洞身份、 漏洞位置、 分词词袋共4个大方向上抽取漏洞与代码提交之间的相
似性特征。
5.根据权利要求1所述的基于排序的开源软件安全漏洞补丁定位方法, 其特征在于, 步
骤4中, 漏洞语义特 征和代码提交语义特 征提取, 包括:
构建Bert语义编码模块, 并生成训练框架对编码模块进行训练, 之后使用Bert模型自
带的向量化方法将漏洞描述和提交信息转换为向量形式, 然后分别经过语义编 码模块得到
漏洞语义特 征和代码提交语义特 征。
6.根据权利要求1所述的基于排序的开源软件安全漏洞补丁定位方法, 其特征在于, 步
骤6中, 模型训练, 包括:
使用XGBoost、 LightGBM、 CNN三种模型在步骤5拼接好的特征上进行训练并得到各个模
型提交在各个模型 上排名结果。
7.根据权利要求1所述的基于排序的开源软件安全漏洞补丁定位方法, 其特征在于, 步
骤7中, 使用多数投票的思想进行模型融合, 包括:
对于每一个代码提交以及步骤6中三个模型给出的排名值, 获得最接近的两个排名的
均值; 根据该均值对 所有代码提交进 行升序排序; 若均值相同, 则按照未使用的排名进行升
序排序, 以此来得到最终每 个代码提交的排名。权 利 要 求 书 1/1 页
2
CN 114386048 A
2基于排序的开源软件安全漏洞补丁定位方 法
技术领域
[0001]本发明专利涉及计算机安全技术领域, 具体涉及 一种基于排序的开源软件安全漏
洞补丁定位方法。
背景技术
[0002]XGBoost模型和LightGBM模型都是梯度提升树, 能够从多种 特征中提取自变量与
因变量之间的联系, 其原理是通过融合多个弱 分类器来达到强分类器的效果。 每次将真实
值与当前预测值的残差作为下一次弱分类器的训练目标, 不断迭代, 使最 终模型拟合数据。
不同在于, XGBoost模型中树结构采用按层生长, 而LightGBM模型中的树结构采用按叶生
长, 每次找到分裂收益较大的叶子 。
[0003]卷积神经网络(Convolutional Neural Network, 简称CNN)模型是一种采用卷积
计算的神经网络模型。 由于激活函数的非线性性和较深的网络层数, CNN模型可以检测训练
数据和预测数据之间更深层次的关系。 CNN模 型通过前向传播生成预测数据, 通过损失函数
获得模型误差, 再通过反向传播更新网络内部参数。 经过多次迭代, CNN模型可以更好的拟
合数据。
[0004]Bert(Bidirectional Encoder Representation from Transformers)模型是
Google推出的新兴的自然语言处理模型, 其将文本映射为向量形式进行训练, 并采用注意
力机制, 能够紧密联系句子上下文, 从而获得更真实的文本语义, 并通过向量的形式输出出
来。 Bert模型已被大量应用于文本处 理领域中。
[0005]当前, 开源软件被软件行业的诸多程序所使用。 然而开源软件中的安全漏洞会给
这些程序造成巨大 的损失, 如数据 泄露、 软件崩溃等问题; 并且随着开源软件的不断增多,
安全漏洞的数量也在一直增加。 为了有效管理漏洞数据, 出现了以CVE、 NVD、 Snyk为代表的
公开漏洞数据库。 这些漏洞数据库中包含着漏洞的描述信息、 相关的链接等信息, 开 发人员
可以通过浏览漏洞数据库来了解漏洞、 认知漏洞。 开源软件开发者为了修复软件中的漏洞,
通常以代码提交的形式将漏洞补丁发布于GitHub、 GitLab等网站中。 漏洞补丁对于开源软
件的漏洞管理起着重要的作用。 首先, 开 发人员可以直接应用漏洞 补丁来修复相应的漏洞;
其次, 漏洞补丁可以用来评估漏洞的严重等级, 便于软件公司合理安排修复时机; 并且, 开
发人员可以根据漏洞补丁分析漏洞特征, 学习如何补救或预防类似问题的发生; 此外, 丰富
的漏洞补丁还可以促进其他方向的漏洞研究, 例如漏洞预测、 漏洞代码克隆检测、 漏洞测试
等等。
[0006]当前定位漏洞补丁主要通过人工依次检查代码提交的方式来定位漏洞补丁, 这种
方式十分困难且耗时时间长。 当前存在一种使用特征工程的方法来定位漏洞补丁的技术,
然而这种方法仅仅从统计分析的角度来抽取漏洞与 代码提交之 间的联系, 忽略了漏洞描述
与代码提交中的语义内容; 同时, 该方法仅仅使用单一模型来进 行训练和预测, 使 得模型效
果较差。说 明 书 1/7 页
3
CN 114386048 A
3
专利 基于排序的开源软件安全漏洞补丁定位方法
文档预览
中文文档
13 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共13页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 SC 于 2024-02-18 22:33:53上传分享