一种针对二进制物联网固件程序的漏洞检测方法和系统技术方案

技术编号:36451108 阅读:18 留言:0更新日期:2023-01-25 22:47
本公开提出一种针对二进制物联网固件程序的漏洞检测方法和系统,涉及漏洞检测技术领域。分别获取第一二进制程序和第二二进制程序的函数调用图作为第一和第二函数调用图,并提取第一二进制程序的函数多维特征作为第一特征以及第二二进制程序的函数多维特征作为第二特征;基于第一特征和第二特征确定候选函数对,根据候选函数对中两个函数的控制流图分别确定两个函数基于控制流图的基本块多维迭代特征向量,以获取候选函数对的向量表示;计算候选函数对包含的两个函数的向量表示的相似度,并基于相似度判定第一二进制程序包含的漏洞。本公开在保证比较效率的前提下,提高基于相似性比较方法对目标二进制固件程序进行漏洞检测的精确程度。洞检测的精确程度。洞检测的精确程度。

【技术实现步骤摘要】
一种针对二进制物联网固件程序的漏洞检测方法和系统


[0001]本专利技术属于漏洞检测
,尤其涉及一种针对二进制物联网固件程序的漏洞检测方法和系统。

技术介绍

[0002]软件漏洞是各种网络安全事件产生的主要原因,对网络空间安全的影响至关重要,得到安全研究机构、科研学术团体和企业广泛而持续的关注。在软件开发过程中,开发人员往往复用已发布的代码实现程序的特定功能,这种方法一方面可以有效提高开发效率,缩短开发周期;另一方面,也将复用代码中的安全漏洞扩散到大量的相关程序中,带来的安全隐患不容忽视。对复用代码漏洞的检测是漏洞分析的一个重要的研究方向,也是软件供应链安全的关键研究内容。随着物联网IoT(Internet of Things)设备的广泛使用,传统架构的程序也逐渐适配到基于MIPS或者ARM架构开发的IoT 设备中,在跨架构代码复用过程中,某个漏洞在特定体系结构(如intel x86) 下受到广泛关注并进行了修复,而与其源码相同但是应用于另一个体系结构(如ARM)的文件中的漏洞并未受到关注,同样存在安全隐患;同时,对受影响的设备进行修复需手工更新固件,因此比传统PC机上的漏洞修复更为困难,这就导致固件设备中的漏洞存在时间更长。加州大学和密歇根大学的研究人员对IoT设备进行研究发现,物联网设备(路由器、防火墙,打印机等)在漏洞公布后,往往未及时进行漏洞修补。据统计,超过5000万的 IoT设备中的第三方库代码都存在安全漏洞。2020年12月,网络安全公司 Forescout发布技术报告,发现了影响超过150个公司的几百万个设备(包括物联网,工业控制系统网络和互联网设备)的33个漏洞,大部分的漏洞与内存损坏相关,导致拒绝服务、信息泄露和远程代码执行攻击等安全问题大部分的固件程序都是以二进制形式发布,这些二进制程序同样存在因代码复用导致的漏洞,对其进行漏洞检测十分必要。当前,大部分的固件程序都是以二进制形式发布,这些二进制程序同样存在因代码复用导致的漏洞,且由于源码未知,编译语义信息丢失和因为代码优化带来的函数内联,冗余消除以及指令重排序问题,对其进行漏洞检测难度要远大于源码已知的程序。
[0003]近年来,研究人员开始着手解决跨体系的二进制代码相似性检测的问题。最早提出使用漏洞签名来搜索二进制代码中不同体系结构的已知漏洞。随着机器学习的兴起,使用机器学习模型学习代码特征,根据学习到的代码特征规律进行表征,得到代码的特征向量,并使用向量空间距离计算代码的相似程度。Genius和Gemini是关于跨体系结构漏洞搜索的两个最具代表性的工具。它们分别利用传统的机器学习和深度学习,将函数的CFG 转化为向量进行相似性比较。这些方法都是基于函数级别进行的跨架构二进制相似性比较。将这种函数级别的相似性比较方法直接应用于目标程序的漏洞检测时,需要将漏洞函数与目标程序中的所有函数进行特征提取和相似性比较,效率不高,且受静态分析影响,得到的比较精度无法有大幅提升。
[0004]二进制程序漏洞检测的一个典型场景是,在给定漏洞函数的条件下,对目标二进制程序集中的程序是否存在类似漏洞进行检测。对目标程序集中的多个程序进行漏洞检测
的流程包括,在分析目标程序集中的所有二进制程序并对其代码进行预处理后,得到每一个程序中的所有函数并对其进行特征提取和表示,其中代码特征包括基本块的指纹,函数的哈希等。同时,对漏洞函数进行同样的预处理、特征提取和表示后,使用一定的度量标准,计算二进制程序中的每一个函数与漏洞函数的相似程度值,基于相似度度量结果,对目标程序中是否存在漏洞函数进行检测。
[0005]传统基于代码相似性的漏洞检测方法通过提取代码的关键特征,包含程序的控制流图、数据流图或者执行序列,使用图同构、树编辑距离、执行迹距离、最长公共子序列、图编辑距离等度量方法判断代码是否相似,这些方法虽然可以对代码进行匹配,但是存在效率和扩展性问题。基于机器学习的相似性比较方法来检测漏洞虽然能够提高比较的效率,并可以应用于较大规模的程序检测,但是这种方法需要对漏洞函数与目标程序中所有函数进行比较,在对代码特征进行向量空间映射时,可能存在多个函数映射距离较近的情况,因此,对检测精度产生一定影响,特别是在目标程序规模较大时检测精度受到的影响更大。

