一种动静结合的跨架构固件漏洞检测方法及装置

未命名 08-29 阅读:131 评论:0


1.本发明涉及网络安全技术领域,尤其涉及一种动静结合的跨架构固件漏洞检测方法及装置。


背景技术:

2.随着物联网的普及,越来越多的嵌入式设备接入互联网,但是随着嵌入式设备的不断增多,其带来的安全问题也变得尤为突出。嵌入式设备是一个封闭的系统,它引导到一个称为固件的统一软件包中。在固件设计之初,由于缺乏安全性考虑以及大量的代码重用导致了固件中存在许多漏洞。由于嵌入式系统与通用的桌面操作系统架构的不一致,导致传统应用于pc端的漏洞扫描工具很难有效的检测固件中的漏洞。目前主流的固件漏洞检测方法有静态检测和动态检测。
3.静态漏洞检测的原理主要有:(1)反汇编与反编译:将二进制文件反汇编为汇编代码,以及将编译过的代码反编译为高级编程语言;(2)静态代码分析:这包括检查代码中的缓冲区溢出、整数溢出、格式化字符串漏洞、未初始化变量等常见的漏洞类型;(3)数据流和控制流分析:对固件中的数据流和控制流进行分析,以识别可能导致安全问题的编程错误。数据流分析有助于追踪程序中变量和数据的传递过程,从而发现可能导致数据泄露或错误处理的问题。控制流分析则关注程序的执行路径,以找出可能导致程序崩溃或异常行为的逻辑错误。
4.动态检测固件漏洞的工作原理主要包括以下几个步骤:(1)固件提取与解析:在进行动态漏洞检测之前,首先需要对目标固件进行提取与解析。这意味着从设备上获取固件镜像,然后分析其结构,提取其中的文件系统、程序和配置信息。这有助于识别固件的组成部分和潜在的漏洞点。(2)模拟环境搭建:为了进行动态漏洞检测,需要搭建一个仿真环境,用于模拟固件在实际设备上的运行。这通常包括创建一个虚拟机或容器,加载固件的文件系统,并配置相应的硬件和软件依赖项。(3)运行与监控:在模拟环境中运行固件,对其进行实时监控。监控的目的是捕获潜在的异常行为和安全事件。这包括跟踪系统调用、网络通信、文件操作等,以便了解固件在运行过程中的行为特征。(4)漏洞挖掘与利用:在固件运行过程中,使用一系列预先定义的攻击模式和策略对其进行测试,以触发潜在的安全漏洞。这包括输入验证不足、缓冲区溢出、命令注入等常见的漏洞类型。通过这些测试,可以发现固件中存在的漏洞,并评估其影响范围。
5.静态漏洞检测方法的优势在于可以在不执行代码的情况下发现潜在漏洞,节省了时间和资源。然而,这种方法也存在一定的局限性,例如可能会产生误报和漏报,以及难以发现运行时才会触发的漏洞。固件动态漏洞检测方法的优势在于可以在运行时发现安全漏洞,更接近实际设备的使用场景。然而,这种方法也存在一定的局限性,固件是针对特定的嵌入式设备定制的,因此对某一设备的动态检测方法不能通用;动态检测通常采用固件仿真的方法。但是,固件的nvram(non-volatile random access memory)通常是不可用的,导致固件仿真的过程并不总是可行的,而且非常耗时。


技术实现要素:

