一种跨平台固件二进制代码漏洞挖掘的方法技术

技术编号:33026379 阅读:42 留言:0更新日期:2022-04-15 09:00
本文提供了一种跨平台固件二进制代码漏洞挖掘的方法,其中方法包括:对固件二进制代码反汇编后,提取汇编代码的特征描述;将所述特征描述作为聚类算法的输入,判断所述特征描述是否属于任一已知簇;若是,则更新所有已知簇的聚类中心点;若否,则形成新的簇以及新的簇对应的聚类中心点;根据所有簇的聚类中心点间的距离变化,确定所述固件的漏洞类型。本文能够进行跨平台二进制代码漏洞挖掘,进而较高准确度的确定固件漏洞类型。准确度的确定固件漏洞类型。准确度的确定固件漏洞类型。

【技术实现步骤摘要】
一种跨平台固件二进制代码漏洞挖掘的方法


[0001]本专利技术涉及漏洞挖掘的领域,特别地,涉及一种跨平台固件二进制代码漏洞挖掘的方法。

技术介绍

[0002]固件是智能终端设备的核心组成部分,存储着设备操作系统、初始化文件、配置文件、协议栈、可执行二进制程序等内容。由于固件位置特殊,连接各上层应用程序与底层物理硬件,固件的权限极高,因此固件安全问题极为重要。
[0003]由于智能终端固件的开发通常复用了大量第三方开源组件,导致在不同厂商、类型、CPU架构的设备固件中,存在着大量由统一代码源编译而成的二进制代码。故研究人员开始继续探究基于同源二进制代码相似性比较的大规模漏洞发现的方法,并取得较大进展。然而,现有的同平台漏洞关联方法并不能直接应用到跨平台场景中。目前,主要分为基于二进制文件的粗粒度相似性比较和基于代码片段的细粒度相似性比较两大类。在基于代码片段相似性比较方面,现有技术中一般先对固件进行代码片段的提取,提取之后通过神经网络模型进行代码片段的相似度匹配,但是通过神经网络模型进行相似度匹配的精度较低导致有些代码片段无法进行匹配,进而无法确定固件的漏洞类型。
[0004]因此现在亟需一种跨平台固件二进制代码漏洞挖掘的方法,能够进行跨平台二进制代码漏洞挖掘,进而较高准确度的确定固件漏洞类型。

技术实现思路