技术实现思路

[0006]为了解决上述技术问题,本专利技术提出一种针对二进制物联网固件程序的漏洞检测方案,在提高漏洞检测效率的同时提升漏洞代码定位的精确度。
[0007]本专利技术第一方面公开了一种针对二进制物联网固件程序的漏洞检测方法。所述方法包括:步骤S1、分别获取第一二进制程序和第二二进制程序的函数调用图作为第一函数调用图和第二函数调用图;其中,所述第一二进制程序为待检测的目标二进制物联网固件程序,所述第二二进制程序为包含漏洞的标准二进制程序;步骤S2、从所述第一函数调用图中提取所述第一二进制程序的函数多维特征作为第一特征,并从所述第二函数调用图中提取所述第二二进制程序的函数多维特征作为第二特征;步骤S3、基于所述第一特征和所述第二特征确定候选函数对,根据所述候选函数对中两个函数的控制流图分别确定所述两个函数基于控制流图的基本块多维迭代特征向量,以获取所述候选函数对的向量表示;步骤S4、将每一个所述候选函数对包含的两个函数的向量表示输入至经训练的神经网络模型,以计算所述候选函数对包含的两个函数的向量表示的相似度,并基于所述相似度判定所述第一二进制程序包含的漏洞。
[0008]根据本专利技术第一方面的方法,在所述步骤S1中,函数调用图以ACG= (V,E,Σ)来表征,其中V表示二进制程序中包含的各个函数节点的集合,E表示存在调用关系的函数节点对的集合,所述函数节点对在所述函数调用图中以节点之间的边来进行表征,Σ表示所述各个函数节点映射到其节点多维属性特征的集合。
[0009]根据本专利技术第一方面的方法,在所述步骤S2中,所述函数多维特征包括所述函数节点的文本特征、函数统计特征、函数调用上下文特征、函数内部的结构特征以及函数间的结构特征;其中:所述函数节点的文本特征为函数引用的字符串;所述函数统计特征为所述函数引用的字符串的个数、指令数目和跳转指令个数;所述函数调用上下文特征为函数参数的数目和调用的API函数数目;所述函数内部的结构特征基于函数内部的以基本快为单位的结构来获取,以函数内部代码的圈复杂度C来表征,C=E
’‑
N+2, E