6.本发明所要解决的技术问题是克服现有技术中静态检测技术对固件漏洞检测适用性较低、测精度不高以及单独利用动态检测耗费时间长的问题,提供一种动静结合的跨架构固件漏洞检测方法及装置,通过基于代码相似性的静态检测方法与固件仿真分析的动态检测方法结合的方式来检测固件漏洞。主要应用于物联网设备中的固件漏洞检测,为提高固件代码漏洞检测与分析能力提供指导。
7.本发明为解决该技术问题采用的技术方案是:一种动静结合的跨架构固件漏洞检测方法,包括步骤如下:
8.步骤1:分别获取可疑固件函数的属性控制流图和已知漏洞函数的属性控制流图;属性控制流图中包括指令的语义特征、基本块的统计特征、属性控制流图的统计特征;
9.步骤2:将属性控制流图作为静态检测模块的输入,进行指令嵌入、基本块嵌入、图嵌入三步嵌入操作得到属性控制流图的嵌入表示,通过属性控制流图的嵌入表示向量距离公式计算所输入属性控制流图相似性;
10.步骤2.1:所述指令嵌入采用bert语言嵌入模型,根据属性控制流图中基本块汇编指令的语义特征进行嵌入,将所有的汇编指令用向量表示;
11.bert语言嵌入模型包括遮盖指令预测模型和上下文相关性预测模型;所述遮盖指令预测模型在每一个汇编指令中以p%的概率随机选中某个指令用于预测,当某个指令被选中时,该指令被替换成以下三个标志之一:[mask]标志、随机的其他指令或保持不变;所述上下文相关性预测模型中,给定两个连续指令i1和连续指令i2;连续指令i1进行的数据操作影响连续指令i2,则称i2对i1存在数据依赖;将两个连续指令的原顺序作为阳性样本对,将顺序颠倒后的序列作为阴性样本对;阳性样本对和阳性样本对均输入至上下文相关性预测模型,用于检测两连续指令的相关性;bert语言嵌入模型完成指令嵌入如下:
[0012]earm
=f(x
arm
);e
mips
=f(x
mips
)
[0013]
其中,e
arm
是高级精简指令集计算机arm架构输入汇编指令x
arm
的嵌入,e
mips
是无内部流水线互锁的微处理器mips架构输入汇编指令x
mips
的嵌入,f表示训练好的bert语言嵌入模型;
[0014]
其中,针对不同架构下的汇编指令的嵌入,采用典型相关性分析方法cca进行投影,以将不同架构的汇编指令映射到同一空间进行指令表示;
[0015]
具体方式是根据指令助记符,构建mips和arm两种架构内语义相同指令的等价映射;通过指令助记符为mips架构和arm架构中的指令制作相互映射的指令词典;通过指令词典,从两种架构指令中选取典型的指令集;∑

表示mips架构中的典型指令集,ω

表示arm架构中的典型指令集;∑表示mips架构的总体指令集,ω表示arm架构的总体指令集;两个典型指令集中的指令一一映射,x和y表示一对等价的指令嵌入,a和b表示投影方向,x和y经过投影后的向量表示为:x

=a
t
x,y

=b
t
y,投影向量x

和y

的相关性表示为:
[0016][0017]
e为期望;
[0018]
最大化相关性ρ(x

,y

),并输出最大化相关性下的两个投影向量a和b,通过这两
个投影向量将mips架构和arm架构的所有指令进行投影,总结为:
[0019]
a,b=cca(∑

,ω

)
[0020]

*
=a
t
∑,ω
*
=b
t
ω
[0021]
其中,a和b分别是两种架构的典型子集经过cca方法得到的投影矩阵,两种架构的总体指令集通过a和b投影后的向量空间∑
*
和ω
*
在同一维度,满足跨架构相似性比较的需求;
[0022]
之后,将bert语言嵌入模型生成的指令嵌入与a或b计算进行投影,得到经过跨架构处理的指令嵌入:
[0023]bemb
=a
temips
[0024]bemb
=b
tearm
[0025]
其中,b
emb
表示基本块的指令语义嵌入向量,a和b分别是两种架构的典型子集经过cca方法得到的投影矩阵,e
mips
和e
arm
为由bert语言嵌入模型生成的指令嵌入向量;
[0026]
步骤2.2:指令嵌入结束后进行基本块嵌入,经指令嵌入的属性控制流图中每一条汇编指令均为向量表示;通过lstm模型将基本块中的指令语义向量序列和基本块的统计特征进行汇总,通过一个向量表示具有内在关联的所有指令序列;
[0027]
基本块的特征表示如下:
[0028]bfea
=w
b1bemb
+w
b2bsta
[0029]
其中,w
b1
和w
b2
分别表示基本块的指令语义嵌入向量权重矩阵和基本块的统计特征权重矩阵;b
emb
和b
sta
分别表示基本块的指令语义嵌入向量和基本块的统计特征;在训练过程中,指令语义嵌入向量权重矩阵和统计特征权重矩阵分别控制指令语义嵌入向量和基本块的统计特征在基本块特征表示中所占的比重;
[0030]
步骤2.3:图嵌入模块通过图的拉普拉斯矩阵进行拓扑图的卷积操作,通过有向图卷积网络保留属性控制流图的方向信息,结合无向图的拼接融合方式获取属性控制流图的图嵌入表示;
[0031]
图的卷积公式止是图的邻接矩阵,in是单位阵,是的度矩阵,h是每一层的特征,输入层特征h为基本块的特征b
fea
,σ是非线性激活函数,w是训练的参数;属性控制流图增加入度矩阵a
sin
和出度矩阵a
sout
用于保留图形的方向信息;所述入度矩阵为存在一个节点k,同时有两个节点i和j指向k节点{i
→k←
j},使得a
sin
(i,j)=a
sin
(i,j)+1;出度矩阵为存在节点k同时指向i,j节点{i
←k→
j},使得a
sout
(i,j)=a
sout
(i,j)+1;通过入度矩阵和出度矩阵构造无向图卷积,公式如下:
[0032][0033][0034]
融合无向图的卷积公式zf,融合公式如下:
[0035]
z=concat(zf,αz
sin
,βz
sout
)
[0036]
其中,α表示入度卷积的权重;p表示出度卷积的权重;zf、z
sin
和z
sout
能够获取一阶和二阶的邻居特征信息,而且z
sin
和z
sout
能够保留有向图的结构信息;通过融合后的卷积公
式对有向图属性控制流图进行结构性提取;
[0037]
对于图的结构特征,同时考虑到图嵌入和图的统计特征,最终图的结构特征嵌入表示如下:
[0038]
g=w
f1
z+w
f2fsta
[0039]
其中,w
f1
和w
f2
是图基本块属性特征和图统计特征的矩阵系数,f
sta
是属性控制流图的统计特征;
[0040]
步骤2.4:通过向量的距离公式来判断输入属性控制流图的相似性;当一对输入的属性控制流图相似性高于设定值,则二者相似,进行动态仿真检测;
[0041]
所述向量的距离公式如下:
[0042][0043]
其中g1、g2为图嵌入模块的输出;
[0044]
步骤3:对符合相似性标准的可疑固件文件使用firmae仿真工具进行动态仿真,根据已知相似漏洞的原理进行漏洞检测。
[0045]
一种动静结合的跨架构固件漏洞检测装置,包括属性控制流图提取模块、指令嵌入模块、基本块嵌入模块、图嵌入模块、相似性比较模块和动态仿真检测模块;
[0046]
属性控制流图提取模块通过开源反汇编工具将含有已知漏洞的固件文件和需要检测的固件文件进行反汇编,将两种固件文件中的二进制函数转换为属性控制流图,作为输入数据,用于提取产生指令的语义特征、基本块的统计特征、属性控制流图的统计特征;
[0047]
指令嵌入模块将汇编指令类比为句子中的词语,基本块类比为句子来提取二进制函数指令的语义特征;采用自然语言处理的bert语言嵌入模型将汇编指令视作语句生成指令嵌入,将属性控制流图中的汇编指令用向量表示;
[0048]
基本块嵌入模块在指令嵌入模块的基础上以基本块中所有汇编指令的嵌入及属性控制流图提取模块中基本块的统计特征作为输入;将基本块中的指令序列通过lstm模型汇总为一个向量用于解决基本块中指令序列过长的问题;基本块的统计特征用于基本块内指令分类,包括字符串常量、数字常量、算数指令、逻辑指令、转移指令、传输指令以及调用指令;所述基本块的统计特征还包括基本块的位置信息,即计算该基本块的上方基本块的数量并除以总的基本块数;得到基本块的统计特征后与基本块所有指令的嵌入表示后训练两个权重矩阵来计算基本块的嵌入表示;
[0049]
图嵌入模块的输入是基本块嵌入后的基本块特征向量;属性控制流图设置入度矩阵a
sin
和出度矩阵a
sout
,用于保留图形的方向信息的同时提取图形特征;入度矩阵a
sin
和出度矩阵a
sout
表示图形的方向性,之后采用拼接的融合方式进行图卷积并训练权重矩阵来将属性控制流图的结构特征与属性控制流图的统计特征结合计算图的嵌入表示;
[0050]
相似性比较模块的输入为经过三个嵌入模块后可疑函数acfg与漏洞函数acfg的空间向量表示,通过向量的距离公式来判断输入样本对的相似性,经公式计算后高于阈值的可疑函数需要进行动态检测来确定具体漏洞;
[0051]
动态仿真检测模块采用firmae固件仿真工具,在预先构建的定制内核和库上仿真固件镜像,需要对固件镜像进行两次仿真,分别为预仿真和最终仿真;预仿真记录固件中的有用信息,而最终仿真则利用预仿真提取的有用信息对固件镜像进行漏洞复现。
[0052]
本发明的有益效果:针对固件漏洞存在的现状,提出了一种动静结合的跨架构固件漏洞检测方法及装置,首先通过静态代码检测的方式对固件进行大范围筛查,通过三层嵌入的方式将待检查与已知漏洞函数分别表示为向量形式并输入静态检测模块进行相似度对比,相似度高于阈值的即可认定为可疑固件。之后通过动态仿真固件的方式对固件进行仿真运行来查找响应漏洞。解决了现有技术中静态检测技术对固件漏洞检测适用性较低、测精度不高以及单独利用动态检测耗费时间长的问题。
附图说明
[0053]
图1是本发明一种动静结合的跨架构固件漏洞检测方法的总体架构图;
[0054]
图2是本发明实施例提供的生成指令嵌入的流程图;
[0055]
图3是本发明实施例提供的基本块嵌入及图嵌入的流程图。
具体实施方式
[0056]
下面结合说明书附图对本发明的运行方式作进一步详细的说明。
[0057]
一种动静结合的跨架构固件漏洞检测方法,步骤如下:
[0058]
步骤1:使用开源反汇编工具ida pro分别获取可疑固件和已知漏洞函数的属性控制流图acfg。
[0059]
步骤2:将属性控制流图作为静态检测模块的输入,准备进行三步嵌入操作得到属性控制流图的嵌入表示以通过向量的距离公式评估输入样本对相似性。
[0060]
步骤2.1:采用bert语言嵌入模型对属性控制流图中汇编指令进行嵌入,将所有的汇编指令用向量表示。
[0061]
bert语言嵌入模型主要包括遮盖指令预测模型及上下文相关性预测模型两个训练任务。遮盖指令预测模型在每一个训练序列中以15%的概率随机地选中某个指令用于预测,假如某个指令被选中,则会被替换成以下三个标志之一:80%的情况是一个[mask]标志;10%的情况是随机的其他指令;10%的情况保持不变。上下文相关性预测模型假设给定两个连续指令i1和i2,其中i1进行的数据操作影响到了i2,则称i2对i1存在数据依赖。此时将原顺序作为阳性样本对,将顺序颠倒后的序列作为阴性样本对,则可以预测指令顺序是否颠倒,并帮助模型理解数据的定义和使用关系。
[0062]
其中,针对不同架构下的指令,需要采用典型相关性分析cca的方法进行投影,以将不同架构的指令映射到同一空间进行指令表示。具体方式是根据指令助记符,构建mips和arm两种架构内语义相近的指令的等价映射,如

mov’=’move’。可以通过助记符为mips和arm指令制作相互映射的词典,具体来说如果助记符所做的操作是相似的,例如mips中的

move’与arm中的

mov’都是赋值指令,因此被认为是等价的,同时还包括很多比如两种架构指令都是算数指令(加、减、乘和除)、比较指令(大于、小于和等于)以及逻辑运算指令(与、或和非)等。通过指令词典,可以从两种架构指令中选取典型的指令集分别用∑

和ω

表示,其中∑

表示mips架构中的典型指令集而ω

表示arm架构中的典型指令集。用∑表示mips架构的总体指令,q表示arm架构的总体指令。其中让和两个典型子集中的指令一一映射,x和y表示一对等价的指令,a和b表示投影方向,那么x和y经过投影后的向量表示为:x

=a
t
x,y

=b
t
y,投影向量x

和y

的相关性表示为:
[0063][0064]
此步的优化目标是最大化相关性p(x

,y

),并输出两个投影向量a和b。利用这两个投影向量可以将mips和arm的所有指令进行投影,总结为:
[0065]
a,b=cca(∑

,ω

)
[0066]
∑*=a
t
∑,ω*=b
t
ω
[0067]
其中a和b是两种架构的典型子集经过cca方法得到的投影矩阵,两种架构的总体指令集通过a和b投影后的向量空间∑
*
和ω
*
认为在同一维度,满足跨架构相似性比较的需求。
[0068]
步骤2.2:指令嵌入结束后,属性控制流图中的每一条汇编指令都用向量表示。使用lstm模型将基本块的中的指令序列进行汇总,通过一个向量表示具有内在关联的所有指令序列。
[0069]
其中基本块的特征表示如下:
[0070]bfea
=w
b1bemb
+w
b2bsta
[0071]
其中w
b1
和w
b2
分别表示基本块的指令语义嵌入向量和统计特征的权重矩阵。在训练过程中,这两个权重矩阵能够控制指令语义嵌入向量和统计特征在基本块特征表示中所占的比重。
[0072]
步骤2.3:借助图的拉普拉斯矩阵来实现拓扑图的卷积操作,通过有向图卷积网络dgcn保留图形的方向信息,结合无向图的拼接融合方式获取属性控制流图的嵌入表示。
[0073]
其中图的卷积公式a是图的邻接矩阵,in是单位阵,是的度矩阵,h是每一层的特征,对于输入层h就是基本块的特征,σ是非线性激活函数,w是训练的参数。同时,为了保留图形的方向信息为属性控制流图增加两个矩阵,入度矩阵a
sin
和出度矩阵a
sout
。入度矩阵是指存在一个节点k,同时有两个节点i和j指向k节点{i
→k←
j},让a
sin
(i,j)+=1。相反,如果存在节点k同时指向i,j节点{i
←k→
j},让a
sout
(i,j)+=1。利用这两个矩阵构造类似无向图卷积,公式如下:
[0074][0075][0076]
通过这两个辅助公式可以有效的表示图形的方向性,在融合无向图的卷积公式zf,融合公式如下:
[0077]
z=concat(zf,αz
sin
,βz
sout
)
[0078]
其中α和β表示入度卷积和出度卷积不同的权重,这个权重通过学习获得。zf、z
sin
和z
sout
能够获取丰富的一阶和二阶的邻居特征信息,而且z
sin
和z
sout
能够保留有向图的结构信息。这样通过融合后的卷积公式就可以对有向图属性控制流图进行结构性提取。
[0079]
步骤3:通过向量的距离公式来判断输入样本对的相似性,经过实验测试,本方法
相似度得分最高的前80%的样本对在[0.797,1.0]区间内。如果一对输入的属性控制流图相似性高于0.797,则认为输入样本对是相似的,需要进行动态仿真检测。
[0080]
其中向量的距离公式如下:
[0081][0082]
其中g1、g2分别为输入静态检测模块的两个属性控制流图。
[0083]
步骤4:对可疑固件文件使用firmae仿真工具进行动态仿真,根据已知相似漏洞的原理进行漏洞检测。
[0084]
图1展示出了本发明所设计的一种动静结合的跨架构固件漏洞检测方法的总体架构图,该包括属性控制流图提取11、指令嵌入12、基本块嵌入13、图嵌入14、相似性比较15、动态检测16;
[0085]
属性控制流图提取以固件文件作为输入,借助开源工具ida pro来编写ida脚本提取固件文件的属性控制流图,其中汇编代码作为指令嵌入12的输入,基本块的统计特征作为基本块嵌入13的输入之一,属性控制流图的统计特征作为图嵌入14的输入之一;
[0086]
静态检测模块包括指令嵌入12、基本块嵌入13、图嵌入14和相似性比较15,以提取的属性控制流图作为输入,经过三步嵌入操作后生成函数的空间向量嵌入表示,进行相似性比较并输出所比较函数的相似度。
[0087]
动态检测16以固件文件和所比较函数的相似度作为输入,对于相似度大于阈值的固件文件进行预仿真和最终仿真。
[0088]
图2示出了本发明实施例提供的指令嵌入模型训练及指令嵌入生成流程图,详述如下:
[0089]
s201中,通过采集大量汇编指令作为数据集作为模型训练的输入。
[0090]
s202中,通过编写python脚本来提取可执行文件中的前后两条连续指令作为指令对;
[0091]
s203中将每条指令视为一个句子,将单个指令视为一个单词,例如给定一条指令“mov ebx,0x1”,可以将其标记化为“mov”,“ebx”,“0x1”;
[0092]
s204汇编指令数据集处理完毕开始第一轮训练;
[0093]
s205中,包含两个bert语言嵌入模型的训练任务遮盖指令预测及上下文相关性预测训练,在训练模型时两个任务同步进行;
[0094]
s206如果训练计数epoch小于100,则继续训练,否则选出100轮中的最优模型用于生成指令嵌入;
[0095]
s207为属性控制流图中需要进行嵌入表示的汇编指令;
[0096]
s208为bert预训练指令嵌入模型,输入汇编指令后会生成对应的指令嵌入;
[0097]
s209根据指令助记符,构建不同架构内语义相近的指令的等价映射,最大化不同架构下同类指令的相关性;
[0098]
s210生成输入指令所对应的嵌入表示。
[0099]
图3示出了本发明实施例提供的基本块嵌入及图嵌入过程的流程图,详述如下:
[0100]
在s301中,指令特征向量是由指令嵌入模块得到的,每个基本块的指令特征向量都需要经过指令嵌入模块计算得到;
[0101]
在s302中,通过长短时记忆网络lstm将基本块中的指令序列表示为基本块内指令语义特征的嵌入;
[0102]
在s303中,基本块的统计特征是从属性控制流图中手工提取的,包括基本块中不同种类指令的数量以及每个基本块内的指令总数、基本块在属性控制流图中所属的位置;
[0103]
在s304中,通过训练两个权重矩阵来同时组合基本块指令语义特征的嵌入和基本块的统计特征;
[0104]
在s305中,得到基本块的特征嵌入,以向量的形式作为图嵌入模块的输入;
[0105]
在s306中通过构造图的入度矩阵和出度矩阵来表示图形的方向性;
[0106]
在s307中,由s306中的两个矩阵采用的拼接方式来融合无向图的卷积公式,计算图的属性特征;
[0107]
在s308中,得到图的属性特征,向量的形式作为最终计算图的嵌入表示的输入;
[0108]
在s309中,图的统计特征是从属性控制流图中手工提取的,包括总的基本块数、边数以及该属性控制流图对应函数被其他函数调用的次数等;
[0109]
在s310中,通过训练两个权重矩阵来同时组合图的属性特征和统计特征;
[0110]
在s311中,得到函数属性控制流图的特征嵌入表示。

技术特征:
1.一种动静结合的跨架构固件漏洞检测方法,其特征在于,包括步骤如下:步骤1:分别获取可疑固件函数的属性控制流图和已知漏洞函数的属性控制流图;属性控制流图中包括指令的语义特征、基本块的统计特征、属性控制流图的统计特征;步骤2:将属性控制流图作为静态检测模块的输入,进行指令嵌入、基本块嵌入、图嵌入三步嵌入操作得到属性控制流图的嵌入表示,通过属性控制流图的嵌入表示向量距离公式计算所输入属性控制流图相似性;步骤2.1:所述指令嵌入采用bert语言嵌入模型,根据属性控制流图中基本块汇编指令的语义特征进行嵌入,将所有的汇编指令用向量表示;bert语言嵌入模型包括遮盖指令预测模型和上下文相关性预测模型;所述遮盖指令预测模型在每一个汇编指令中以p%的概率随机选中某个指令用于预测,当某个指令被选中时,该指令被替换成以下三个标志之一:[mask]标志、随机的其他指令或保持不变;所述上下文相关性预测模型中,给定两个连续指令i1和连续指令i2;连续指令i1进行的数据操作影响连续指令i2,则称i2对i1存在数据依赖;将两个连续指令的原顺序作为阳性样本对,将顺序颠倒后的序列作为阴性样本对;阳性样本对和阳性样本对均输入至上下文相关性预测模型,用于检测两连续指令的相关性;bert语言嵌入模型完成指令嵌入如下:e
arm
=f(x
arm
);e
mips
=f(x
mips
)其中,e
arm
是高级精简指令集计算机arm架构输入汇编指令x
arm
的嵌入,e
mips
是无内部流水线互锁的微处理器mips架构输入汇编指令x
mips
的嵌入,f表示训练好的bert语言嵌入模型;其中,针对不同架构下的汇编指令的嵌入,采用典型相关性分析方法cca进行投影,以将不同架构的汇编指令映射到同一空间进行指令表示;具体方式是根据指令助记符,构建mips和arm两种架构内语义相同指令的等价映射;通过指令助记符为mips架构和arm架构中的指令制作相互映射的指令词典;通过指令词典,从两种架构指令中选取典型的指令集;σ

表示mips架构中的典型指令集,ω

表示arm架构中的典型指令集;σ表示mips架构的总体指令集,ω表示arm架构的总体指令集;两个典型指令集中的指令一一映射,x和y表示一对等价的指令嵌入,a和b表示投影方向,x和y经过投影后的向量表示为:x

=a
t
x,y

=b
t
y,投影向量x

和y

的相关性表示为:e为期望;最大化相关性ρ(x

,y

),并输出最大化相关性下的两个投影向量a和b,通过这两个投影向量将mips架构和arm架构的所有指令进行投影,总结为:a,b=cca(∑




*
=a
t
σ,ω
*
=b
t
ω其中,a和b分别是两种架构的典型子集经过cca方法得到的投影矩阵,两种架构的总体指令集通过a和b投影后的向量空间σ
*
和ω
*
在同一维度,满足跨架构相似性比较的需求;之后,将bert语言嵌入模型生成的指令嵌入与a或b计算进行投影,得到经过跨架构处
理的指令嵌入:b
emb
=a
t
e
mips
b
emb
=b
t
e
arm
其中,b
emb
表示基本块的指令语义嵌入向量,a和b分别是两种架构的典型子集经过cca方法得到的投影矩阵,e
mips
和e
arm
为由bert语言嵌入模型生成的指令嵌入向量;步骤2.2:指令嵌入结束后进行基本块嵌入,经指令嵌入的属性控制流图中每一条汇编指令均为向量表示;通过lstm模型将基本块中的指令语义向量序列和基本块的统计特征进行汇总,通过一个向量表示具有内在关联的所有指令序列;基本块的特征表示如下:b
fea
=w
b1
b
emb
+w
b2
b
sta
其中,w
b1
和w
b2
分别表示基本块的指令语义嵌入向量权重矩阵和基本块的统计特征权重矩阵;b
emb
和b
sta
分别表示基本块的指令语义嵌入向量和基本块的统计特征;在训练过程中,指令语义嵌入向量权重矩阵和统计特征权重矩阵分别控制指令语义嵌入向量和基本块的统计特征在基本块特征表示中所占的比重;步骤2.3:图嵌入模块通过图的拉普拉斯矩阵进行拓扑图的卷积操作,通过有向图卷积网络保留属性控制流图的方向信息,结合无向图的拼接融合方式获取属性控制流图的图嵌入表示;图的卷积公式a是图的邻接矩阵,i
n
是单位阵,是的度矩阵,h是每一层的特征,输入层特征h为基本块的特征b
fea
,σ是非线性激活函数,w是训练的参数;属性控制流图增加入度矩阵a
sin
和出度矩阵a
sout
用于保留图形的方向信息;所述入度矩阵为存在一个节点k,同时有两个节点i和j指向k节点{i

k

j},使得a
sin
(i,j)=a
sin
(i,j)+1;出度矩阵为存在节点k同时指向i,j节点{i

k

j},使得a
sout
(i,j)=a
sout
(i,j)+1;通过入度矩阵和出度矩阵构造无向图卷积,公式如下:(i,j)+1;通过入度矩阵和出度矩阵构造无向图卷积,公式如下:融合无向图的卷积公式z
f
,融合公式如下:z=concat(z
f
,αz
sin
,βz
sout
)其中,α表示入度卷积的权重;β表示出度卷积的权重;z
f
、z
sin
和z
sout
能够获取一阶和二阶的邻居特征信息,而且z
sin
和z
sout
能够保留有向图的结构信息;通过融合后的卷积公式对有向图属性控制流图进行结构性提取;对于图的结构特征,同时考虑到图嵌入和图的统计特征,最终图的结构特征嵌入表示如下:g=w
f1
z+w
f2
f
sta
其中,w
f1
和w
f2
是图基本块属性特征和图统计特征的矩阵系数,f
sta
是属性控制流图的统计特征;步骤2.4:通过向量的距离公式来判断输入属性控制流图的相似性;当一对输入的属性
控制流图相似性高于设定值,则二者相似,进行动态仿真检测;所述向量的距离公式如下:其中g1、g2为图嵌入模块的输出;步骤3:对符合相似性标准的可疑固件文件使用firmae仿真工具进行动态仿真,根据已知相似漏洞的原理进行漏洞检测。2.一种动静结合的跨架构固件漏洞检测装置,其特征在于,包括属性控制流图提取模块、指令嵌入模块、基本块嵌入模块、图嵌入模块、相似性比较模块和动态仿真检测模块;属性控制流图提取模块通过开源反汇编工具将含有已知漏洞的固件文件和需要检测的固件文件进行反汇编,将两种固件文件中的二进制函数转换为属性控制流图acfg,作为输入数据,用于提取产生指令的语义特征、基本块的统计特征、属性控制流图的统计特征;指令嵌入模块将汇编指令类比为句子中的词语,基本块类比为句子来提取二进制函数指令的语义特征;采用自然语言处理的bert语言嵌入模型将汇编指令视作语句生成指令嵌入,将属性控制流图中的汇编指令用向量表示;基本块嵌入模块在指令嵌入模块的基础上以基本块中所有汇编指令的嵌入及属性控制流图提取模块中基本块的统计特征作为输入;将基本块中的指令序列通过lstm模型汇总为一个向量用于解决基本块中指令序列过长的问题;基本块的统计特征用于基本块内指令分类,包括字符串常量、数字常量、算数指令、逻辑指令、转移指令、传输指令以及调用指令;所述基本块的统计特征还包括基本块的位置信息,即计算该基本块的上方基本块的数量并除以总的基本块数;得到基本块的统计特征后与基本块所有指令的嵌入表示后训练两个权重矩阵来计算基本块的嵌入表示;图嵌入模块的输入是基本块嵌入后的基本块特征向量;属性控制流图设置入度矩阵a
sin
和出度矩阵a
sout
,用于保留图形的方向信息的同时提取图形特征;入度矩阵a
sin
和出度矩阵a
sout
表示图形的方向性,之后采用拼接的融合方式进行图卷积并训练权重矩阵来将属性控制流图的结构特征与属性控制流图的统计特征结合计算图的嵌入表示;相似性比较模块的输入为经过三个嵌入模块后可疑函数acfg与漏洞函数acfg的空间向量表示,通过向量的距离公式来判断输入样本对的相似性,经公式计算后高于阈值的可疑函数需要进行动态检测来确定具体漏洞;动态仿真检测模块采用firmae固件仿真工具,在预先构建的定制内核和库上仿真固件镜像,需要对固件镜像进行两次仿真,分别为预仿真和最终仿真;预仿真记录固件中的有用信息,而最终仿真则利用预仿真提取的有用信息对固件镜像进行漏洞复现。

技术总结
本发明属于网络安全技术领域,公开了一种动静结合的跨架构固件漏洞检测方法及装置。首先通过静态代码检测的方式对固件进行大范围筛查,通过三层嵌入的方式将待检查与已知漏洞函数分别表示为向量形式并输入静态检测模块进行相似度对比,相似度高于阈值的即可认定为可疑固件。之后通过动态仿真固件的方式对固件进行仿真运行来查找相应漏洞。解决了现有技术中静态检测技术对固件漏洞检测适用性较低、测精度不高以及单独利用动态检测耗费时间长的问题。问题。问题。


技术研发人员:赵靖 佟岩峻 陈晓宇
受保护的技术使用者:大连理工大学
技术研发日:2023.04.25
技术公布日:2023/8/28
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