[0005]本文实施例的目的在于提供一种跨平台固件二进制代码漏洞挖掘的方法,以较高准确度的确定固件漏洞类型。
[0006]为达到上述目的,一方面,本文实施例提供了一种跨平台固件二进制代码漏洞挖掘的方法,包括:
[0007]对固件二进制代码反汇编后,提取汇编代码的特征描述;
[0008]将所述特征描述作为聚类算法的输入,判断所述特征描述是否属于任一已知簇;
[0009]若是,则更新所有已知簇的聚类中心点;
[0010]若否,则形成新的簇以及新的簇对应的聚类中心点;
[0011]根据所有簇的聚类中心点间的距离变化,确定所述固件的漏洞类型。
[0012]优选的,所述对固件二进制代码反汇编后,提取汇编代码的特征描述进一步包括:
[0013]对固件二进制代码反汇编后,得到汇编代码;
[0014]根据所述汇编代码,得到函数控制流图和函数调用关系图;
[0015]根据所述函数控制流图中每个节点的跳转关系形成跳转关系矩阵,所述函数控制流图中的每个节点为所述汇编代码中函数中的基本块,并记录所述每个节点的前驱节点个数和后继节点个数为基本块数组;
[0016]根据所述函数调用关系图中每个节点调用其他节点的次数以及该节点被调用的
次数形成调用关系矩阵,所述函数调用关系图中的节点为所述汇编代码中的函数;
[0017]仅通过所述跳转关系矩阵、所述基本块数组以及所述调用关系矩阵构成所述特征描述。
[0018]优选的,所述对固件二进制代码反汇编后,得到汇编代码进一步包括:
[0019]解析所述固件二进制代码,得到固件主体部分;
[0020]对所述固件主体部分进行压缩算法的识别,分离出引导加载程序、内核和文件系统;
[0021]根据所述文件系统,确定可反汇编的二进制文件;
[0022]对所述可反汇编的二进制文件进行反汇编后,得到汇编代码。
[0023]优选的,所述聚类算法为:支持向量机算法、邻近算法或K均值聚类算法。
[0024]优选的,所述将所述特征描述作为聚类算法的输入,判断所述特征描述是否属于任一已知簇进一步包括:
[0025]将所述特征描述作为对象,计算所述对象与所有已知簇之间的距离;
[0026]判断其中最小距离是否在设定阈值范围内;
[0027]若是,则所述特征描述属于所述最小距离对应的已知簇;
[0028]若否,则所述特征描述不属于任一已知簇。
[0029]优选的,所述将所述特征描述作为对象,计算所述对象与所有已知簇之间的距离进一步包括:
[0030]通过如下公式计算所述对象与所有已知簇之间的距离:
[0031][0032]其中dist为对象x与任一已知簇之间的距离,x为对象对应的点的值,y为已知簇内任一点的值,n为已知簇内点的数目。
[0033]优选的,所述设定阈值范围为:
[0034]其中,m为大于1的常数,k为已知簇的数目,perimeter为所有已知簇的聚类中心点构成的k边形的周长。
[0035]优选的,所述更新所有已知簇的聚类中心点进一步包括:
[0036]通过如下公式更新所有已知簇的聚类中心点:
[0037][0038]其中,μ
i
为任一已知簇更新后的聚类中心点,|C
i
|为任一已知簇的聚类中心点的值,s为任一已知簇内任一点的值。
[0039]优选的,所述根据所有簇的聚类中心点间的距离变化,确定所述固件的漏洞类型进一步包括:
[0040]根据所有簇的聚类中心点间的距离变化,得到均值差数组;
[0041]比较所述均值差数组中任一元素与簇间距离预设值之间的大小关系;
[0042]根据比较结果,确定所述固件的漏洞类型。
[0043]优选的,所述簇间距离预设值为:
[0044][0045]其中,ε为簇间距离预设值,k为聚类中心点的数目,differ
i
为任一更新后的聚类中心点与对应的更新前的聚类中心点的差值,为k个差值的平均值。
[0046]由以上本文实施例提供的技术方案可见,本文实施例通过该漏洞挖掘的方法,可以提取固件二进制代码的特征描述,将特征描述作为聚类算法的输入,通过已经确定的多个已知簇,进一步的判断固件的特征描述是否属于已知簇,来更新所有已知簇的聚类中心点或形成新的簇的聚类中心点。根据所有簇聚类中心点间的距离变化,能够确定固件的漏洞类型。本文的训练过程简单,能够较高准确度的确定固件漏洞类型。
[0047]为让本文的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
[0048]为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0049]图1示出了本文实施例提供的一种跨平台固件二进制代码漏洞挖掘的方法的流程示意图;
[0050]图2示出了本文实施例提供的通过K均值聚类算法确定已知簇的流程示意图;
[0051]图3示出了本文实施例提供的对固件二进制代码反汇编后,提取汇编代码的特征描述的第一流程示意图;
[0052]图4示出了本文实施例提供的对固件二进制代码反汇编后,提取汇编代码的特征描述的第二流程示意图;
[0053]图5示出了本文实施例提供的将所述特本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种跨平台固件二进制代码漏洞挖掘的方法,其特征在于,包括:对固件二进制代码反汇编后,提取汇编代码的特征描述;将所述特征描述作为聚类算法的输入,判断所述特征描述是否属于任一已知簇;若是,则更新所有已知簇的聚类中心点;若否,则形成新的簇以及新的簇对应的聚类中心点;根据所有簇的聚类中心点间的距离变化,确定所述固件的漏洞类型。2.根据权利要求1所述的跨平台固件二进制代码漏洞挖掘的方法,其特征在于,所述对固件二进制代码反汇编后,提取汇编代码的特征描述进一步包括:对固件二进制代码反汇编后,得到汇编代码;根据所述汇编代码,得到函数控制流图和函数调用关系图;根据所述函数控制流图中每个节点的跳转关系形成跳转关系矩阵,所述函数控制流图中的每个节点为所述汇编代码中函数中的基本块,并记录所述每个节点的前驱节点个数和后继节点个数为基本块数组;根据所述函数调用关系图中每个节点调用其他节点的次数以及该节点被调用的次数形成调用关系矩阵,所述函数调用关系图中的节点为所述汇编代码中的函数;仅通过所述跳转关系矩阵、所述基本块数组以及所述调用关系矩阵构成所述特征描述。3.根据权利要求2所述的跨平台固件二进制代码漏洞挖掘的方法,其特征在于,所述对固件二进制代码反汇编后,得到汇编代码进一步包括:解析所述固件二进制代码,得到固件主体部分;对所述固件主体部分进行压缩算法的识别,分离出引导加载程序、内核和文件系统;根据所述文件系统,确定可反汇编的二进制文件;对所述可反汇编的二进制文件进行反汇编后,得到汇编代码。4.根据权利要求1所述的跨平台固件二进制代码漏洞挖掘的方法,其特征在于,所述聚类算法为:支持向量机算法、邻近算法或K均值聚类算法。5.根据权利要求1所述的跨平台固件二进制代码漏洞挖掘的方法,其特征在于,所述将所述特征描述作为聚类算法的输入,判断所述特征描述是否属于任一已知簇进一步包括:将所述特征...

【专利技术属性】
技术研发人员:张实君来骥李硕徐相森曾婧杨睿许大卫聂正璞常海娇那琼澜孟德李贤寇晓溪肖娜管嘉珩王海超吕冰高崧
申请(专利权)人:国家电网有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1