CN112149136A - loT设备固件漏洞的检测方法、系统及电子设备 - Google Patents

loT设备固件漏洞的检测方法、系统及电子设备 Download PDF

Info

Publication number
CN112149136A
CN112149136A CN202011011689.XA CN202011011689A CN112149136A CN 112149136 A CN112149136 A CN 112149136A CN 202011011689 A CN202011011689 A CN 202011011689A CN 112149136 A CN112149136 A CN 112149136A
Authority
CN
China
Prior art keywords
function
operand
data
instruction
list
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.)
Pending
Application number
CN202011011689.XA
Other languages
English (en)
Inventor
董阳
陈树华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Dingxiang Technology Co ltd
Original Assignee
Beijing Dingxiang Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Dingxiang Technology Co ltd filed Critical Beijing Dingxiang Technology Co ltd
Priority to CN202011011689.XA priority Critical patent/CN112149136A/zh
Publication of CN112149136A publication Critical patent/CN112149136A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种loT设备固件漏洞的检测方法、系统及电子设备,涉及智能设备固件检测领域,该方法根据预设判定规则确定汇编指令组合代码中的待测漏洞的属性数据,再将待测漏洞的属性数据中包含的函数名称以及对应的参数行为数据确定为危险函数列表;然后根据危险函数列表中包含的函数名称确定汇编指令组合代码中相对应的函数的地址,并对函数的地址进行数据流分析确定函数对应的参数行为数据,最后根据参数行为得到固件漏洞检测结果。该方法通过获取固件中危险函数列表并对其进行数据流分析,能够对loT设备固件中的漏洞实现快速定位,提高了分析人员的工作效率。

Description

