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

一种固件安全性评估方法及系统与流程

2021-10-20 00:27:00 来源:中国专利 TAG:信息安全 固件 安全性 评估 方法


1.本发明涉及信息安全技术领域,尤其涉及一种固件安全性评估方法及系统。


背景技术:

2.本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
3.随着我国信息化水平的不断提升,作为涉及国家安全的关键基础设施,电力系统的信息化和智能化建设浪潮也迅速发展。随之,大量的电力系统物联网设备被引进并应用到电网的设备控制、数据采集、环境监测等一系列重要的工作中。一方面,这大大提升了电网的信息化和智能化水平,但同时也引入了大量的信息安全漏洞,对电力系统的安全运行产生威胁。
4.电力物联网设备通常采用驱动软件来执行指定的任务,这个驱动软件就是固件。考虑到固件通常直接与底层硬件进行交互,如若存在安全性漏洞,将导致设备无法按照预定方式运行,会对电力系统的安全稳定运行造成非常严重的威胁,因此需要对固件进行安全分析。然而,若对每一个固件都进行完整的安全分析,会造成巨大的时间和资源消耗,因此,如何提供一种效率更高的固件安全性评估方法,是需要解决的技术问题。


技术实现要素:

5.为了解决上述问题,本发明提出了一种固件安全性评估方法及系统,能够有效减少固件安全分析的工作量,提高整体的工作效率。
6.为了实现上述目的,在一些实施方式中,采用如下技术方案:
7.一种固件安全性评估方法,包括:
8.对待测固件进行解析,提取所述待测固件的汇编代码;
9.将所述待测固件的汇编代码与已知的样本固件的汇编代码进行比对,得到待测固件与样本固件的相似度;
10.根据所述相似度和所述样本固件的安全性评分,对所述待测固件的安全性进行评估。
11.其中,将所述待测固件的汇编代码与已知的样本固件的汇编代码进行比对,得到待测固件与样本固件的相似度,具体包括:
12.将所述待测固件的汇编代码的操作指令数组作为待测固件数组,将已知的样本固件的汇编代码的操作指令数组作为样本固件数组;
13.在所述待测固件数组和所述样本固件数组上分别设置预置大小的滑动窗口,统计在任意位置下两个滑动窗口内的操作指令完全一致的重复个数;
14.若所述重复个数的数量超过所述待测固件数组上滑动窗口的最大滑动距离,则认定相似度为1;若不超过,则所述相似度为所述重复个数与所述最大滑动距离的比值。
15.在另一些实施方式中,采用如下技术方案:
16.一种固件安全性评估系统,包括:
17.数据提取模块,用于对待测固件进行解析,提取所述待测固件的汇编代码;
18.数据比对模块,用于将所述待测固件的汇编代码与已知的样本固件的汇编代码进行比对,得到待测固件与样本固件的相似度;
19.数据评估模块,用于根据所述相似度和所述样本固件的安全性评分,对所述待测固件的安全性进行评估。
20.在另一些实施方式中,采用如下技术方案:
21.一种终端设备,其包括处理器和存储器,处理器用于实现各指令;存储器用于存储多条指令,所述指令适于由处理器加载并执行上述的固件安全性评估方法。
22.在另一些实施方式中,采用如下技术方案:
23.一种计算机可读存储介质,其中存储有多条指令,所述指令适于由终端设备的处理器加载并执行上述的固件安全性评估方法。
24.与现有技术相比,本发明的有益效果是:
25.(1)本发明通过汇编代码层面的相似度计算,结合已知样本固件的信息,能够对固件的安全性进行初步评估,从而筛选出具有潜在威胁的固件,后续可以交由专业人士进行进一步分析,有效缓解了对所有固件都进行完整的固件安全分析所带来的巨大的时间和资源的消耗,能够大大减少固件安全分析的工作,有效提高整体工作效率。
附图说明
26.图1为本发明实施例中所提供的固件安全性评估方法的方法流程图;
27.图2为本发明实施例中的滑动窗口示意图;
28.图3为本发明实施例中的固件安全性评估系统示意图。
具体实施方式
29.应该指出,以下详细说明都是示例性的,旨在对本技术提供进一步的说明。除非另有指明,本发明使用的所有技术和科学术语具有与本技术所属技术领域的普通技术人员通常理解的相同含义。
30.需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本技术的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
31.实施例一
32.在一个或多个实施方式中,公开了一种固件安全性评估方法,考虑到如果对固件进行初步筛选,挑选出潜在威胁性较大的固件进行进一步的安全分析,能够大大减少固件安全分析的工作,有效提高整体工作效率。
33.由于提取得到的固件代码通常为二进制汇编代码,通常由操作指令及其参数构成,例如mov%eax,[%esp 8]表示将esp寄存器里面的地址加上8个字节,得到一个新的地址,然后从这个地址取出数据,并将其写入eax寄存器,汇编代码的操作指令。如上述mov指令,其排列结构在一定程度上反映了程序的运行逻辑,两份汇编代码,其操作指令相似程度
越高,则其代码功能也越相似,若其中一份存在安全漏洞,则另一份中存在安全漏洞的可能性也越高,因此,本技术提供了一种固件安全性评估方法,通过比对待测固件与已知固件的相似程度来对待测固件的安全性进行初步评估,具体如下:
[0034]
参照图1,本实施例公开的一种固件安全性评估方法,具体包括:
[0035]
步骤201,构建固件库,固件库包括若干个已知的样本固件及其对应的安全性评分。例如获取电力物联网设备固件作为原始样本。固件库中有若干个已知的样本固件,样本固件的获取方式包括但不限于直接从厂商官网下载或由设备供应商提供、伪装固件升级请求获取、通过uart或jtag等硬件调试接口获取、或通过读取设备内存并从中恢复固件内容等方式。
[0036]
本实施例中,构建固件库的过程具体包括:
[0037]
获取样本固件及其安全性标签,
[0038]
对样本固件进行解析,提取样本固件的汇编代码;
[0039]
根据安全性标签得到样本固件的安全性评分。
[0040]
可以理解的是,在获取样本固件的同时,结合公开漏洞库、厂商安全公告等信息来源,可以获取样本固件的安全性标签。
[0041]
可以理解的是,利用固件解包引擎可以对样本固件的内容进行解析,获取样本固件中包含程序代码的文件系统;利用反编译软件或技术将文件系统中的机器语言代码转换为汇编代码。
[0042]
安全性标签具体可以分为高危、中危、低危和安全共四类,对这4类标签进行赋值,用v
高危
表示高危样本的安全性评分,用v
中危
表示中危样本的安全性评分,用v
低危
表示低危样本的安全性评分,用v
安全
表示安全样本的安全性评分,在本技术中,v
高危
=100,v
中危
=80,v
低危
=60,v
安全
=0。安全性评分标准可以根据实际需要由本领域技术人员自行决定,此处评分标准仅为举例,具体不作限定。
[0043]
步骤202,获取待测固件。
[0044]
可以理解的是,要对待测固件的安全性进行评估,首先需要获取待测固件。
[0045]
步骤203,对待测固件进行解析,提取待测固件的汇编代码。
[0046]
可以理解的是,利用固件解包引擎可以对待测固件的内容进行解析,获取待测固件中包含程序代码的文件系统;利用反编译软件或技术将文件系统中的机器语言代码转换为汇编代码。
[0047]
步骤204,将待测固件的汇编代码与已知的样本固件的汇编代码进行比对,得到待测固件与样本固件的相似度。
[0048]
需要说明的是,本实施例中所提到的已知的样本固件表示样本固件的汇编代码也是已知的,因此将待测固件的汇编代码与样本固件的汇编代码进行比对,则能够得到待测固件与样本固件的相似度。
[0049]
本实施例中,提供了一种汇编代码比对方法,如下:
[0050]
将待测固件的汇编代码的操作指令数组作为待测固件数组,将已知的样本固件的汇编代码的操作指令数组作为样本固件数组;
[0051]
在待测固件数组和样本固件数组上分别设置预置大小的滑动窗口,统计在任意位置下两个滑动窗口内的操作指令完全一致的重复个数;
[0052]
若重复个数的数量超过待测固件数组上滑动窗口的最大滑动距离,则认定相似度为1;若不超过,则相似度为重复个数与最大滑动距离的比值。
[0053]
汇编代码比对方法具体实现步骤请结合图2,图2为本实施例中的滑动窗口示意图。
[0054]

