(19)国家知识产权局
(12)发明 专利
(10)授权公告 号
(45)授权公告日
(21)申请 号 202210595809.8
(22)申请日 2022.05.30
(65)同一申请的已公布的文献号
申请公布号 CN 114692155 A
(43)申请公布日 2022.07.01
(73)专利权人 中国海洋大学
地址 266100 山东省青岛市崂山区松岭路
238号
(72)发明人 王晓东 王健 魏志强 李凯航
(74)专利代理 机构 青岛华慧泽专利代理事务所
(普通合伙) 37247
专利代理师 赵梅
(51)Int.Cl.
G06F 21/56(2013.01)
G06F 16/36(2019.01)G06F 8/41(2018.01)
(56)对比文件
CN 110245496 A,2019.09.17
CN 113656805 A,2021.1 1.16
CN 112187716 A,2021.01.0 5
董聪等.面向网络空间安全情 报的知识图谱
综述. 《信息安全学报》 .2020,(第0 5期),
审查员 张莹
(54)发明名称
基于知识图谱的漏洞代码图谱构建及代码
漏洞检测方法
(57)摘要
本发明属于网络安全技术领域, 公开了基于
知识图谱的漏洞代码图谱构建及代码漏洞检测
方法, 本发明首先生成源代码的代码图谱, 然后
基于漏洞模式、 数据依赖、 控制依 赖, 从源代码漏
洞图谱中提取漏洞代码子图, 得到标注数据集,
然后从漏洞代码子图中提取六种特征, 整合得到
漏洞代码 子图的向量表示, 最后将漏洞代码子图
的向量表 示输入到分类模型进行训练, 利用标签
信息对分类模 型进行优化, 生 成漏洞代码检测模
型。 漏洞代码检测模型能够对漏洞代码进行多分
类漏洞检测, 保证在软件开发过程中代码的安全
性。
权利要求书3页 说明书14页 附图5页
CN 114692155 B
2022.08.23
CN 114692155 B
1.基于知识图谱的漏洞代码图谱构建方法, 其特 征在于, 包括以下步骤:
S1、 获取漏洞代码相关信息: 包括漏洞 源代码文件、 漏洞发布日期、 漏洞补丁方案、 漏洞
所处的代码仓库地址、 代码仓库提交日志、 代码仓库is sue信息;
S2、 对漏洞 源代码文件的处理: 将漏洞 源代码文件处理成抽象语法树, 利用抽象语法树
的深度遍历算法, 从抽象语法树中提取实体、 关系信息, 构建源代码图谱, 进而抽取生成漏
洞代码子图; 步骤S2的具体步骤如下:
S21、 处理漏洞源代码文件, 提取源代码文件的抽象语法树;
S22、 实体类型定义及实体间关系定义: 结合源代码文件的抽象语法树信息, 定义构建
源代码知识图谱必备的实体 类型信息和实体间关系信息;
S23、 遍历抽象语法树生成源代码图谱: 利用代码图谱生成算法, 结合实体类型定义及
实体间关系定义, 抽取生成源代码图谱, 存 入图数据库;
S24、 利用漏洞代码子图生成算法, 从上一步骤生成的源代码图谱中抽取生成漏洞代码
子图; 漏洞代码子图生成算法如下:
记 漏 洞代 码 子图
, 其中
,
代 表 漏 洞代 码 子图 的 数 量 ,
, 代表漏洞代码子图中节点的集合,
, 代表漏洞代码子图
中边的集 合; 路径
, 其中
,
代表路径的数量;
S241、 根据 不同漏洞代码的符号特征, 找到漏洞 代码定义、 赋值、 声明节点 ni,j, 把ni,j加
入到Ni中;
S242、 查询源代码图谱中从文件节点到 Ni中每个节点的路径 Pj, 得到路径上的所有节点
Nj, 如果nj,k不存在于 Ni中, 就把nj,k加入到Ni中, 同时保留他们之间的关系;
S243、 查询源代码图谱中所有与 Ni中每个节点有数据依 赖和控制依赖的节点n, 如果n不
存在于Ni中, 也把n加入到Ni中;
S244、 给Ni中所有的节点 ni,j添加标签, 所有带 标签的节点组成漏洞代码子图;
S3、 对漏洞代码相关文字信息的处理: 基于获取到的漏洞代码相关信息数据, 利用自然
语言处理技术, 从代码文档、 issue、 补丁方案中提取出与代码相关的实体节点和实体间关
系信息, 保存记录 到数据库中;
S4、 对前两部分的到的实体和关系进行实体关系融合: 通过步骤S1可以得到源代码实
体关系, 通过步骤S2得到文档实体关系, 将两者进 行实体关系融合, 整合源代码和文档中的
信息;
S5、 构造标注数据集D: 得到漏洞代码子图以后, 将漏洞代码子图和爬取的数据进行对
齐, 对每一个漏洞代码子图进 行人工标注, 对于有漏洞的代码子图标注上对应的漏洞类型,
没有漏洞的代码 子图标注0; 构造的标注数据集
, 其中
,
表示数据集中 的第i条数据, 共
条标注数据;
表示第i个漏洞代码子图,
, n代表漏洞的种类数量,
, 表示第i个漏洞代码子图的漏洞标签,
当且仅当 Gi包含第j种漏洞;
, 其中
, 表示第i个漏
洞 代 码图 谱 中 的 第 j 个 节 点 ,
表 示 第 i 个 漏 洞 代 码图 谱 共 有
个 节 点 ;
, 其中
, 表示第i个漏洞代码图谱中的第j条边,
表示权 利 要 求 书 1/3 页
2
CN 114692155 B
2第i个漏洞代码图谱 共有
条边。
2.根据权利要求1所述的基于知识图谱的漏洞代码图谱构建方法, 其特征在于, 步骤S3
中, 基于获取到的代码文档、 issue、 补丁方案数据, 利用自然语言处理技术, 得到文档、
issue、 补丁方案中的实体、 关系信息, 具体是: 在构建代码图谱的过程中, 记录代码实体的
名字, 根据得到的实体名字, 训练实体识别模型, 从而得到代码文档、 issue、 补丁方案中的
实体; 结合上下文信息, 最 终得到实体间的关系名字; 对于得到的实体, 添加属性信息, 用于
保存所有的文字信息, 为以后的代码漏洞检测 和代码优化 提供支撑 。
3.根据权利要求1所述的基于知识图谱的漏洞代码图谱构建方法, 其特征在于, 步骤S4
具体的融合策略为: 对于名字相同的两个实体, 将两个实体的关系同步到一个实体, 同时保
留两个实体的属性信息, 融合结束以后删除冗余节点。
4.基于知识图谱的代码漏洞检测方法, 其特征在于, 数据输入是经过权利要求1所述的
基于知识图谱的漏洞代码图谱构建方法处理好的标注数据集D, 通过引入代码相关的特征,
对漏洞代码子图进行分类, 包括以下步骤:
S6、 获取节点特征: 利用神经网络模型分别提取节点包含的属性值的特征, 然后对节点
的不同属性特征进 行加和, 得到节点特征, 最后经过变换函数, 把所有节点特征变换到同一
纬度的同 一特 征空间中 , 得 到最终的 节点特 征 ; 漏 洞代 码图 谱的 节点特 征
, 其中
,
,
表示漏洞代码图谱中每
一个节点的节点特 征, 可由下式得到:
经过变换函数 f以后, 得到的最终的节点特 征向量
可由下式子得到:
S7、 获取节点代码文本特征: 代码是以源代码文本的形式保存在节点中, 使用文本向量
模型得到代码文本特征, 具体的节点代码文本特征
, 其中
,
, 更新节点特 征向量
, 更新后得到的节点特 征向量
为:
S8、 获取节点度特征 : 节点的入度特征
, 出度特征
, 其中
,
表示第i个代码图谱的第j个节点的入度
特征,
,
表示第i个代码图谱的第j个节点的出度特征,
; 引
入节点的入度特征和出度特征, 更新节点特征向量
, 更新后得到的节点特征向量
为:权 利 要 求 书 2/3 页
3
CN 114692155 B
3
专利 基于知识图谱的漏洞代码图谱构建及代码漏洞检测方法
文档预览
中文文档
23 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共23页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 10:58:57上传分享