loT设备固件漏洞的检测方法、系统及电子设备
技术领域
本发明涉及智能设备固件检测技术领域,尤其是涉及一种loT设备固件漏洞的检测方法、系统及电子设备。
背景技术
物联网(Internet of Things,loT)设备在当前日常生活中已得到广泛应用,由于物联网设备大都是全天候工作,因此物联网设备的稳定性要求更高。物联网设备大都是功能单一化的设备,厂商对其进行维护时往往不会耗费过多精力,导致物联网设备潜在的安全漏洞的发现几率较低,而且现有技术中loT设备固件的审核主要以人工调试为主,包含大量的重复调试工作,效率低下。
发明内容
有鉴于此,本发明的目的在于提供一种loT设备固件漏洞的检测方法、系统及电子设备,通过获取固件中危险函数列表并对其进行数据流分析,能够对loT设备固件中的漏洞实现快速定位,提高了分析人员的工作效率,降低人力成本。
第一方面,本发明实施例提供了一种loT设备固件漏洞的检测方法,该方法包括:
获取loT设备固件的汇编指令组合代码,根据预设判定规则确定汇编指令组合代码中的待测漏洞的属性数据;其中,汇编指令组合代码为loT设备固件经过反汇编后生成的汇编指令组合;
将待测漏洞的属性数据中包含的函数名称以及对应的参数行为数据,确定为危险函数列表;其中,参数行为包括:参数行为对应的参数是否接收外部输入、参数行为对应的参数是否保存在栈区;
根据危险函数列表中包含的函数名称,获取汇编指令组合代码中相对应的函数的地址;
对函数的地址进行数据流分析,确定函数对应的参数行为数据;其中数据流分析用于获得分析对象的数据传递过程列表;数据传递过程列表包含数据传递过程中经过的对象类型、对象名以及对象值;对象类型包含寄存器、常量值、栈变量以及内存地址;
判断函数对应的参数行为数据与危险函数列表中对应的参数行为数据是否一致;如果是,将函数的地址作为固件漏洞的检测结果。
在一些实施方式中,上述待测漏洞的属性数据,包括:待测漏洞的类型、名称;待测漏洞对应的函数名称、函数参数个数以及函数参数对应的参数行为。
在一些实施方式中,上述将待测漏洞的属性数据中包含的函数名称以及对应的参数行为数据确定为危险函数列表的步骤之前,方法还包括:
解析汇编指令组合代码中所有的函数调用数据,获得汇编指令组合代码中包含的所有函数对应的名称以及地址;
将汇编指令组合代码中包含的所有函数对应的名称以及地址,与待测漏洞的属性数据中包含的函数名称进行交叉匹配,匹配结果用于确定危险函数列表。
在一些实施方式中,上述待测漏洞的属性数据、汇编指令组合代码中包含的所有函数对应的名称以及地址保存在随机存取存储器中。
在一些实施方式中,上述对函数的地址进行数据流分析,确定函数对应的参数行为数据的步骤,包括:
获取函数对应所处汇编指令组合代码中的起始位置以及结束位置;
从起始位置至结束位置依次寻找函数的跳转指令;
对跳转指令对应的地址进行指令解析,判断操作指令类型;其中,操作指令类型包括:数据移动指令、数据存储指令、数据加载指令、算数指令;
根据操作指令类型以及操作指令对应的操作数的个数,确定函数对应的参数行为数据。
在一些实施方式中,上述从起始位置至结束位置依次寻找函数的跳转指令的步骤之后,方法还包括:
判断跳转指令对应的地址是否位于起始位置以及结束位置之间;若不是,则忽略跳转指令;若是,则重新执行寻找函数的跳转指令的操作。
在一些实施方式中,上述根据操作指令类型以及操作指令的个数,确定函数对应的参数行为数据的步骤,包括:
若操作指令类型是数据移动指令,且操作数1的类型为寄存器,操作数2的类型为立即数;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象结束数据流分析;
若操作指令类型是数据移动指令,且操作数1与操作数2的类型为寄存器;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象,且将操作数2加入追踪对象列表,并继续下一个地址的分析;
若操作指令类型是数据存储指令,且操作数1为寄存器,操作数2为内存空间的访问;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象,并将操作数2加入追踪对象列表,并继续下一个地址的分析;
若操作指令类型是数据加载指令,且操作数1为寄存器,操作数2为内存空间的访问;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象,并将操作数2加入追踪对象列表,并继续下一个地址的分析;
若操作指令类型是算数指令,且操作数1与操作数2与操作数3都为寄存器,且操作数1为追踪对象;则记录下操作数2,3作为数据流的最后两个操作对象,并将操作数2、3加入追踪对象列表,并继续下一个地址的分析;
若操作指令类型是算数指令,且操作数1与操作数2都为寄存器,操作数3为立即数,操作数1为追踪对象,同时递归追溯操作数2;若操作数2的数据路径起始对象是SP寄存器则建立追踪对象类,偏移取操作数3的值,将新建立的追踪对象实例加入追踪对象,并继续下一个地址的分析。
第二方面,本发明实施例提供了一种loT设备固件漏洞的检测系统,该系统包括:
初始化模块,用于获取loT设备固件的汇编指令组合代码,根据预设判定规则确定汇编指令组合代码中的待测漏洞的属性数据;其中,汇编指令组合代码为loT设备固件经过反汇编后生成的汇编指令组合;
第一解析模块,用于将待测漏洞的属性数据中包含的函数名称以及对应的参数行为数据确定为危险函数列表;其中,参数行为包括:参数行为对应的参数是否接收外部输入、参数行为对应的参数是否保存在栈区;
第二解析模块,用于根据危险函数列表中包含的函数名称确定汇编指令组合代码中相对应的函数的地址;
数据流分析模块,用于对函数的地址进行数据流分析,确定函数对应的参数行为数据;其中,数据流分析用于获得分析对象的数据传递过程列表;所述数据传递过程列表包含数据传递过程中经过的对象类型、对象名以及对象值;所述对象类型包含寄存器、常量值、栈变量以及内存地址;
检测判断模块,用于判断函数对应的参数行为数据与危险函数列表中对应的参数行为数据是否一致;如果是,将函数的地址作为固件漏洞的检测结果。
第三方面,本发明实施例还提供一种电子设备,包括:处理器和存储器;存储器上存储有计算机程序,计算机程序在被处理器运行时实现上述第一方面任意可能的实施方式中提到的loT设备固件漏洞的检测方法的步骤。
第四方面,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,其中,计算机程序被处理器运行时实现上述第一方面任意可能的实施方式中提到的loT设备固件漏洞的检测方法的步骤。
本发明实施例带来了以下有益效果:
本发明提供了一种loT设备固件漏洞的检测方法、系统及电子设备,该方法首先从获取的loT设备汇编指令组合代码中,通过预设判定规则确定汇编指令组合代码中的待测漏洞的属性数据,其中,汇编指令组合代码为loT设备固件经过反汇编后生成的汇编指令组合;后将待测漏洞的属性数据中包含的函数名称以及对应的参数行为数据,确定为危险函数列表;其中,参数行为包括:参数行为对应的参数是否接收外部输入、参数行为对应的参数是否保存在栈区。再根据危险函数列表中包含的函数名称,获取汇编指令组合代码中相对应的函数的地址,并对函数的地址进行数据流分析,确定函数对应的参数行为数据;其中数据流分析用于获得分析对象的数据传递过程列表;数据传递过程列表包含数据传递过程中经过的对象类型、对象名以及对象值;对象类型包含寄存器、常量值、栈变量以及内存地址。最后判断函数对应的参数行为数据与危险函数列表中对应的参数行为数据是否一致;如果是,将函数的地址作为固件漏洞的检测结果。该方法通过获取固件中危险函数列表并对其进行数据流分析,能够对loT设备固件中的漏洞实现快速定位,提高了分析人员的工作效率,降低人力成本。
本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种loT设备固件漏洞的检测方法的流程图;
图2为本发明实施例提供的loT设备固件漏洞的检测方法步骤S102之前的检测方法流程图;
图3为本发明实施例提供的loT设备固件漏洞的检测方法中步骤S104的流程图;
图4为本发明实施例提供的另一种loT设备固件漏洞的检测方法的流程图;
图5为本发明实施例提供的loT设备固件漏洞的检测系统的结构示意图;
图6为本发明实施例提供的一种电子设备的结构示意图。
图标:
510-初始化模块;520-第一解析模块;530-第二解析模块;540-数据流分析模块;550-检测判断模块;101-处理器;102-存储器;103-总线;104-通信接口。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着物联网时代的来临,物联网设备如网络摄像头、可穿戴设备、活动追踪器、智能汽车、智能家居等终端得以迅速发展和广泛应用。由于物联网设备与现实生产活动联系紧密,若存在安全隐患随之产生的经济损失会非常巨大。物联网设备大都是全天候工作,稳定性和安全性要求也更高,再加上物联网设备大都是功能单一化的设备,厂商对其进行维护时往往不会耗费过多精力,导致物联网设备存在着固件更新周期长,安全漏洞发现几率较低等问题。
现有技术中对于物联网设备固件中漏洞的检测过程,仍然以人工调试代码为主,针对固件代码进行逆向分析,梳理程序的逻辑分支,并手动检查每一个可能出现问题的地方,有时还需要借助动态调试帮助确定漏洞,上述过程包含大量的重复调试工作,效率低下。
基于此,本发明实施例提供了一种loT设备固件漏洞的检测方法、系统及电子设备,可通过获取固件中危险函数列表并对其进行数据流分析,能够对loT设备固件中的漏洞实现快速定位,提高了分析人员的工作效率,降低人力成本。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种loT设备固件漏洞的检测方法进行详细介绍。
参见图1所示的一种loT设备固件漏洞的检测方法的流程图,该方法包括以下步骤:
步骤S101,获取loT设备固件的汇编指令组合代码,根据预设判定规则确定汇编指令组合代码中的待测漏洞的属性数据。
loT设备固件的汇编指令组合代码是loT设备的基础,通过汇编指令组合代码中执行的程序才能实现loT设备的各种功能,loT设备固件的汇编指令组合代码作为本实施例的执行主体来对固件漏洞进行检测。汇编指令组合代码为loT设备固件经过反汇编后生成的汇编指令组合,一般来说汇编指令组合代码会保存在指定的服务器进行管控,或者保存在开发人员部署的开发环境中。
判定规则用于对汇编指令组合代码中存在风险的位置进行判定,例如利用判定规则来检查汇编指令组合代码中是否存在撰写不规范的区域、对全局变量进行特殊标定对汇编指令组合代码中各个函数的命名方式以及包含的参数的合理程度进行判定等。判定规则的目的是对漏洞进行粗略检测,最终确定汇编指令组合代码中的待测漏洞的属性数据。这些属性数据是对不同类型漏洞的程序表现进行描述,通常包含漏洞名称,漏洞类型,漏洞所影响到的函数名,以及函数各参数应该满足的条件。
步骤S102,将待测漏洞的属性数据中包含的函数名称以及对应的参数行为数据,确定为危险函数列表;其中,参数行为包括:参数行为对应的参数是否接收外部输入、参数行为对应的参数是否保存在栈区。
对于loT设备固件而言,漏洞通常是体现在函数中,因此需要对高风险的函数进行汇总,得到危险函数列表,作为后续分析所用。危险函数列表是根据属性数据中包含的函数名称以及对应的参数行为数据所确定的,其中,参数行为包括:参数行为对应的参数是否接收外部输入、参数行为对应的参数是否保存在栈区。
步骤S103,根据危险函数列表中包含的函数名称,获取汇编指令组合代码中相对应的函数的地址。
危险函数列表获取之后,通过循环遍历危险函数列表中的函数名称,寻找汇编指令组合代码中该函数所出现的位置,并将出现的位置进行记录,作为固件漏洞检测的调用点地址。
步骤S104,对函数的地址进行数据流分析,确定函数对应的参数行为数据。
数据流分析用于分析获得分析对象的数据传递过程列表;数据传递过程列表包含数据传递过程中经过的对象类型、对象名以及对象值;对象类型包含寄存器、常量值、栈变量以及内存地址。函数地址获取之后,对该地址对应点进行数据流分析,判定调用点函数的参数行为数据。该步骤获得的行为数据与步骤S102中一致,即参数行为对应的参数是否接收外部输入、参数行为对应的参数是否保存在栈区。
由于函数在执行过程中会跳转至其它函数中,因此需要分析函数的跳转指令地址是否位于汇编指令组合代码中函数对应的起始位置以及结束位置之间,并完成数据流分析。
步骤S105,判断函数对应的参数行为数据与危险函数列表中对应的参数行为数据是否一致;如果是,将函数的地址作为固件漏洞的检测结果。
在获取函数中所有的参数行为数据后,与危险函数列表中对应的参数行为数据进行对比;如果二者一致,则表明该函数调用点为loT设备固件的漏洞,该函数的地址作为固件漏洞的检测结果记录到相应的文件或者直接从固件汇编指令组合代码中进行特殊显示。
通过上述实施例中提供loT设备固件漏洞的检测方法可知,该方法通过获取固件中危险函数列表并对其进行数据流分析,能够对loT设备固件中的漏洞实现快速定位,提高了分析人员的工作效率,降低人力成本。
在一些实施方式中,上述待测漏洞的属性数据,包括:待测漏洞的类型、名称;待测漏洞对应的函数名称、函数参数个数以及函数参数对应的参数行为。
从上述实施例看,危险函数列表的获取对于固件漏洞的检测具有重要作用,因此获取危险函数列表的过程还可与汇编指令组合代码中相应的函数进行交叉匹配,尽可能的提升危险函数列表数据源的数据量,因此上述将待测漏洞的属性数据中包含的函数名称以及对应的参数行为数据确定为危险函数列表的步骤S102之前,如图2所示,该检测方法还包括:
步骤S201,解析汇编指令组合代码中所有的函数调用数据,获得汇编指令组合代码中包含的所有函数对应的名称以及地址。
该步骤可通过汇编指令组合代码的开发环境下对应的接口直接获取所有的函数信息,通常这些接口可直接输出所有函数对应的名称和地址。
步骤S202,将汇编指令组合代码中包含的所有函数对应的名称以及地址,与待测漏洞的属性数据中包含的函数名称进行交叉匹配,匹配结果用于确定危险函数列表。
交叉匹配的目的是将汇编指令组合代码中的所有函数与待测漏洞中的函数进行融合,以便提升危险函数列表的准确度。虽然最终获得的危险函数列表可能与不经过交叉匹配过程时得到的危险函数列表相同,但由于数据来源更多,准确度也更好。
在一些实施方式中,上述待测漏洞的属性数据、汇编指令组合代码中包含的所有函数对应的名称以及地址保存在随机存取存储器中。
随机存取存储器在计算机领域中通常称为内存,保存在随机存取存储器中是为了方便后续的解析,提升检测速度。虽然待测漏洞的属性数据、汇编指令组合代码中包含的所有函数对应的名称以及地址数据量较大,但作为计算机甚至服务器而言,上述数据临时保存在内存中是不会影响设备的运行速度的。
在一些实施方式中,上述对函数的地址进行数据流分析,确定函数对应的参数行为数据的步骤S104,如图3所示,包括:
步骤S301,获取函数对应所处汇编指令组合代码中的起始位置以及结束位置。
具体的说,该步骤可根据相应的汇编特征分析程序实现,如果获取失败则触发异常,通过捕获该异常来对发生错误的函数进行修改,从而也达到修复固件漏洞的目的。在一些实施方式中,该步骤之后,还包括:
判断跳转指令对应的地址是否位于起始位置以及结束位置之间;若不是,则忽略跳转指令;若是,则重新执行寻找函数的跳转指令的操作。
步骤S302,从起始位置至结束位置依次寻找函数的跳转指令。
跳转指令对应着的是跳转的函数位置,可从该函数的调用点开始往前回溯分析,直至起始位置为止,最终寻找函数所有的跳转指令。
步骤S303,对跳转指令对应的地址进行指令解析,判断操作指令类型;其中,操作指令类型包括:数据移动指令、数据存储指令、数据加载指令、算数指令。
指令解析是对该指令的类型进行区分,是通过对条状指令对应的地址进行分析获取的到的,包括数据移动指令、数据存储指令、数据加载指令、算数指令。
步骤S304,根据操作指令类型以及操作指令对应的操作数的个数,确定函数对应的参数行为数据。
在一些实施方式中,步骤S304主要包括如下情况:
若操作指令类型是数据移动指令,且操作数1的类型为寄存器,操作数2的类型为立即数;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象结束数据流分析;
若操作指令类型是数据移动指令,且操作数1与操作数2的类型为寄存器;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象,且将操作数2加入追踪对象列表,并继续下一个地址的分析;
若操作指令类型是数据存储指令,且操作数1为寄存器,操作数2为内存空间的访问;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象,并将操作数2加入追踪对象列表,并继续下一个地址的分析;
若操作指令类型是数据加载指令,且操作数1为寄存器,操作数2为内存空间的访问;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象,并将操作数2加入追踪对象列表,并继续下一个地址的分析;
若操作指令类型是算数指令,且操作数1与操作数2与操作数3都为寄存器,且操作数1为追踪对象;则记录下操作数2,3作为数据流的最后两个操作对象,并将操作数2、3加入追踪对象列表,并继续下一个地址的分析;
若操作指令类型是算数指令,且操作数1与操作数2都为寄存器,操作数3为立即数,操作数1为追踪对象,同时递归追溯操作数2;若操作数2的数据路径起始对象是SP寄存器则建立追踪对象类,偏移取操作数3的值,将新建立的追踪对象实例加入追踪对象,并继续下一个地址的分析。
通过上述步骤得到的参数行为数据,最终与危险函数列表中对应的参数行为数据进行对比,用于对固件漏洞的检测。
上述实施方式还可通过IDA工具之一的IDAPython脚本得以实现,与之对应的另一种loT设备固件漏洞的检测方法流程图如图4所示,在此不再赘述。
通过上述实施例中提供loT设备固件漏洞的检测方法可知,该方法通过获取固件中危险函数列表并对其进行数据流分析,能够对loT设备固件中的漏洞实现快速定位,提高了分析人员的工作效率,降低人力成本。同时还可通过更新预设判定规则的方式来对各种新的漏洞进行检测,减少迭代成本。
对应于上述方法实施例,本发明实施例还提供了一种loT设备固件漏洞的检测系统,其结构示意图如图5所示,该系统包括:
初始化模块510,用于获取loT设备固件的汇编指令组合代码,根据预设判定规则确定汇编指令组合代码中的待测漏洞的属性数据;其中,汇编指令组合代码为loT设备固件经过反汇编后生成的汇编指令组合;
第一解析模块520,用于将待测漏洞的属性数据中包含的函数名称以及对应的参数行为数据确定为危险函数列表;其中,参数行为包括:参数行为对应的参数是否接收外部输入、参数行为对应的参数是否保存在栈区;
第二解析模块530,用于根据危险函数列表中包含的函数名称确定汇编指令组合代码中相对应的函数的地址;
数据流分析模块540,用于对函数的地址进行数据流分析,确定函数对应的参数行为数据;其中数据流分析用于获得分析对象的数据传递过程列表;所述数据传递过程列表包含数据传递过程中经过的对象类型、对象名以及对象值;所述对象类型包含寄存器、常量值、栈变量以及内存地址;
检测判断模块550,用于判断函数对应的参数行为数据与危险函数列表中对应的参数行为数据是否一致;如果是,将函数的地址作为固件漏洞的检测结果。
在一些实施方式中,上述待测漏洞的属性数据,包括:待测漏洞的类型、名称;待测漏洞对应的函数名称、函数参数个数以及函数参数对应的参数行为。
在一些实施方式中,上述loT设备固件漏洞的检测系统,还包括:
汇编指令组合代码解析模块,用于解析汇编指令组合代码中所有的函数调用数据,获得汇编指令组合代码中包含的所有函数对应的名称以及地址;
交叉匹配模块,用于将汇编指令组合代码中包含的所有函数对应的名称以及地址,与待测漏洞的属性数据中包含的函数名称进行交叉匹配,匹配结果用于确定危险函数列表。
在一些实施方式中,上述待测漏洞的属性数据、汇编指令组合代码中包含的所有函数对应的名称以及地址保存在随机存取存储器中。
在一些实施方式中,上述数据流分析模块540,还用于:获取函数对应所处汇编指令组合代码中的起始位置以及结束位置;从起始位置至结束位置依次寻找函数的跳转指令;对跳转指令对应的地址进行指令解析,判断操作指令类型;其中,操作指令类型包括:数据移动指令、数据存储指令、数据加载指令、算数指令;根据操作指令类型以及操作指令对应的操作数的个数,确定函数对应的参数行为数据。
在一些实施方式中,上述数据流分析模块540还用于:判断跳转指令对应的地址是否位于起始位置以及结束位置之间;若不是,则忽略跳转指令;若是,则重新执行寻找函数的跳转指令的操作。
在一些实施方式中,上述数据流分析模块540,还用于:若操作指令类型是数据移动指令,且操作数1的类型为寄存器,操作数2的类型为立即数;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象结束数据流分析;若操作指令类型是数据移动指令,且操作数1与操作数2的类型为寄存器;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象,且将操作数2加入追踪对象列表,并继续下一个地址的分析;若操作指令类型是数据存储指令,且操作数1为寄存器,操作数2为内存空间的访问;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象,并将操作数2加入追踪对象列表,并继续下一个地址的分析;若操作指令类型是数据加载指令,且操作数1为寄存器,操作数2为内存空间的访问;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象,并将操作数2加入追踪对象列表,并继续下一个地址的分析;若操作指令类型是算数指令,且操作数1与操作数2与操作数3都为寄存器,且操作数1为追踪对象;则记录下操作数2,3作为数据流的最后两个操作对象,并将操作数2、3加入追踪对象列表,并继续下一个地址的分析;若操作指令类型是算数指令,且操作数1与操作数2都为寄存器,操作数3为立即数,操作数1为追踪对象,同时递归追溯操作数2;若操作数2的数据路径起始对象是SP寄存器则建立追踪对象类,偏移取操作数3的值,将新建立的追踪对象实例加入追踪对象,并继续下一个地址的分析。
本发明实施例提供的loT设备固件漏洞的检测系统,与上述实施例提供的loT设备固件漏洞的检测方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。为简要描述,实施例部分未提及之处,可参考前述方法实施例中相应内容。
本实施例还提供一种电子设备,为该电子设备的结构示意图如图6所示,该设备包括处理器101和存储器102;其中,存储器102用于存储一条或多条计算机指令,一条或多条计算机指令被处理器执行,以实现上述loT设备固件漏洞的检测方法。
图6所示的电子设备还包括总线103和通信接口104,处理器101、通信接口104和存储器102通过总线103连接。
其中,存储器102可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。总线103可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
通信接口104用于通过网络接口与至少一个用户终端及其它网络单元连接,将封装好的IPv4报文或IPv4报文通过网络接口发送至用户终端。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器102,处理器101读取存储器102中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行前述实施例的方法的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以用软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种loT设备固件漏洞的检测方法,其特征在于,该方法包括:
获取loT设备固件的汇编指令组合代码,根据预设判定规则确定所述汇编指令组合代码中的待测漏洞的属性数据;其中,所述汇编指令组合代码为所述loT设备固件经过反汇编后生成的汇编指令组合;
将所述待测漏洞的属性数据中包含的函数名称以及对应的参数行为数据,确定为危险函数列表;其中,所述参数行为包括:所述参数行为对应的参数是否接收外部输入、所述参数行为对应的参数是否保存在栈区;
根据所述危险函数列表中包含的函数名称,获取所述汇编指令组合代码中相对应的函数的地址;
对所述函数的地址进行数据流分析,确定所述函数对应的参数行为数据;其中,所述数据流分析用于获得分析对象的数据传递过程列表;所述数据传递过程列表包含数据传递过程中经过的对象类型、对象名以及对象值;所述对象类型包含寄存器、常量值、栈变量以及内存地址;
判断所述函数对应的参数行为数据与所述危险函数列表中对应的参数行为数据是否一致;如果是,将所述函数的地址作为固件漏洞的检测结果。
2.根据权利要求1所述的方法,其特征在于,所述待测漏洞的属性数据,包括:所述待测漏洞的类型、名称;所述待测漏洞对应的函数名称、函数参数个数以及函数参数对应的参数行为。
3.根据权利要求1所述的方法,其特征在于,将所述待测漏洞的属性数据中包含的函数名称以及对应的参数行为数据确定为危险函数列表的步骤之前,所述方法还包括:
解析所述汇编指令组合代码中所有的函数调用数据,获得所述汇编指令组合代码中包含的所有函数对应的名称以及地址;
将所述汇编指令组合代码中包含的所有函数对应的名称以及地址,与所述待测漏洞的属性数据中包含的函数名称进行交叉匹配,匹配结果用于确定所述危险函数列表。
4.根据权利要求3所述的方法,其特征在于,待测漏洞的属性数据、所述汇编指令组合代码中包含的所有函数对应的名称以及地址保存在随机存取存储器中。
5.根据权利要求1所述的方法,其特征在于,对所述函数的地址进行数据流分析,确定所述函数对应的参数行为数据的步骤,包括:
获取所述函数对应所处所述汇编指令组合代码中的起始位置以及结束位置;
从所述起始位置至所述结束位置依次寻找所述函数的跳转指令;
对所述跳转指令对应的地址进行指令解析,判断操作指令类型;其中,所述操作指令类型包括:数据移动指令、数据存储指令、数据加载指令、算数指令;
根据所述操作指令类型以及操作指令对应的操作数的个数,确定所述函数对应的参数行为数据。
6.根据权利要求5所述的方法,其特征在于,从所述起始位置至所述结束位置依次寻找所述函数的跳转指令的步骤之后,所述方法还包括:
判断所述跳转指令对应的地址是否位于所述起始位置以及结束位置之间;若不是,则忽略所述跳转指令;若是,则重新执行寻找所述函数的跳转指令的操作。
7.根据权利要求5所述的方法,其特征在于,根据所述操作指令类型以及操作指令的个数,确定所述函数对应的参数行为数据的步骤,包括:
若操作指令类型是数据移动指令,且操作数1的类型为寄存器,操作数2的类型为立即数;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象结束数据流分析;
若操作指令类型是数据移动指令,且操作数1与操作数2的类型为寄存器;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象,且将操作数2加入追踪对象列表,并继续下一个地址的分析;
若操作指令类型是数据存储指令,且操作数1为寄存器,操作数2为内存空间的访问;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象,并将操作数2加入追踪对象列表,并继续下一个地址的分析;
若操作指令类型是数据加载指令,且操作数1为寄存器,操作数2为内存空间的访问;若操作数1为追踪对象,则记录下操作数2作为数据流的最后一个操作对象,并将操作数2加入追踪对象列表,并继续下一个地址的分析;
若操作指令类型是算数指令,且操作数1与操作数2与操作数3都为寄存器,且操作数1为追踪对象;则记录下操作数2,3作为数据流的最后两个操作对象,并将操作数2、3加入追踪对象列表,并继续下一个地址的分析;
若操作指令类型是算数指令,且操作数1与操作数2都为寄存器,操作数3为立即数,操作数1为追踪对象,同时递归追溯操作数2;若操作数2的数据路径起始对象是SP寄存器则建立追踪对象类,偏移取操作数3的值,将新建立的追踪对象实例加入追踪对象,并继续下一个地址的分析。
8.一种loT设备固件漏洞的检测系统,其特征在于,所述系统包括:
初始化模块,用于获取loT设备固件的汇编指令组合代码,根据预设判定规则确定所述汇编指令组合代码中的待测漏洞的属性数据;其中,所述汇编指令组合代码为所述loT设备固件经过反汇编后生成的汇编指令组合;
第一解析模块,用于将所述待测漏洞的属性数据中包含的函数名称以及对应的参数行为数据确定为危险函数列表;其中,所述参数行为包括:所述参数行为对应的参数是否接收外部输入、所述参数行为对应的参数是否保存在栈区;
第二解析模块,用于根据所述危险函数列表中包含的函数名称确定所述汇编指令组合代码中相对应的函数的地址;
数据流分析模块,用于对所述函数的地址进行数据流分析,确定所述函数对应的参数行为数据;其中,所述数据流分析用于获得分析对象的数据传递过程列表;所述数据传递过程列表包含数据传递过程中经过的对象类型、对象名以及对象值;所述对象类型包含寄存器、常量值、栈变量以及内存地址;
检测判断模块,用于判断所述函数对应的参数行为数据与所述危险函数列表中对应的参数行为数据是否一致;如果是,将所述函数的地址作为固件漏洞的检测结果。
9.一种电子设备,其特征在于,包括:处理器和存储器;所述存储器上存储有计算机程序,所述计算机程序在被所述处理器运行时实现如权利要求1至7任一项所述的loT设备固件漏洞的检测方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时实现上述权利要求1至7任一项所述的loT设备固件漏洞的检测方法的步骤。
CN202011011689.XA 2020-09-23 2020-09-23 loT设备固件漏洞的检测方法、系统及电子设备 Pending CN112149136A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011011689.XA CN112149136A (zh) 2020-09-23 2020-09-23 loT设备固件漏洞的检测方法、系统及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011011689.XA CN112149136A (zh) 2020-09-23 2020-09-23 loT设备固件漏洞的检测方法、系统及电子设备