用a表示样本固件数组,用n
a
表示样本固件数组长度,用b表示待测固件数组,用n
b
表示待测固件数组长度。即图2中的左侧为样本固件数组,右侧为待测固件数组。
[0055]

用w表示滑动窗口大小(滑动窗口内元素数量,图2中w=3),用w
a
表示数组a的滑动窗口,用w
b
表示数组b的滑动窗口,滑动窗口w
b
位于数组b头部,滑动窗口w
a
位于数组a头部;
[0056]

选取滑动窗口w
b
当前范围内的操作指令list
b
和滑动窗口w
a
范围内的操作指令list
a
,当list
a
=list
b
时,计数器数值加1(初始值为零),当list
a
≠list
b
时,不进行操作。其中w表示当前滑动窗口大小,i表示滑动窗口w
b
移动的距离(图2中i=0);
[0057]

移动滑动窗口w
a
,移动步长为一个元素,重复步骤
③‑④
,直至滑动窗口w
a
抵达数组a尾部;
[0058]

移动滑动窗口w
b
,移动步长为一个元素,然后滑动窗口w
a
返回至数组a头部,重复步骤
③‑⑤
,直至滑动窗口w
b
抵达数组b尾部;
[0059]

根据计数器结果,计算数组a和数组b的相似度,计算公式如下:
[0060][0061]
即:若重复个数的数量超过待测固件数组上滑动窗口的最大滑动距离,则认定相似度为1;若不超过,则相似度为重复个数与最大滑动距离的比值。
[0062]
作为可选的实施方式,为了提高相似度计算结果,也可以通过改变滑动窗口的大小来实现,具体为:
[0063]

