1.基于同源性分析的物联网固件漏洞检测方法,其特征在于,包括:
建立函数漏洞库,所述函数漏洞库至少包括漏洞及对应的可执行文件的名字、可执行文件的指令架构、可执行文件中的函数集合、可执行文件中的漏洞函数名、漏洞函数的指令集合;
提取待检测固件的可执行文件集合以及对应的指令架构,将在所述函数漏洞库中存在同名同架构的可执行文件作为待检测可执行文件;
对待检测可执行文件进行反汇编,获取待检测可执行文件的函数集合,将在所述函数漏洞库中存在同名的函数作为待检测函数;
对待检测函数的二进制文件进行反汇编,提取待检测函数的汇编代码,将汇编代码按照基本块进行划分,依次按行提取基本块内的汇编指令,形成待检测函数指令集合,计算待检测函数指令集合与漏洞函数的指令集合的相似度,如果相似度大于预设的相似度阈值,则认为待检测函数为漏洞函数的同源函数;
相似度
其中,k代表函数的基本块数, 代表待检测函数的第i个基本块的指令集合, 代表漏洞函数的第i个基本块的指令集合,|·|代表集合中元素的个数。
2.如权利要求1所述的基于同源性分析的物联网固件漏洞检测方法,其特征在于,在将汇编代码按照基本块进行划分之前,对汇编代码中的寄存器、立即数、地址、函数名和基本块名进行标准化。
3.如权利要求2所述的基于同源性分析的物联网固件漏洞检测方法,其特征在于,对汇编代码中的寄存器、立即数、地址、函数名和基本块名进行标准化,具体包括:操作数为立即数的指令进行标准化,把立即数统一替换为immdata;操作数为寄存器的指令进行标准化,寄存器分为两种情况:普通寄存器和指针寄存器,普通寄存器做操作数时转换为:general_reg,指针寄存器做操作数时转换为:pointer_reg;操作数为内存引用时进行标准化处理,将内存引用转换为o_mem;操作数为基址寄存器加间址寄存器时,将操作数转换为o_phrase;操作数为一个寄存器加数字偏移时,将操作数转换为o_displ;根据调用指令的类型,对调用指令的跳转地址进行标准化处理,如果跳转地址是函数名,则把跳转地址转换为func;如果跳转地址是一个基本块名,则把跳转地址统一为bb。
4.如权利要求1所述的基于同源性分析的物联网固件漏洞检测方法,其特征在于,若在所述函数漏洞库中不存在同名的函数,则将差异函数集合中的函数作为待检测函数;
差异函数集合Fc=Fa‑Fa∩Fb,Fa代表待测可执行文件的函数集合,Fb代表函数漏洞库中的可执行文件中的函数集合,Fa∩Fb代表Fa和Fb中的同名函数。
5.如权利要求1所述的基于同源性分析的物联网固件漏洞检测方法,其特征在于,所述函数漏洞库还包括漏洞对应的可执行文件的hash值;
计算待检测可执行文件的hash值,若所述函数漏洞库中存在相同hash值,则表明待检测可执行文件存在同源漏洞。
6.如权利要求5所述的基于同源性分析的物联网固件漏洞检测方法,其特征在于,若所述函数漏洞库中不存在相同hash值,则对待检测可执行文件进行反汇编,获取待测可执行文件的函数集合。
7.如权利要求5所述的基于同源性分析的物联网固件漏洞检测方法,其特征在于,获取各厂家公布的漏洞的物联网设备固件以及漏洞描述详情,提取物联网设备固件的系统文件,提取系统文件的可执行文件,进而获取可执行文件的名字、可执行文件的指令架构、可执行文件的hash值、可执行文件中的函数集合、可执行文件中的漏洞函数名、漏洞函数的指令集合,建立所述函数漏洞库。
8.基于同源性分析的物联网固件漏洞检测系统,其特征在于,包括:
函数漏洞库,所述函数漏洞库至少包括漏洞及对应的可执行文件的名字、可执行文件的指令架构、可执行文件中的函数集合、可执行文件中的漏洞函数名、漏洞函数的指令集合;
提取模块,用于提取待检测固件的可执行文件集合以及对应的指令架构,将在所述函数漏洞库中存在同名同架构的可执行文件作为待检测可执行文件;
筛选模块,用于对待检测可执行文件进行反汇编,获取待检测可执行文件的函数集合,将在所述函数漏洞库中存在同名的函数作为待检测函数,若在所述函数漏洞库中不存在同名的函数,则将差异函数集合中的函数作为待检测函数;差异函数集合Fc=Fa‑Fa∩Fb,Fa代表待测可执行文件的函数集合,Fb代表函数漏洞库中的可执行文件中的函数集合,Fa∩Fb代表Fa和Fb中的同名函数;
计算模块,用于对待检测函数的二进制文件进行反汇编,提取待检测函数的汇编代码,对汇编代码中的寄存器、立即数、地址、函数名和基本块名进行标准化,将标准化后的汇编代码按照基本块进行划分,依次按行提取基本块内的汇编指令,形成待检测函数指令集合,计算待检测函数指令集合与漏洞函数的指令集合的相似度,如果相似度大于预设的相似度阈值,则认为待检测函数为漏洞函数的同源函数;其中,相似度 k代表函数的基本块数, 代表待检测函数的第i个基本
块的指令集合, 代表漏洞函数的第i个基本块的指令集合,|·|代表集合中元素的个数。
9.如权利要求8所述的基于同源性分析的物联网固件漏洞检测系统,其特征在于,对汇编代码中的寄存器、立即数、地址、函数名和基本块名进行标准化,具体包括:操作数为立即数的指令进行标准化,把立即数统一替换为immdata;操作数为寄存器的指令进行标准化,寄存器分为两种情况:普通寄存器和指针寄存器,普通寄存器做操作数时转换为:general_reg,指针寄存器做操作数时转换为:pointer_reg;操作数为内存引用时进行标准化处理,将内存引用转换为o_mem;操作数为基址寄存器加间址寄存器时,将操作数转换为o_phrase;操作数为一个寄存器加数字偏移时,将操作数转换为o_displ;根据调用指令的类型,对调用指令的跳转地址进行标准化处理,如果跳转地址是函数名,则把跳转地址转换为func;如果跳转地址是一个基本块名,则把跳转地址统一为bb。