Publications (1)

Publication Number Publication Date
CN112149136A true CN112149136A (zh) 2020-12-29

Family

ID=73896271

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011011689.XA Pending CN112149136A (zh) 2020-09-23 2020-09-23 loT设备固件漏洞的检测方法、系统及电子设备

Country Status (1)

Country Link
CN (1) CN112149136A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112906004A (zh) * 2021-01-26 2021-06-04 北京顶象技术有限公司 基于汇编代码的漏洞检测方法、装置和电子设备
CN113312220A (zh) * 2021-05-26 2021-08-27 国家计算机网络与信息安全管理中心 一种固件隐患检测方法、装置及电子设备
CN114500043A (zh) * 2022-01-25 2022-05-13 山东省计算中心(国家超级计算济南中心) 基于同源性分析的物联网固件漏洞检测方法及系统
CN116049835A (zh) * 2023-03-08 2023-05-02 中汽智联技术有限公司 汽车固件的安全漏洞检测方法、设备和存储介质
CN116910770A (zh) * 2023-09-13 2023-10-20 中国海洋大学 一种基于密度的固件基址识别系统及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103617396A (zh) * 2013-11-29 2014-03-05 杭州华三通信技术有限公司 一种漏洞利用的检测方法和系统
CN107180188A (zh) * 2017-04-12 2017-09-19 中山大学 一种基于动态污点分析对加密应用的明文提取的系统
CN109871693A (zh) * 2019-02-21 2019-06-11 北京百度网讯科技有限公司 用于检测漏洞的方法和装置
CN110502423A (zh) * 2019-06-24 2019-11-26 杭州海康威视数字技术股份有限公司 固件的漏洞识别方法、装置、设备和存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103617396A (zh) * 2013-11-29 2014-03-05 杭州华三通信技术有限公司 一种漏洞利用的检测方法和系统
CN107180188A (zh) * 2017-04-12 2017-09-19 中山大学 一种基于动态污点分析对加密应用的明文提取的系统
CN109871693A (zh) * 2019-02-21 2019-06-11 北京百度网讯科技有限公司 用于检测漏洞的方法和装置
CN110502423A (zh) * 2019-06-24 2019-11-26 杭州海康威视数字技术股份有限公司 固件的漏洞识别方法、装置、设备和存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112906004A (zh) * 2021-01-26 2021-06-04 北京顶象技术有限公司 基于汇编代码的漏洞检测方法、装置和电子设备
CN113312220A (zh) * 2021-05-26 2021-08-27 国家计算机网络与信息安全管理中心 一种固件隐患检测方法、装置及电子设备
CN114500043A (zh) * 2022-01-25 2022-05-13 山东省计算中心(国家超级计算济南中心) 基于同源性分析的物联网固件漏洞检测方法及系统
CN116049835A (zh) * 2023-03-08 2023-05-02 中汽智联技术有限公司 汽车固件的安全漏洞检测方法、设备和存储介质
CN116910770A (zh) * 2023-09-13 2023-10-20 中国海洋大学 一种基于密度的固件基址识别系统及方法
CN116910770B (zh) * 2023-09-13 2023-12-19 中国海洋大学 一种基于密度的固件基址识别系统及方法