用a表示样本固件数组,用n
a
表示样本固件数组长度,用b表示待测固件数组,用n
b
表示待测固件数组长度。
[0064]

用w表示滑动窗口大小(滑动窗口内元素数量),用w
a
表示数组a的滑动窗口,用w
b
表示数组b的滑动窗口,令w=w
low
,w
low
表示滑动窗口大小的最小值,经过实际测试,在本技术实施例中优选w
low
=5;
[0065]

滑动窗口w
b
位于数组b头部,滑动窗口w
a
位于数组a头部;
[0066]

选取滑动窗口w
b
当前范围内的操作指令list
b
和滑动窗口w
a
范围内的操作指令list
a
,当list
a
=list
b
时,计数器数值加1(初始值为零),当list
a
≠list
b
时,不进行操作。其中w表示当前滑动窗口大小,i表示滑动窗口w
b
移动的距离;
[0067]

移动滑动窗口w
a
,移动步长为一个元素,重复步骤
④‑⑤
,直至滑动窗口w
a
抵达数组a尾部;
[0068]

移动滑动窗口w
b
,移动步长为一个元素,然后滑动窗口w
a
返回至数组a头部,重复步骤
④‑⑥
,直至滑动窗口w
b
抵达数组b尾部;
[0069]

改变滑动窗口大小,w=w 1,重复步骤
③‑⑦
,直至w=w
high
,在本技术实施例中,优选w
high
=10;
[0070]

根据计数器结果,计算数组a和数组b的相似度,计算公式如下:
[0071][0072]
此方法中,相似度的计算结合了滑动窗口的大小变动的因素,相比固定滑动窗口大小的方法来说,进一步提高了相似度计算的准确程度。
[0073]
步骤205,将待测固件与所有样本固件的相似度与对应样本固件的安全性评分相乘后取平均值,得到待测固件的安全性评分。
[0074]
具体地,待测固件安全性评估方法如下:
[0075]

用n表示样本固件数量,用i表示样本固件序号,用s
i
表示第i个样本固件与待测固件的相似度,用v
i
表示第i个样本固件的安全性评分,用v表示待测固件的安全性评分;
[0076]

样本固件的安全性评分v
i
根据样本的安全性标签进行赋值,用v
高危
表示高危样本的安全性评分,用v
中危
表示中危样本的安全性评分,用v
低危
表示低危样本的安全性评分,用v
安全
表示安全样本的安全性评分,在本技术中,v
高危
=100,v
中危
=80,v
低危
=60,v
安全
=0;
[0077]

计算待测固件的安全性评分,计算公式为:
[0078][0079]

