一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

溢出型漏洞检测方法、装置、设备及介质

2022-10-26 02:42:40 来源:中国专利 TAG:


1.本发明涉及软件脆弱性检测技术领域,尤其涉及一种溢出型漏洞检测方 法、装置、设备及介质。


背景技术:

2.根据2015年统计,90%的物联网设备存在弱密钥、缓冲区溢出漏洞, 目前电力物联终端设备的大多数程序都是用c语言或c 语言进行编写的, 由于c语言和c 语言都没有和java一样的垃圾回收机制,增加了缓冲区出 现溢出漏洞的风险;除此之外,由于这些语言会使用指针,导致黑客可以通 过这些指针来确定关键代码在内存中的位置。但是现有的通用软件漏洞检测 方法检测这类针对电力物联终端溢出型漏洞的效果较差,因此亟需一套针对 电力物联终端源代码溢出型漏洞的检测方法。
3.

技术实现要素:

4.为了克服现有技术的不足,本发明的目的之一在于提供一种溢出型漏洞 检测方法,其通过比较危险代码图结构和标准漏洞类型图结构的相似度,进 而准确判断出漏洞类型。
5.本发明的目的之一采用以下技术方案实现:
6.一种溢出型漏洞检测方法,包括以下步骤:
7.根据待测源代码生成基于图节点表示结构的cfg图表;
8.将已赋权重的漏洞关键词与所述cfg图表中包含源代码关键词的节点 相匹配,并根据所述漏洞关键词的权重对所述节点进行加权处理;
9.根据预设k值,计算每个加权处理后包含源代码关键词节点的k跳范围 权重和;
10.筛选出权重和最大的n个深度为k的子图;
11.比较所述子图与各类型溢出型漏洞源代码形成的图表示结构的相似度, 所述子图中节点存在的漏洞类型为:相似度大于阈值threshold的图表示结构 所对应的漏洞类型。
12.进一步地,所述cfg图表包括源代码的控制流信息和数据流信息。
13.进一步地,所述漏洞关键词的权重赋值,包括以下步骤:
14.对溢出类型漏洞的源代码集进行关键词拆分,根据相关度筛选出与每个 漏洞类型相关的n个关键词;
15.对所述关键词进行权重赋值,词频最大的关键词赋值为1,并按照词频 占所述词频最大关键词的比重进行其他关键词赋值。
16.进一步地,所述关键词的数量n满足:5≤n≤10。
17.进一步地,所述节点的权重等于所述节点上漏洞关键词的权重。
18.进一步地,所述预设k值设置为2-4,所述k跳范围权重和w
krangesum
计 算公式满足:
其中,w
root
表示 根节点的权重贡献系数,w
ij
表示距离漏洞关键词节点为k的节点的权重值, e-βk
为衰减系数。
19.进一步地,通过graph kernel法计算所述相似度。
20.本发明的目的之二在于提供一种溢出型漏洞检测装置,其通过对结构图 进行比较,进而确定溢出型漏洞是否存在。
21.本发明的目的之二采用以下技术方案实现:
22.一种溢出型漏洞检测装置,其包括:
23.图标表生成模块,用于根据待测源代码生成基于图节点表示结构的cfg 图表;
24.计算模块,用于将已赋权重的漏洞关键词与所述cfg图表中包含源代码 关键词的节点相匹配,根据所述漏洞关键词的权重对所述节点进行加权处理; 并根据预设k值,计算每个加权处理后包含漏洞关键词节点的k跳范围权重 和;筛选出权重和最大的n个深度为k的子图;
25.判定模块,用于比较所述子图与各类型溢出型漏洞源代码形成的图表示 结构的相似度,所述子图中节点存在的漏洞类型为:相似度大于阈值threshold 的图表示结构所对应的漏洞类型。
26.进一步地,所述cfg图表包括源代码的控制流信息和数据流信息。
27.进一步地,所述漏洞关键词的权重赋值,包括以下步骤:
28.对溢出类型漏洞的源代码集进行关键词拆分,根据相关度筛选出与每个 漏洞类型相关的n个关键词;
29.对所述关键词进行权重赋值,词频最大的关键词赋值为1,并按照词频 占所述词频最大关键词的比重进行其他关键词赋值。
30.进一步地,所述关键词的数量n满足:5≤n≤10。
31.进一步地,所述节点的权重等于所述节点上漏洞关键词的权重。
32.进一步地,所述预设k值设置为2-4,所述k跳范围权重和w
krangrdum
计 算公式满足:其中,w
root
表示 根节点的权重贡献系数,w
ij
表示距离漏洞关键词节点为k的节点的权重值, e-βk
为衰减系数。
33.进一步地,通过graph kernel法计算所述相似度。
34.本发明的目的之三在于提供执行发明目的之一的电子设备,其包括处理 器、存储介质以及计算机程序,所述计算机程序存储于存储介质中,所述计算 机程序被处理器执行时实现上述的溢出型漏洞检测方法。
35.本发明的目的之四在于提供存储发明目的之一的计算机可读存储介质, 其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的溢出型漏 洞检测方法。
36.相比现有技术,本发明的有益效果在于:
37.针对目前海量多元异构的电力终端设备的接入的智能电网时代存在的电 力物联终端设备的安全性问题,本发明提出了一种针对电力物联终端源代码 溢出型漏洞的检测方法,根据源代码中危险代码段所构成的图结构与标准溢 出类型漏洞转换成的图结构的相似度大小来判断是否含有该溢出类型漏洞, 克服了传统的人工审查的繁杂缺点。通过图结构相似性检测漏洞的检测方法, 在源代码级别保证了代码的健壮性与可信度,极大的提
升了电力物联终端使 用的安全性。
附图说明
38.图1是实施例一的溢出型漏洞检测方法的流程图;
39.图2是实施例一的漏洞关键词节点k跳范围示意图;
40.图3是实施例二的溢出型漏洞检测的结构框图;
41.图4是实施例三的电子设备的结构框图。
具体实施方式
42.以下将结合附图,对本发明进行更为详细的描述,需要说明的是,以下 参照附图对本发明进行的描述仅是示意性的,而非限制性的。各个不同实施 例之间可以进行相互组合,以构成未在以下描述中示出的其他实施例。
43.实施例一
44.实施例一提供了一种溢出型漏洞检测方法,旨在通过对图结构相似性进行 判断,从而获取到源代码中是否有溢出型漏洞及漏洞具体类型。
45.由于电力物联终端设备的接入打破了各类防护边界,一旦攻击者通过电力 物联设备攻入网络进行攻击,所造成的后果是无法预估的。而对于电力物联终 端而言,溢出类漏洞最为致命,攻击者可以通过系统中存在的溢出类型漏洞来 控制后台计算机发布危险指令。
46.请参照图1所示,一种溢出型漏洞检测方法,包括以下步骤:
47.s1、根据待测源代码生成基于图节点表示结构的cfg图表;
48.s1中的待测源代码指的是电力物联终端源代码,cfg图表指的是控制流 图(control flow graph),且上述的cfg图表保留了源代码的控制流信息 和数据流信息,以便于增加漏洞分析的准确性。生成cfg图表属于常规的技 术手段,本实施例不对此生成过程加以赘述。
49.s2、将已赋权重的漏洞关键词与所述cfg图表中包含源代码关键词的节 点相匹配,并根据所述漏洞关键词的权重对所述节点进行加权处理;
50.本实施例中,所述漏洞关键词的权重赋值,包括以下步骤:
51.对溢出类型漏洞的源代码集进行关键词拆分,根据相关度筛选出与每个 漏洞类型相关的n个关键词;
52.对所述关键词进行权重赋值,词频最大的关键词赋值为1,并按照词频 占所述词频最大关键词的比重进行其他关键词赋值。
53.上述的漏洞关键词指的是与某一类溢出型漏洞关联度最大的n个关键词, 本实施例中关键词选取数量为5-10个。
54.具体地,由于漏洞数据集会将漏洞文本进行分类,那么某一类漏洞的形 成必然是某些特定关键词导致的,比如memcpy就极易导致溢出漏洞的发生。 通常方法就是对漏洞数据集构成的代码文本进行分词,包括以下几个步骤:
55.首先需要利用正则表达式的方法去除掉标点符号,和一些特殊字符等, 比如;、{};
56.由于代码中涉及到大小写的问题,也需要把所有的字母统一转换成小写;
57.此外,还需要做一下词形还原,比如一个名词的单复数需要视为同一个 关键词,动词的原型,ing形式,现在分词形式也都应该视为同一个关键词;
58.最后,过滤掉与漏洞文本无关的(停用词)。这里的停用词比如常见的 返回类型void,常用的介词、冠词等,包括像一些保留关键字if else等;
59.剩下的词就是上述漏洞关联度最大的关键词,每个关键词出现的次数就 是上述的词频。当然,由于筛选出的关键词数量可能超过n,因此可以根据 词频由大到小筛选出n个关键词,也可以根据一些现有的漏洞关键词参考数 据筛选出最相关的n个关键词。
60.本实施例中,上述的权重赋值对词频最大的关键词赋值为1,例如对最 大词频的关键词赋值为1,词频为其一半的关键词赋值0.5。
61.s2中,所述节点的权重等于所述节点上漏洞关键词的权重。
62.s3、根据预设k值,计算每个加权处理后包含漏洞关键词节点的k跳范 围权重和;
63.上述的预设k值为2-4,k值太小无法在图结构中体现漏洞特征,k值 太大则会由于深度太深导致图网络过于复杂而难以计算相似度。
64.从漏洞关键词根节点出发的k跳范围权重和w
krangesum
计算公式满足: 其中,w
root
表示根(root)节 点的权重贡献系数,w
ij
表示距离漏洞关键词节点为k的节点的权重值,由 于代码的cfg图是一个有向图,j为1时表示到该节点距离为k的节点,j 为2时表示从该节点出发距离为k的节点,e-βk
为衰减系数,表示距离root 节点越远的节点对于构成漏洞的贡献越小,β值通常设置为2,当然,也可根 据实验效果动态调整。由于漏洞语料库的漏洞关键词按照不同溢出类型的漏 洞进行分类,同类型的漏洞关键词对于该类别漏洞贡献越大,不同类型的漏 洞关键词根据漏洞形成原因的原理不同而贡献不同,具体的权重贡献系数值 设置在0.5-1之间不等。
65.请参照图2所示的k跳范围示意图,对权重和的计算过程进行说明。图 2中左半部分显示的是以0号节点为根节点所形成的3跳范围示意图,节点 中所标注的u、t、r、v、a表示不同类型的漏洞关键词,则对于根节点0而 言,其3跳范围权重和为0号节点自身权重以及1-10号节点对0号节点的权 重贡献总和,节点1,2,3,7,9由于不含漏洞关键词,因此对于漏洞贡献值为0, 这里以节点4,5,6,8,10举例说明权重和计算公式,假设漏洞类型u和漏洞类 型v形成机理较为相似,则可将权重贡献系数设置为0.9,而漏洞类型t,r,a 由于与漏洞类型u形成原理差别较大,可将权重贡献系数设置为0.5,则根 节点0的3跳范围权重和计算如下:
66.w
3rangesum
=w0 0.9*w6*e-β*1
w8*e-β*2
0.5*w4*e-β*2
w
5 *e-β*1
w
10
*e-β*3
)
67.接着从所有漏洞关键词节点出发计算得到的k跳范围权重和构成的集合 中,选出topn的基于特定关键词节点出发的前后向深度为k的子图。本实 施例中的n值大小设置为5-10为佳。
68.s4、筛选出权重和最大的n个深度为k的子图;
69.上述的n本实施例中为5-10,当然,可以根据实际需求进行设定。
70.s5、比较所述子图与各类型溢出型漏洞源代码形成的图表示结构的相似 度,所述子图中节点存在的漏洞类型为:相似度大于阈值threshold的图表示 结构所对应的漏洞类
型。
71.本实施例中,上述的相似度通过michalis等人提出的graph kernel进行 计算。通过调用其开发的python工具包计算筛选出的子图与特定漏洞类型源 代码形成的图表示结构的相似度,将计算所得相似度与阈值大小threshold大 小作比较,如果某节点组成的k跳节点图与某一溢出类型漏洞的相似度大于 threshold,则确定该节点位置存在该溢出类型漏洞。这里的阈值threshold一 般设置为0.85,可以根据实验效果进行动态调整。例如图2所示,即可认为 该代码段存在类型为u的溢出型漏洞。
72.综上所述,通过从漏洞关键词节点出发截取前后向深度为k的子图,并 与典型漏洞类型源代码形成的cfg图比较相似度来抵御攻击,电力物联终端 源代码的编写者可以通过本发明中的方法思路来判断所编写代码中是否包含 溢出类漏洞,根据源代码中危险代码段所构成的图结构与标准溢出类型漏洞 转换成的图结构的相似度大小来判断是否含有该溢出类型漏洞,克服了传统 的人工审查的繁杂缺点。使用图结构相似性检测漏洞的新型检测方法,在源 代码级别保证了代码的健壮性与可信度,极大的提升了电力物联终端使用的 安全性。
73.实施例二
74.实施例二公开了一种对应上述实施例的溢出型漏洞检测方法对应的装置, 为上述实施例的虚拟装置结构,请参照图3所示,包括:
75.图表生成模块210,用于根据待测源代码生成基于图节点表示结构的 cfg图表;
76.计算模块220,用于将已赋权重的漏洞关键词与所述cfg图表中包含源 代码关键词的节点相匹配,根据所述漏洞关键词的权重对所述节点进行加权 处理;并根据预设k值,计算每个加权处理后包含漏洞关键词节点的k跳范 围权重和;筛选出权重和最大的n个深度为k的子图;
77.判定模块230,用于比较所述子图与各类型溢出型漏洞源代码形成的图 表示结构的相似度,所述子图中节点存在的漏洞类型为:相似度大于阈值 threshold的图表示结构所对应的漏洞类型。
78.优选地,所述cfg图表包括源代码的控制流信息和数据流信息。
79.优选地,所述漏洞关键词的权重赋值,包括以下步骤:
80.对溢出类型漏洞的源代码集进行关键词拆分,根据相关度筛选出与每个 漏洞类型相关的n个关键词;
81.对所述关键词进行权重赋值,词频最大的关键词赋值为1,并按照词频 占所述词频最大关键词的比重进行其他关键词赋值。
82.优选地,所述关键词的数量n满足:5≤n≤10。
83.优选地,所述节点的权重等于所述节点上漏洞关键词的权重。
84.优选地,所述预设k值设置为2-4,所述k跳范围权重和w
krangrsum
计 算公式满足:其中,w
root
表示 根节点的权重贡献系数,w
ij
表示距离漏洞关键词节点为k的节点的权重值, e-βk
为衰减系数。
85.优选地,通过graph kernel法计算所述相似度。
86.实施例三
87.图4为本发明实施例三提供的一种电子设备的结构示意图,如图4所示, 该电子设备包括处理器310、存储器320、输入装置330和输出装置340;计算 机设备中处理器310的数量可以是一个或多个,图4中以一个处理器310为例; 电子设备中的处理器310、存储器320、输入装置330和输出装置340可以通过 总线或其他方式连接,图4中以通过总线连接为例。
88.存储器320作为一种计算机可读存储介质,可用于存储软件程序、计算机 可执行程序以及模块,如本发明实施例中的溢出型漏洞检测方法对应的程序指 令/模块(例如,溢出型漏洞检测方法装置中的图表生成模块210、计算模块 220及判定模块230)。处理器310通过运行存储在存储器320中的软件程序、 指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述 实施例一的溢出型漏洞检测方法。
89.存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存 储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使 用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以 包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失 性固态存储器件。在一些实例中,存储器320可进一步包括相对于处理器310 远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络 的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
90.输入装置330可用于接收输入的用户身份信息、待测源代码以及溢出类型 漏洞的源代码集等。输出装置340可包括显示屏等显示设备。
91.实施例四
92.本发明实施例四还提供一种包含计算机可执行指令的存储介质,该存储介 质可用于计算机执行溢出型漏洞检测方法,该方法包括:
93.根据待测源代码生成基于图节点表示结构的cfg图表;
94.将已赋权重的漏洞关键词与所述cfg图表中包含源代码关键词的节点 相匹配,并对所述节点进行加权处理;
95.根据预设k值,计算每个包含源代码关键词节点的k跳范围权重和;
96.筛选出权重和最大的n个深度为k的子图;
97.比较所述子图与各类型溢出型漏洞源代码形成的图表示结构的相似度, 所述子图中节点存在的漏洞类型为:相似度大于阈值threshold的图表示结构 所对应的漏洞类型。
98.当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其 计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例 所提供的基于溢出型漏洞检测方法中的相关操作。
99.通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到, 本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很 多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上 或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机 软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器 (read-only memory,rom)、随机存取存储器(random access memory, ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施 例所述的方法。
100.值得注意的是,上述基于溢出型漏洞检测方法装置的实施例中,所包括的 各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只 要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相 互区分,并不用于限制本发明的保护范围。
101.对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出 其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发 明权利要求的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献