Similar Documents

Publication Publication Date Title
CN112149136A (zh) loT设备固件漏洞的检测方法、系统及电子设备
CN112035359B (zh) 程序测试方法、装置、电子设备及存储介质
US8769504B2 (en) Method and apparatus for dynamically instrumenting a program
CN109101815B (zh) 一种恶意软件检测方法及相关设备
US8397104B2 (en) Creation of test plans
CN109271359B (zh) 日志信息处理方法、装置、电子设备及可读存储介质
US20090222646A1 (en) Method and apparatus for detecting processor behavior using instruction trace data
CN110474900B (zh) 一种游戏协议测试方法及装置
CN114500043B (zh) 基于同源性分析的物联网固件漏洞检测方法及系统
CN110209520B (zh) 一种提高ssd测试效率的方法、装置、计算机设备及存储介质
CN111104157A (zh) 一种存储设备量产方法、装置、存储介质及电子设备
CN111090593A (zh) 确定崩溃归属的方法、装置、电子设备及存储介质
US9760470B2 (en) Device, method, and program analysis of new source code to be added to execution program to check for bug
CN115686961A (zh) 处理器测试方法、装置及电子设备
CN112181430A (zh) 代码变更统计方法、装置、电子设备及存储介质
CN110287700B (zh) 一种iOS应用安全分析方法及装置
CN105912467B (zh) 一种性能测试方法及装置
CN111338864B (zh) 内存问题检测方法、装置、计算机设备及存储介质
US20230141948A1 (en) Analysis and Testing of Embedded Code
CN109189671B (zh) 逐层夹逼式变量定位方法、系统及终端设备
CN112181479A (zh) 代码文件版本间差异的确定方法、装置及电子设备
CN108628744B (zh) 故障诊断方法、装置及电子设备
CN116578282A (zh) 代码生成方法、装置、电子设备及介质
CN117724985B (zh) 一种内存访问行为监控方法、装置、存储介质及电子设备
WO2024079794A1 (ja) 解析機能付与装置、解析機能付与方法および解析機能付与プログラム

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