将带测固件的安全性评分v与安全性阈值v
α
进行比较,当v≥v
α
时,将待测固件标注为潜在不安全固件,交由专业人士进行进一步分析,并根据专业人士的分析结果,为待测固件的安全性进行标注;当v<v
α
时,将待测固件标注为安全固件。安全性阈值v
α
由技术人员根据实际情况给定。
[0080]
步骤206,将待测固件及其安全性评分添加至固件库。
[0081]
在得到待测固件的安全性评分之后,待测固件也可作为样本固件进行比对,从而完善样本库,因此可以进行固件库的更新:将待测固件、待测固件的安全性评分加入固件库,对固件库内容进行更新。除基于上述方法通过待测固件对固件库内容进行更新外,固件库中固件及其安全标签还可通过结合公开漏洞库、厂商安全公告等信息来源,进行动态更新。
[0082]
本实施例固件安全性评估方法能够有效提高固件安全分析的整体工作效率、完善固件库、提高评估准确率。
[0083]
实施例二
[0084]
在一个或多个实施方式中,公开了一种固件安全性评估系统,参照图3,包括:
[0085]
数据提取模块301,用于对待测固件进行解析,提取所述待测固件的汇编代码;
[0086]
数据比对模块302,用于将所述待测固件的汇编代码与已知的样本固件的汇编代码进行比对,得到待测固件与样本固件的相似度;
[0087]
数据评估模块303,用于根据所述相似度和所述样本固件的安全性评分,对所述待测固件的安全性进行评估。
[0088]
需要说明的是,上述各模块的具体实现方式已经在实施例一中进行了详细说明,此处不再详述。
[0089]
可选地,由于后续步骤中待测固件需要与样本固件进行比对,因此在没有固件库的情况下,可以预先构建固件库,例如获取电力物联网设备固件作为原始样本。固件库中有若干个已知的样本固件,样本固件的获取方式包括但不限于直接从厂商官网下载或由设备
供应商提供、伪装固件升级请求获取、通过uart或jtag等硬件调试接口获取、或通过读取设备内存并从中恢复固件内容等方式。
[0090]
因此,本实施例固件安全性评估系统还包括:
[0091]
构建模块305,用于构建固件库,固件库包括若干个已知的样本固件及其对应的安全性评分。
[0092]
构建模块305具体包括:
[0093]
样本获取单元3051,用于获取样本固件及其安全性标签,
[0094]
样本解析单元3052,用于对样本固件进行解析,提取样本固件的汇编代码;
[0095]
样本评分单元3053,用于根据安全性标签得到样本固件的安全性评分。
[0096]
可以理解的是,在获取样本固件的同时,结合公开漏洞库、厂商安全公告等信息来源,可以获取样本固件的安全性标签。
[0097]
可以理解的是,利用固件解包引擎可以对样本固件的内容进行解析,获取样本固件中包含程序代码的文件系统;利用反编译软件或技术将文件系统中的机器语言代码转换为汇编代码。
[0098]
进一步的,还包括:添加模块304,用于将待测固件及其安全性评分添加至固件库。
[0099]
可以理解的是,在得到待测固件的安全性评分之后,待测固件也可作为样本固件进行比对,从而完善样本库,因此可以进行固件库的更新:将待测固件、待测固件的安全性评分加入固件库,对固件库内容进行更新。除基于上述方法通过待测固件对固件库内容进行更新外,固件库中固件及其安全标签还可通过结合公开漏洞库、厂商安全公告等信息来源,进行动态更新。
[0100]
实施例三
[0101]
在一个或多个实施方式中,公开了一种终端设备,包括服务器,所述服务器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现实施例一中的固件安全性评估方法。为了简洁,在此不再赘述。
[0102]
应理解,本实施例中,处理器可以是中央处理单元cpu,处理器还可以是其他通用处理器、数字信号处理器dsp、专用集成电路asic,现成可编程门阵列fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0103]
存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据、存储器的一部分还可以包括非易失性随机存储器。例如,存储器还可以存储设备类型的信息。
[0104]
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。
[0105]
实施例一中的固件安全性评估方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
[0106]
本领域普通技术人员可以意识到,结合本实施例描述的各示例的单元即算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是
软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0107]
实施例四
[0108]
在一个或多个实施方式中,公开了一种计算机可读存储介质,其中存储有多条指令,所述指令适于由终端设备的处理器加载并执行实施例一中所述的固件安全性评估方法。
[0109]
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献

  • 日榜
  • 周榜
  • 月榜