表示函数内部控制流图中边的数目,N表示所述函数内部控制流图中节点的数目;所述函数间的结构特征为所述函数节点的出度和入度,所述出度表示当前函数调用其他函数的个数,所述入度表示所
述当前函数被其他函数调用的次数。
[0010]根据本专利技术第一方面的方法,在所述步骤S3中,基于所述第一特征和所述第二特征确定所述候选函数对具体包括:获取所述第一二进制程序包含的函数集合{f1,f2,

f
s
},对函数集合中的函数f
i
,1≤i≤s,从所述第一特征中提取与所述函数f
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种针对二进制物联网固件程序的漏洞检测方法,其特征在于,所述方法包括:步骤S1、分别获取第一二进制程序和第二二进制程序的函数调用图作为第一函数调用图和第二函数调用图;其中,所述第一二进制程序为待检测的目标二进制物联网固件程序,所述第二二进制程序为包含漏洞的标准二进制程序;步骤S2、从所述第一函数调用图中提取所述第一二进制程序的函数多维特征作为第一特征,并从所述第二函数调用图中提取所述第二二进制程序的函数多维特征作为第二特征;步骤S3、基于所述第一特征和所述第二特征确定候选函数对,根据所述候选函数对中两个函数的控制流图分别确定所述两个函数基于控制流图的基本块多维迭代特征向量,以获取所述候选函数对的向量表示;步骤S4、将每一个所述候选函数对包含的两个函数的向量表示输入至经训练的神经网络模型,以计算所述候选函数对包含的两个函数的向量表示的相似度,并基于所述相似度判定所述第一二进制程序包含的漏洞。2.根据权利要求1所述的一种针对二进制物联网固件程序的漏洞检测方法,其特征在于,在所述步骤S1中,函数调用图以ACG=(V,E,Σ)来表征,其中V表示二进制程序中包含的各个函数节点的集合,E表示存在调用关系的函数节点对的集合,所述函数节点对在所述函数调用图中以节点之间的边来进行表征,Σ表示所述各个函数节点映射到其节点多维属性特征的集合。3.根据权利要求2所述的一种针对二进制物联网固件程序的漏洞检测方法,其特征在于,在所述步骤S2中,所述函数多维特征包括所述函数节点的文本特征、函数统计特征、函数调用上下文特征、函数内部的结构特征以及函数间的结构特征;其中:所述函数节点的文本特征为函数引用的字符串;所述函数统计特征为所述函数引用的字符串的个数、指令数目和跳转指令个数;所述函数调用上下文特征为函数参数的数目和调用的API函数数目;所述函数内部的结构特征基于函数内部的以基本快为单位的结构来获取,以函数内部代码的圈复杂度C来表征,C=E
’‑
N+2,E

表示函数内部控制流图中边的数目,N表示所述函数内部控制流图中节点的数目;所述函数间的结构特征为所述函数节点的出度和入度,所述出度表示当前函数调用其他函数的个数,所述入度表示所述当前函数被其他函数调用的次数。4.根据权利要求3所述的一种针对二进制物联网固件程序的漏洞检测方法,其特征在于,在所述步骤S3中,基于所述第一特征和所述第二特征确定所述候选函数对具体包括:获取所述第一二进制程序包含的函数集合{f1,f2,

f
s
},对函数集合中的函数f
i
,1≤i≤s,从所述第一特征中提取与所述函数f
i
相关的函数节点的文本特征、函数统计特征、函数调用上下文特征、函数内部的结构特征以及函数间的结构特征;对与所述函数f
i
相关的函数节点的文本特征进行轻量化表示,合并所述函数f
i
经轻量化表示的函数节点的文本特征、函数统计特征、函数调用上下文特征、函数内部的结构特征以及函数间的结构特征,得到所述函数f
i
的多维特征向量w
fi
;以同样的方式获取所述第二二进制程序中包含的漏洞函数的多维特征向量w
vul
,并计
算所述函数函数f
i
的多维特征向量w
fi
与所述漏洞函数的多维特征向量w
vul
之间的向量空间距离d
i
=D(w
fi
,w
vul
),并对向量空间距离...

【专利技术属性】
技术研发人员:于璐沈毅杨国正戚兰兰赵军黄晖朱凯龙
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

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

1