CN113312220B - 一种固件隐患检测方法、装置及电子设备 - Google Patents
一种固件隐患检测方法、装置及电子设备 Download PDFInfo
- Publication number
- CN113312220B CN113312220B CN202110577220.0A CN202110577220A CN113312220B CN 113312220 B CN113312220 B CN 113312220B CN 202110577220 A CN202110577220 A CN 202110577220A CN 113312220 B CN113312220 B CN 113312220B
- Authority
- CN
- China
- Prior art keywords
- firmware
- data
- paradigm
- stored
- sequence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
一种固件隐患检测方法、装置及电子设备,通过该方法,可以在获取到固件的信息之后,对固件信息进行拆解,再将拆解的数据与预先存储的表征固件存在隐患的字符序列范式以及指令序列范式进行匹配,从而输出固件是否存在隐患的结果。这样不仅摆脱对设置的依赖性,降低固件隐患检测成本,而且还避免人工分析检测出现不准确的问题,提升了固件隐患检测准确性,减少了隐患分析的时间。
Description
技术领域
本申请涉及物联技术领域,尤其涉及一种固件隐患检测方法、装置及电子设备。
背景技术
当前,物联设备已经逐步渗透到生产生活的方方面面,为人们及时了解自己周围环境以及辅助日常工作带来便利。
物联设备软件开发过程中会引入开源项目内容、共享第三方组件或者约定的代码编写规范,在便利产品开发的同时也扩大了风险的引入。
当前对物联设备的隐患分析方法用的最多的方法是人工分析方式,也就是购买各个厂商设备的物联设备利用概念性验证代码进行验证,评估产品固件的隐患。很明显,以上方式需要购买物联设备,导致检测固件隐患的成本较高,并且人工进行分析的方式会导致准确性较低。
发明内容
本发申请提供了一种固件隐患检测方法、装置及电子设备,用以避免在固件隐患检测中对设备的依赖性,以及人工分析导致隐患检测不准确的问题。
第一方面,本申请提供了一种固件隐患检测方法,所述方法包括:
对获取到的固件信息进行拆解处理,得到满足预设条件的第一数据单元;
判定所述第一数据单元中是否存在预存的字符序列范式和/或预存的指令序列范式,其中,所述预存字符序列范式以及所述指令序列范式基于固件隐患的信息得到;
若存在所述预存字符序列范式和/或预存的指令序列范式,则输出所述固件信息对应的固件存在隐患的第一结果;
若不存在所述预存字符序列范式和/或预存的指令序列范式,则输出所述固件信息对应的固件不存在隐患的第二结果。
基于上述的方法,将得到的固件信息与预先存储的表征固件存在隐患的字符序列范式以及指令序列范式进行匹配,从而输出固件是否存在隐患的结果。这样不仅摆脱对设置的依赖性,降低固件隐患检测成本,而且还避免人工分析检测出现不准确的问题,提升了固件隐患检测准确性,减少了隐患分析的时间。
在一种可能的设计中,所述对获取到的固件信息进行拆解处理,得到满足预设条件的第一数据单元,包括:
对获取到的固件信息进行拆解处理,得到第一拆解数据;
判定所述第一拆解数据中是否存在压缩格式数据以及加密格式数据;
若存在压缩格式数据和/或加密格式数据,则继续对所述第一拆解数据进行拆解处理;
若不存在压缩格式数据以及加密格式数据,则将所述第一拆解数据作为所述第一数据单元。
通过上述的方式,将获取到的固件信息拆解为最小单元,保证最小单元中不存在压缩数据以及加密数据,从而保证后续对字符序列范式以及指令序列范式匹配的准确性。
在一种可能的设计中,在判定所述第一数据单元中是否存在预存的字符序列范式和/或预存的指令序列范式之前,还包括:
在上传的存在隐患的固件信息提取出关键字符序列;
根据所述关键字符序列,生成包含所述关键字符序列的字符序列范式,并将所述字符序列范式存入特征数据库。
通过上述的方式,可以预先将存在隐患的固件对应的字符序列范式存入数据库,从而保证后续能够准确地进行字符序列范式的匹配。
在一种可能的设计中,在判定所述第一数据单元中是否存在预存的字符序列范式和/或预存的指令序列范式之前,还包括:
获取固件信息对应的指令序列信息、执行指令中调用的字符串信息以及函数调用名;
根据所述指令序列信息、所述字符串信息以及所述函数调用名生成所述指令序列范式,并将所述指令序列范式存入特征数据库。
通过上述的方式,可以预先将存在隐患的固件对应的指令序列范式存入数据库,从而保证后续能够准确地进行指令序列范式的匹配。
在一种可能的设计中,所述判定所述第一数据单元中是否存在预存的字符序列范式和/或预存的指令序列范式,包括:
确定所述第一数据单元中的数据及代码起始位置以及数据及代码结束位置;
在所述数据及代码起始位置与所述数据及代码结束位置之间的数据中确定是否存在预存的字符序列范式和/或预存的指令序列范式。
通过上述的方式,在准确地确定出数据及代码起始位置以及数据及代码结束位置的基础上,可以保证后续准确地对字符序列范式以及指令序列范式进行匹配。
第二方面,本申请实施例提供了一种固件隐患检测装置,所述装置包括:
数据处理模块,用于对获取到的固件信息进行拆解处理,得到满足预设条件的第一数据单元;
控制模块,用于判定所述第一数据单元中是否存在预存的字符序列范式和/或预存的指令序列范式,若存在所述预存字符序列范式和/或预存的指令序列范式,则输出所述固件信息对应的固件存在隐患的第一结果;若不存在所述预存字符序列范式和/或预存的指令序列范式,则输出所述固件信息对应的固件不存在隐患的第二结果,其中,所述预存字符序列范式以及指令序列范式基于固件隐患的信息得到。
在一种可能的设计中,所述控制模块,还用于在上传的存在隐患的固件信息提取出关键字符序列;根据所述关键字符序列,生成包含所述关键字符序列的字符序列范式,并将所述字符序列范式存入特征数据库。
在一种可能的设计中,所述控制模块,还用于获取固件信息对应的指令序列信息、执行指令中调用的字符串信息以及函数调用名;根据所述指令序列信息、所述字符串信息以及所述函数调用名生成所述指令序列范式,并将所述指令序列范式存入特征数据库。
第三方面,本申请实施例提供了一种电子设备,包括:
存储器,用于存放计算机程序;
处理器,用于执行所述存储器上所存放的计算机程序时,实现上述的固件隐患检测方法步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述的固件隐患检测方法步骤。
上述第二方面至第四方面中的各个方面以及各个方面可能达到的技术效果请参照上述针对第一方面或第一方面中的各种可能方案可以达到的技术效果说明,这里不再重复赘述。
附图说明
图1为本申请提供的一种固件隐患检测方法的流程图;
图2为本申请提供的固件拆解处理过程示意图;
图3为本申请提供的数据及代码起始位置以及数据及代码结束位置示意图;
图4为本申请提供的一种固件隐患检测装置的结构示意图;
图5为本申请提供的一种电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或***实施例中。需要说明的是,在本申请的描述中“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。A与B连接,可以表示:A与B直接连接和A与B通过C连接这两种情况。另外,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
固件一般存储于设备中的电擦除只读存储器(Electrically ErasableProgrammable ROM,EEPROM)或FLASH芯片中,一般可由用户通过特定的刷新程序进行升级的程序。一般来说,担任着一个数码产品最基础、最底层工作的软件才可以称之为固件,因此设备的固件隐患检测就极为重要,当前的检测方式需要购买设备,并通过人工分析检测方式来完成,这种方式不仅成本较高,并且隐患检测的准确性也较低。
基于上述的问题,本申请实施例提供的一种固件隐患检测方法,用以通过上传的固件信息实现固件隐患的检测,从而避免购买设备造成的高成本,以及人工分析导致隐患检测不准确的问题,其中,本申请实施例所述方法和装置基于同一技术构思,由于方法及装置所解决问题的原理相似,因此装置与方法的实施例可以相互参见,重复之处不再赘述。
下面结合附图,对本申请实施例进行详细描述。
如图1所示为本申请实施例中一种固件隐患检测方法的流程图,所述方法包括:
S11,对获取到的固件信息的进行拆解处理,得到满足预设条件的第一数据单元;
由于在本申请实施例中需要对固件隐患进行检测,因此需要首先对固件进行采集,也就是将需要检测的固件上传到***中,或者通过其他程序,从各个平台或者是服务器中周期性的下载最新固件并输入到***中。为了保证每个固件的唯一性,每个固件名称都存在唯一标识格式,然后将固件名称以及固件信息保存到固件信息数据库中。
此处固件的唯一标识格式,可以是基于固件校验码、固件版本号、设备类型、生产厂家编号得到,也可以是固件对应文件的哈希值。
除了上述固件的唯一标识格式需要预先获取并存入数据库之外,本申请实施例中还需要将字符序列范式以及指令序列范式存入数据库中。下面具体介绍字符序列范式以及指令序列范式的生成过程:
一、字符序列范式
根据上传的固件隐患和简要的信息生成对应的字符序列范式,并存入到特征数据库。
具体来说,在本申请实施例中基于上传的固件隐患以及对应的固件信息,在固件信息中提取出关键字符序列,根据关键字符序列,生成包含所述关键字符序列的字符序列范式,并将所述字符序列范式存入特征数据库。
举例来讲,某设备存在远程开启telnet服务,需要用户输入设备的web用户名、密码和设备媒体存取控制位址(Media Access Control Address,MAC)即可远程开启telnet服务。对应执行的字符命令为:“utelnetd-d-i br0”。
通过strings命令可以获得运行程序的关键字符序列,具体如下:
>/dev/console
utelnetd
-d
-i
br0
telnetInit0:already initialized.
在得到上述关键字符序列之后,基于该关键字符序列就可以生成字符序列范式,具体为:telnetd\s*-d\s*-i\s*br。
二、指令序列范式
定位触发上传的固件隐患发生的二进制代码位置,利用反编译程序形成高级语言,利用交叉编译工具生成各种CPU平台的指令序列范式,并将形成的指令序列范式输入到特征数据库中。
具体来说,首先上传的固件信息对应的指令序列信息、执行指令中调用的字符串信息以及函数调用名,根据指令序列信息、字符串信息以及函数调用名生成对应的指令序列范式,并所述指令序列范式存入特征数据库中。
举例来讲,某设备存在远程开启telnet服务为例,由于需要在程序中启动telnet程序,则会调用system、eval、exec*等函数,这里的*表示是一个函数族。利用file***命令可以知道程序为ARM架构,具体如下:
$file telnetenabled
telnetenabled:ELF 32-bit LSB executable,ARM,EABI5 version 1(SYSV),dynamically linked,interpreter/lib/ld-linux.so.3,for GNU/Linux 3.2.0,stripped
基于上述的架构,利用反汇编程序定位到程序代码位置。
这里需要说明是,由于开发人员会将同一套代码编译成不同的CPU架构平台,例如X86、X64、ARM、ARM64、PPC等,不同的CPU还有不同的字节排序,例如大端优先和小端优先两种,满足了不同的业务场景需求,例如摄像头、路由器、以及基于Android的设备。
如果需要确定固件中隐患的存在,则需要覆盖不同的CPU架构平台的程序,则需要将定位到的安全隐患发生的二进制代码通过高级反编译程序进行反编译成C语言,然后通过编译程序重新编译成不同CPU架构的目标平台程序,或者通过不同CPU平台的指令映射关系进行翻译生成目标CPU架构平台程序,之后根据指令数据生成指令范式。
根据不同CPU指令的汇编语言说明,利用字符串和调用跟随原则,保留原始十六进制指令,以指令中调用的字符串和函数调用名特征为判定标准,即可生成对应的指令序列范式。
基于上述过程,在特征数据库中完成字符序列范式以及指令序列范式的导入,从而使得后续可以准确定位固件是否存在隐患。
在上述的准备条件完成之后,首先需要对获取到的固件信息进行切片、解压缩以及解密处理,得到第一拆解数据,判定第一拆解数据中是否存在压缩格式数据以及加密格式数据,若存在压缩格式数据和/或加密格式数据,则继续对第一拆解数据进行切片、解压缩以及解密处理,若不存在压缩格式数据和/或加密格式数据,则将所述第一拆解数据作为所述第一数据单元。
举例来说,如图2所示为固件拆解处理过程的示意图,该流程包括:
S21,采集固件;
S22,固件分片处理;
S23,判定是否存在压缩格式;
若是,则执行步骤S24;若否,则执行步骤S24。
S24,数据解压缩;
解压缩完成之后,返回执行步骤S22。
S25,判定是否存在加密格式;
若是,则执行步骤S26;若否,则执行步骤S27。
S26,数据解密;
在数据解密完成之后,返回执行步骤S22。
S27,确定数据为最小单元。
基于上述方式可以准确地对固件进行分片拆解出最小单元,保证最小单元不存在加密以及压缩数据的情况,从而保证了后续对固件隐患的判定更加的准确。
S12,判定第一数据单元中是否存在预存的字符序列范式和/或预存的指令序列范式;
若存在,则执行步骤S13;若不存在,则执行步骤S14。
S13,输出所述固件信息对应的固件存在隐患的第一结果;
S14,输出所述固件信息对应的固件不存在隐患的第二结果。
在本申请实施例中,在得到第一数据单元之后,首选确定第一数据单元的数据结果的数据及代码起始位置以及数据及代码结束位置。基于数据及代码起始位置以及数据及代码结束位置之间的数据中是否存在预存的字符序列范式和/或指令序列范式。
举例来说,针对该第一数据单元,可以将数据单元的偏移0位置设置为数据及代码起始位置,将数据单元的末尾设置为数据及代码结束位置,如图3所示,该数据单元的数据及代码起始位置以及数据及代码结束位置都在图3中示出,在判定时将数据及代码起始位置至数据及代码结束位置之间数据与预存的字符序列范式进行匹配。在存在预存的字符序列范式时,输出第一结果。在不存在字符序列范式时,再进行指令序列范式的匹配。
在进行指令序列方式匹配时,需要进一步的判定第一数据单元是否为可执行文件格式,比如Microsoft Windows***中的PE格式,或者Linux的***中的ELF格式。若是可执行文件格式,则可以通过文件固有的结构确定数据及代码的起始位置和结束位置。代码的结束位置=代码的起始位置+代码的字节数。当然,如果第一数据单元为非可执行文件格式,则按照普通数据处理,将偏移0位置设置为数据及代码起始位置,将文件的末尾设置为数据及代码结束位置。
在判定时将数据及代码起始位置至数据及代码结束位置之间数据与预存的指令序列范式进行匹配。在存在预存的指令序列范式时,输出第一结果。在不存在指令序列范式时,输出第二结果。
这里需要说明,在本申请中并不限定字符序列范式与指令序列范式的匹配顺序,可以先进行字符序列范式的匹配,也可以先进行指令序列范式的匹配。在本申请实施例中也不限定单次需要检测隐患个数,可以是检测1个隐患,也可以是检测多个隐患。
基于上述的方法,在获取到固件的信息之后,对固件信息进行拆解,再将拆解的数据与预先存储的表征固件存在隐患的字符序列范式以及指令序列范式进行匹配,从而输出固件是否存在隐患的结果。这样不仅摆脱对设置的依赖性,降低固件隐患检测成本,而且还避免人工分析检测出现不准确的问题,提升了固件隐患检测准确性,减少了隐患分析的时间。
另外,本申请所提供的方法是基于本地数据分析完成,避免通过远程的全网探测,从而避免了对实体业务的影响。
进一步,在本申请实施例中,为了可以确定固件的影响范围,因此在确定固件存在隐患的情况下,可以根据固件名称的唯一标识格式的特性,在确定固件隐患的情况下,确定出该固件对应的产品名称和/或生产厂家。最终可以输出固件隐患以及固件隐患的影响范围。
基于同一发明构思,本申请实施例中还提供了一种固件隐患检测装置,该固件隐患检测装置用以实现图1所示的固件隐患检测方法,参照图4所示,如所述固件隐患检测装置包括:
数据处理模块401,用于对获取到的固件信息进行拆解处理,得到满足预设条件的第一数据单元;
控制模块402,用于判定所述第一数据单元中是否存在预存的字符序列范式和/或预存的指令序列范式,若存在所述预存字符序列范式和/或预存的指令序列范式,则输出所述固件信息对应的固件存在隐患的第一结果;若不存在所述预存字符序列范式和/或预存的指令序列范式,则输出所述固件信息对应的固件不存在隐患的第二结果,其中,所述预存字符序列范式基于固件隐患的信息得到,所述指令序列范式基于固件隐患的信息得到。
在一种可能的设计中,所述控制模块402,还用于在上传的存在隐患的固件信息提取出关键字符序列;根据所述关键字符序列,生成包含所述关键字符序列的字符序列范式,并将所述字符序列范式存入特征数据库。
在一种可能的设计中,所述控制模块402,还用于获取固件信息对应的指令序列信息、执行指令中调用的字符串信息以及函数调用名;根据所述指令序列信息、所述字符串信息以及所述函数调用名生成所述指令序列范式,并将所述指令序列范式存入特征数据库。
基于上述的装置,将固件信息进行拆解成最小数据单元,再将拆解的数据与预先存储的表征固件存在隐患的字符序列范式以及指令序列范式进行匹配,从而输出固件是否存在隐患的结果。这样不仅摆脱对设置的依赖性,降低固件隐患检测成本,而且还避免人工分析检测出现不准确的问题,提升了固件隐患检测准确性,减少了隐患分析的时间。
需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
基于同一发明构思,本申请实施例中还提供了一种电子设备,参考图5,所述电子设备包括:
至少一个处理器501,以及与至少一个处理器501连接的存储器502,本申请实施例中不限定处理器501与存储器502之间的具体连接介质,图5中是以处理器501和存储器502之间通过总线500连接为例。总线500在图5中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线500可以分为地址总线、数据总线、控制总线等,为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。或者,处理器501也可以称为控制器,对于名称不做限制。
在本申请实施例中,存储器502存储有可被至少一个处理器501执行的指令,至少一个处理器501通过执行存储器502存储的指令,可以执行前文论述的固件隐患检测方法。处理器501可以实现图4所示的固件隐患检测装置中各个模块的功能。
其中,处理器501是该固件隐患检测装置的控制中心,可以利用各种接口和线路连接整个该控制设备的各个部分,通过运行或执行存储在存储器502内的指令以及调用存储在存储器502内的数据,该控制设备的各种功能和处理数据,从而对该固件隐患检测装置进行整体监控。
在一种可能的设计中,处理器501可包括一个或多个处理单元,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。在一些实施例中,处理器501和存储器502可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器501可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的固件隐患检测方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器502可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器502是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器502还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
通过对处理器501进行设计编程,可以将前述实施例中介绍的固件隐患检测方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图1所示的实施例的固件隐患检测方法的步骤。如何对处理器501进行设计编程为本领域技术人员所公知的技术,这里不再赘述。
基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行前文论述固件隐患检测方法。
在一些可能的实施方式中,本申请提供的固件隐患检测方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在装置上运行时,程序代码用于使该控制设备执行本说明书上述描述的根据本申请各种示例性实施方式的固件隐患检测方法中的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (6)
1.一种固件隐患检测方法,其特征在于,所述方法包括:
对获取到的固件信息进行拆解处理,得到满足预设条件的第一数据单元;
在上传的存在隐患的固件信息提取出关键字符序列;
根据所述关键字符序列,生成包含所述关键字符序列的字符序列范式,并将所述字符序列范式存入特征数据库;
获取固件信息对应的指令序列信息、执行指令中调用字符串信息以及函数调用名;
根据所述指令序列信息、所述字符串信息以及所述函数调用名生成指令序列范式,并将所述指令序列范式存入特征数据库;
判定所述第一数据单元中是否存在预存的字符序列范式和/或预存的指令序列范式;
若存在所述预存字符序列范式和/或预存的指令序列范式,则输出所述固件信息对应的固件存在隐患的第一结果;
若不存在所述预存字符序列范式和/或预存的指令序列范式,则输出所述固件信息对应的固件不存在隐患的第二结果。
2.如权利要求1所述的方法,其特征在于,所述对获取到的固件信息进行拆解处理,得到满足预设条件的第一数据单元,包括:
对获取到的固件信息进行拆解处理,得到第一拆解数据;
判定所述第一拆解数据中是否存在压缩格式数据以及加密格式数据;
若存在压缩格式数据和/或加密格式数据,则继续对所述第一拆解数据进行拆解处理;
若不存在压缩格式数据以及加密格式数据,则将所述第一拆解数据作为所述第一数据单元。
3.如权利要求1所述的方法,其特征在于,所述判定所述第一数据单元中是否存在预存的字符序列范式和/或预存的指令序列范式,包括:
确定所述第一数据单元中的数据及代码起始位置以及数据及代码结束位置;
在所述数据及代码起始位置与所述数据及代码结束位置之间的数据中确定是否存在预存的字符序列范式和/或预存的指令序列范式。
4.一种固件隐患检测装置,其特征在于,所述装置包括:
数据处理模块,用于对获取到的固件信息进行拆解处理,得到满足预设条件的第一数据单元;
控制模块,用于在上传的存在隐患的固件信息提取出关键字符序列;根据所述关键字符序列,生成包含所述关键字符序列的字符序列范式,并将所述字符序列范式存入特征数据库;获取固件信息对应的指令序列信息、执行指令中调用字符串信息以及函数调用名;根据所述指令序列信息、所述字符串信息以及所述函数调用名生成指令序列范式,并将所述指令序列范式存入特征数据库;判定所述第一数据单元中是否存在预存的字符序列范式和/或预存的指令序列范式,若存在所述预存字符序列范式和/或预存的指令序列范式,则输出所述固件信息对应的固件存在隐患的第一结果;若不存在所述预存字符序列范式和/或预存的指令序列范式,则输出所述固件信息对应的固件不存在隐患的第二结果。
5.一种电子设备,其特征在于,包括:
存储器,用于存放计算机程序;
处理器,用于执行所述存储器上所存放的计算机程序时,实现权利要求1-3中任一项所述的方法步骤。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-3任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110577220.0A CN113312220B (zh) | 2021-05-26 | 2021-05-26 | 一种固件隐患检测方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110577220.0A CN113312220B (zh) | 2021-05-26 | 2021-05-26 | 一种固件隐患检测方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113312220A CN113312220A (zh) | 2021-08-27 |
CN113312220B true CN113312220B (zh) | 2023-03-21 |
Family
ID=77374756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110577220.0A Active CN113312220B (zh) | 2021-05-26 | 2021-05-26 | 一种固件隐患检测方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113312220B (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10762214B1 (en) * | 2018-11-05 | 2020-09-01 | Harbor Labs Llc | System and method for extracting information from binary files for vulnerability database queries |
CN111475324B (zh) * | 2020-04-03 | 2024-03-15 | 西安广和通无线软件有限公司 | 日志信息的分析方法、装置、计算机设备和存储介质 |
CN111611591B (zh) * | 2020-05-22 | 2024-05-07 | 中国电力科学研究院有限公司 | 一种固件漏洞的检测方法、装置、存储介质及电子设备 |
CN111881455B (zh) * | 2020-07-27 | 2023-12-01 | 绿盟科技集团股份有限公司 | 一种固件安全分析的方法及装置 |
CN112149136A (zh) * | 2020-09-23 | 2020-12-29 | 北京顶象技术有限公司 | loT设备固件漏洞的检测方法、***及电子设备 |
CN112134761B (zh) * | 2020-09-23 | 2022-05-06 | 国网四川省电力公司电力科学研究院 | 基于固件分析的电力物联网终端脆弱性检测方法及*** |
CN112733151A (zh) * | 2021-01-14 | 2021-04-30 | 广东银基信息安全技术有限公司 | 嵌入式设备固件解析方法、装置、介质及电子设备 |
-
2021
- 2021-05-26 CN CN202110577220.0A patent/CN113312220B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113312220A (zh) | 2021-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108196878B (zh) | 应用程序安装包的生成方法、装置、电子设备及存储介质 | |
JP7131946B2 (ja) | アプリケーションの保安性を評価する方法およびシステム | |
CN106203007B (zh) | 一种代码处理方法、装置及计算设备 | |
CN106708704B (zh) | 一种对崩溃日志进行分类的方法和装置 | |
CN104375870A (zh) | 自助终端软件远程升级方法和***,及升级包制作方法 | |
CN106778247B (zh) | 应用程序动态分析的方法及装置 | |
KR20150083627A (ko) | 액티비티 문자열 분석에 의한 안드로이드 악성코드 검출 방법 | |
CN113961919B (zh) | 恶意软件检测方法和装置 | |
CN106055375B (zh) | 应用程序安装方法及装置 | |
KR20190037895A (ko) | 바이너리 파일에 기초하여 오픈소스 소프트웨어 패키지를 식별하는 방법 및 시스템 | |
KR102011725B1 (ko) | 악성코드 검출을 위한 화이트리스트 구축 방법 및 이를 수행하기 위한 기록매체 및 장치 | |
CN111930395B (zh) | 智能终端的程序下载方法和智能终端 | |
CN106775778B (zh) | 嵌入式程序开发中程序更新识别方法及*** | |
CN108062474B (zh) | 文件的检测方法及装置 | |
CN115185550A (zh) | 服务部署方法、装置、计算机设备及存储介质 | |
KR20210029621A (ko) | 전자 장치에서 어플리케이션 업데이트 시 런타임 성능 개선 방법 및 장치 | |
CN115062309A (zh) | 一种新型电力***下基于设备固件仿真的漏洞挖掘方法及存储介质 | |
CN113242288A (zh) | 一种物联网设备固件升级方法、***、装置以及存储介质 | |
CN111181805A (zh) | 一种基于测试用例的微服务测试挡板生成方法及*** | |
CN106960138B (zh) | 虚拟机指令的校验方法及装置、*** | |
CN107766342B (zh) | 一种应用的识别方法和装置 | |
CN113312220B (zh) | 一种固件隐患检测方法、装置及电子设备 | |
CN106569868B (zh) | 一种基于Gradle的编译优化方法及装置 | |
CN110990833B (zh) | 一种sdk安全检测方法及相关设备 | |
CN112187783A (zh) | 鉴权方法及装置、电子设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |