本发明涉及网络空间安全,特别是一种基于动静结合的物联网同源性漏洞检测方法、系统与设备。
背景技术:
1、在当前蓬勃发展的“物联网时代”,数以亿万计的物联网智能设备已经广泛应用在生产生活各个方面,给人们的带来极大的便利。然而,随着物联网设备的不断增加和应用场景的扩展,其底层固件也日益频繁地受到安全漏洞的困扰,物联网设备漏洞披露数量和相关攻击事件逐年增长,特别是一些设备厂商频繁使用现有的第三方组件或开源库,导致漏洞重复出现各个型号和版本的设备中,给人们的隐私和安全带来了更加严重的威胁。因此,因此,如何设计一种快速、可扩展的漏洞检测的方法,及时发现物联网设备中存在的同源性漏洞,对保护物联网生态安全有着重要的意义。
2、固件是物联网设备的重要组成部分,介于软件与硬件之间,起到了控制底层软件、文件系统的重大作用,而针对物联网设备固件的攻击往往能够造成整个物联网系统的瘫痪。同源性漏洞检测是指对物联网固件中的文件系统进行同源性分析,旨在检测二进制程序中某个代码片段与项目中其他代码片段或开源代码是否存在的相同或相似的代码成分,按照分析的精度划分,精度由低到高可将同源检测分为文件级、函数级和片段级。由于固件文件系统的特殊性以及固件二进制文件复杂的编译方式,在开发或使用固件时,许多厂商会复用先前已有的代码,这也导致相同漏洞普遍存在于不同型号、不同版本甚至不同厂商的物联网固件中。对于这些同源漏洞,使用常规的漏洞分析方法费时费力,会在时间、经济等各方面造成不必要的损失。而同源性分析技术可以高效、简单的搜索出海量固件设备中的同源漏洞,有效提高效率,降低损失。
3、现有漏洞检测方法可以分为两大类:静态分析和动态分析。前者包括人工审计、污点分析、相似性检测等,能够在不执行程序的情况下发现代码中的潜在问题,例如未定义的行为、内存泄漏、数据流问题等,但由于静态分析无法考虑程序的实际执行路径和运行时环境,经常会出现大量误报且安全测试人员验证费时费力。动态分析是一种在运行时对程序行为进行监视和分析的方法,主要包括动态污点分析、模糊测试和动态符号执行等,但是动态分析通常只能覆盖程序的部分执行路径,运行时开销和耗时较大,依赖于程序的实际运行状态和环境,无法完全检测到所有的漏洞和安全问题,难以应用在大规模检测场景中。
技术实现思路
1、针对现有技术存在的问题,本发明的目的在于提供一种基于动静结合的物联网同源性漏洞检测方法、系统与设备,利用cve已知漏洞在静态代码相似性检测方法上大规模高效地检测目标设备的相似性漏洞,并为动态符号执行提供指导信息,减少路径探索数量,同时动态符号执行进一步验证静态分析结果,减少静态分析的误报率。
2、实现本发明目的的技术解决方案为:第一发面,本发明提供一种基于动静结合的物联网同源性漏洞检测方法,包括如下步骤:
3、基于收集的cve漏洞报告构建漏洞特征库,包括cve id、物联网设备厂商、设备型号、设备版本、漏洞所在二进制程序、漏洞函数、漏洞类型、影响范围和漏洞特征;
4、对待分析的目标物联网设备进行固件提取,通过固件解压缩技术恢复固件中的内核,文件系统和用户程序,获得目标设备中的关键程序和第三方库作为待分析的文件,关键程序包括设备中网络服务程序、身份认证程序以及配置管理程序的二进制文件;
5、通过静态分析工具遍历待分析二进制程序文件中的函数,然后根据自然语言处理和图神经网络技术将该函数的控制流图转化为嵌入式向量作为函数特征,通过二进制代码相似性检测模型依次比较与cve漏洞函数特征的相似度,如果相似度超过阈值,则将该函数加入可疑漏洞函数列表,否则筛掉该函数,不加入可疑漏洞函数列表;
6、基于cve漏洞函数类型和敏感库函数调用分析,对可疑漏洞函数进行评分和筛选,然后基于可疑漏洞函数对目标二进制程序进行动态符号执行,指导其在跟踪程序执行过程中的路径探索,对二进制程序漏洞进行定向检测和验证;
7、对找到的路径进行约束求解,确定是否存在到达目标函数的路径,如果存在路径,则生成测试报告。
8、第二方面,本发明提供一种基于动静结合的物联网同源性漏洞检测系统,包括:
9、漏洞特征构建模块,用于基于收集的cve漏洞报告构建漏洞特征库,包括cve id、物联网设备厂商、设备型号、设备版本、漏洞所在二进制程序、漏洞函数、漏洞类型、影响范围和漏洞特征;
10、物联网固件提取模块,用于对待分析的目标物联网设备进行固件提取,通过固件解压缩技术恢复固件中的内核,文件系统和用户程序,获得目标设备中的关键程序和第三方库作为待分析的文件,关键程序指的是设备中网络服务程序、身份认证程序以及配置管理程序的二进制文件;
11、二进制代码相似性检测模块,用于通过静态分析工具遍历待分析二进制程序文件中的函数,然后根据自然语言处理和图神经网络技术将该函数的控制流图转化为嵌入式向量作为函数特征,通过二进制代码相似性检测模型依次比较与cve漏洞函数特征的相似度,如果相似度超过阈值,则将该函数加入可疑漏洞函数列表,否则筛掉该函数,不加入可疑漏洞函数列表;
12、可疑漏洞函数评分模块,用于基于cve漏洞函数类型和敏感库函数调用分析,对可疑漏洞函数进行评分和筛选,减少动态符号执行探索的范围;
13、动态符号执行模块,用于基于可疑漏洞函数对目标二进制程序进行动态符号执行,指导其在跟踪程序执行过程中的路径探索和约束求解,确定是否存在到达目标函数的路径。
14、第三方面,本发明提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述计算机程序被加载至处理器时实现上述基于动静结合的物联网同源性漏洞检测方法的步骤。
15、第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述基于动静结合的物联网同源性漏洞检测方法的步骤。
16、本发明与现有技术相比,其显著优点为:
17、(1)高效:本发明基于已有的cve漏洞报告构建适用于同源性分析的漏洞特征库,利用自然语言处理和图神经网络将漏洞特征表示为嵌入向量,提高相似度计算效率。
18、(2)可扩展:本发明在通过中间语言表示在二进制代码语法上实现了统一,并使用各种物联网架构和编译选项的二进制程序作为数据集进行模型训练,减少了模型在x86、x64、arm32、arm64、mips32、mips64等多种物联网架构机器指令的差异,提高了物联网漏洞跨架构检测的能力。
19、(3)低漏报:本发明基于二进制代码相似性检测对目标设备漏洞函数进行初步筛选,可疑通过相似度阈值调整提高召回率,输出可疑漏洞函数列表,减少漏洞函数的漏报情况。
20、(4)低误报:本发明基于cve漏洞类型的特点和敏感库函数调用对可疑漏洞函数进一步评分和筛选,通过动态符号执行技术探索可疑漏洞函数的路径,最后约束求解验证是否存在漏洞路径,减少漏洞函数的误报情况。
1.一种基于动静结合的物联网同源性漏洞检测方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的基于动静结合的物联网同源性漏洞检测方法,其特征在于,所述漏洞特征库的字段需要适用于同源性分析场景,漏洞特征表示需要基于自然语言处理和图神经网络模型学习cve漏洞函数的语义和结构特征生成嵌入向量。
3.根据权利要求1所述的基于动静结合的物联网同源性漏洞检测方法,其特征在于,待分析设备的固件需要通过静态分析工具进行解压并提取设备中关键程序和第三方库文件。
4.根据权利要求1所述的基于动静结合的物联网同源性漏洞检测方法,其特征在于,对cve漏洞函数和待检测设备固件进行特征提取时,首先需要将二进制代码转化为中间语言表示,实现跨架构跨编译器的统一语法表示,然后通过自然语言处理和图神经网络模型学习中间语言表示控制流图的语义信息和结构信息,最终将该二进制代码表示为嵌入向量。
5.根据权利要求1所述的基于动静结合的物联网同源性漏洞检测方法,其特征在于,需要构建二进制代码相似性检测模型,在模型训练时需要收集物联网固件中的开源项目的源代码,通过使用不同的编译器以及不同的优化选项将它们编译成不同体系结构的程序二进制文件,如果两个二进制函数是从相同的源代码编译的,则认为它们是相似的,设为<g1,g2,1>,其它任何情况则认为它们不是相似的,设为<g1,g2,-1>,g1为第一个函数控制流图的特征向量,g2为第二个函数控制流图的特征向量,1和-1代表函数相似度;然后通过对编译后的数据文件进行采样形成数据集用于二进制代码相似性暹罗网络架构的训练,验证和测试,保证模型能够在物联网漏洞检测中适应x86、x64、arm32、arm64、mips32、mips64物联网架构;嵌入向量相似性度量采用余弦距离进行计算,该公式为向量g1和g2在n维的空间里的相似度计算公式,其中n表示向量的维度,xi和yi分别表示向量x和y中第i个维度的元素,即该式的分子为向量g1和g2在各个维度的点积之和,分母为g1和g2的l2范数的乘积;模型训练损失函数为其中k表示组成训练集的函数对的数量,π(g1,g2)表示真实标签,sim(g1,g2)表示两个函数计算相似度结果;在训练过程中,函数嵌入模型的参数采用反向传播和随机梯度下降的方法来更新,训练的目标是使损失函数的值最小化。
6.根据权利要求1所述的基于动静结合的物联网同源性漏洞检测方法,其特征在于,需要对二进制代码相似性模型检测输出的可疑漏洞函数列表进行分析,结合物联网漏洞固件漏洞特点将导致漏洞的敏感库函数调用分为数据引入和内存操作两种类型,并将可疑漏洞函数评分分为三级:若可疑函数同时调用了数据引入和内存操作两种类型的敏感库函数,则将该可疑函数的危险程度设为3级;若只调用了数据引入函数或者内存操作函数,则将该函数等级设为2级;若没有调用任何敏感函数,则将该函数等级设为1级,该种类型的函数不具备数据引入和漏洞触发条件。
7.根据权利要求1所述的基于动静结合的物联网同源性漏洞检测方法,其特征在于,在基于可疑漏洞函数进行动态符号执行时,将上述相似性检测和可疑漏洞函数评分两次静态分析的结果作为符号执行的指导信息,对目标二进制程序进行路径和数据流搜索,裁剪与漏洞无关的路径。
8.一种基于动静结合的物联网同源性漏洞检测系统,其特征在于,该系统用于实现权利要求1-7任一所述的方法,系统包括:
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述计算机程序被加载至处理器时实现根据权利要求1-7任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7中任一所述的方法的步骤。
