一种二进制程序供应链安全检测方法及装置与流程

文档序号:31477761发布日期:2022-09-10 00:54阅读:77来源:国知局
一种二进制程序供应链安全检测方法及装置与流程

1.本发明涉及网络安全领域,更为具体的,涉及一种二进制程序供应链安全检测方法及装置。


背景技术:

2.随着各种开源软件在不同领域的广泛应用,软件代码的体积与复杂度都迅猛增加。根据著名咨询机构forrester调研结果,近些年开发的软件约80-90%的代码来自于开源软件或者基于开源软件修改而来。复杂的软件供应链会引入一系列的安全问题,某个开源组件或某行代码内的一个缺陷就能引起整个软件系统的崩溃或数据泄露。当下针对软件供应链的攻击事件频发,例如近年来爆发的开源组件openssl心脏滴血漏洞、log4j2远程代码执行漏洞。软件供应链安全直接关系到信息系统基础设施的安全,它已成为网络安全领域的热点问题。特别是针对闭源软件(即只提供二进程程序,不提供源代码的软件)供应链安全,更是成为了工业界和学术界关注的焦点。
3.目前在二进制程序供应链检测方面核心问题是如何高效检出二进制程序包含的漏洞,现有的方法是通过软件成分分析从文件层面,以及文件与文件之间的关联关系以及彼此组合依赖关系,分析出二进制程序组件依赖关系,提取对应的组件信息与漏洞库中的组件进行比对,实现对已知漏洞组件的检测,该方法具有适应范围广、检测效率高的优点,然而由于该方法是基于软件组件粒度,对于那些引用了部分开源代码或者基于某个组件修改后的二进制程序就无能为力,无法实现二进制函数级别细粒度的缺陷检测。


技术实现要素:

4.本发明的目的在于克服现有技术的不足,提供一种二进制程序供应链安全检测方法及装置,建立了漏洞的二进制函数向量特征库,实现了高效的二进制程序细粒度的缺陷检测,显著提升了缺陷检测的精度等。
5.本发明的目的是通过以下方案实现的:一种二进制程序供应链安全检测方法,包括以下步骤:s1,信息采集与预处理:采集漏洞源代码,构建带有漏洞标注的二进制程序集合;s2,从步骤s1中获取的二进制程序集合中提取二进制函数,将二进制函数表征为向量形式,通过构建二进制细粒度特征提取模型,得到漏洞的二进制函数缺陷向量库;s3,利用所述二进制细粒度特征提取模型和所述漏洞的二进制函数缺陷向量库,进行二进制程序缺陷检索识别分析。
6.进一步地,在步骤s2中,包括如下子步骤:s21,构建适合二进制函数相似性检测的数据集:从二进制程序提取函数粒度的汇编代码,按照源代码函数所在的文件路径、函数名称两个准则,将同一份源代码函数对应的不同编译条件下二进制函数的配对作为训练集的正样本,负样本则是从剩下的未配对的样本随机抽取配对,从而构建二进制相似函数的正反样例数据集;
s22,构建含有特征融合网络和相似性判别网络的相似性判别深度神经网络,并将相似性判别网络的倒数第二层作为特征表示层向量,得到二进制细粒度特征提取模型;s23,在特征融合网络利用字符串、立即数和函数片段三类特征,使用嵌入方式将其表示为向量形式来训练所述二进制细粒度特征提取模型;s24,将步骤s1中带有漏洞标注的二进制程序输入到训练好的二进制细粒度特征提取模型获得二进制函数缺陷特征向量,并将获得的二进制函数缺陷特征向量存储到数据库,再基于漏洞编号建立二进制函数向量的索引,得到所述漏洞的二进制函数缺陷向量库。
7.进一步地,在步骤s3中,包括子步骤:利用存储在二进制函数缺陷向量库中的二进制函数缺陷向量,并通过余弦距离检索待测的特征向量,判断待测特征向量集是否超过设定的阈值比对结果,然后输出分析结果、漏洞编号以及该漏洞描述与防护建议。
8.进一步地,在步骤s1中,所述采集漏洞源代码包括通过采集服务定期从互联网漏洞信息披露网站采集漏洞信息。
9.进一步地,在步骤s22中,所述特征融合网络包括输入层、第一隐含层和第二隐含层,输入层与第一隐含层连接,第一隐含层与第二隐含层连接。
10.进一步地,在步骤s22中,所述相似性判别网络包括融合层、特征表示层和输出层,融合层与特征表示层连接,特征表示层与输出层连接。
11.进一步地,在步骤s23中,在训练过程中采用交叉熵损失函数。
12.进一步地,在步骤s23中,所述字符串包括常量字符。
13.进一步地,在步骤s23中,所述嵌入方式包括word2vec嵌入方法。
14.一种二进制程序供应链安全检测装置,包括程序指令运行单元和程序指令存储单元,当程序指令由程序指令运行单元加载运行时执行如上任一所述的二进制程序供应链安全检测方法。
15.本发明的有益效果包括:本发明挖掘了互联网广泛存在的漏洞信息,建立了漏洞的二进制函数向量特征库,实现了高效的二进制程序细粒度的缺陷检测,提出了基于融合特征的深度神经二进制函数表征模型,大大提升了缺陷检测的精度。
16.本发明充分利用了互联网漏洞信息和现有项目代码,实现了漏洞的源代码函数、二进制函数的自动化提取,建立了漏洞的二进制函数级的向量特征库,为大规模的二进制程序安全性分析提供核心信息支撑。
17.本发明利用了基于融合特征的深度神经二进制函数表征模型,融合了二进制函数的多维度特征,生成的特征向量更具有代表性,提升了缺陷检测的效果。
附图说明
18.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
19.图1为本发明实施例的一种部署方案示意图;图2为本发明实施例中信息采集与预处理的流程示意图;
图3为本发明实施例中训练特征提取模型的流程图;图4为本发明实施例中二进制细粒度特征提取模型网络的结构图;图5为本发明实施例中二进制程序缺陷识别的流程示意图。
具体实施方式
20.本说明书中所有实施例公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合和/或扩展、替换。
21.近年来人工智能技术的飞速发展,基于机器学习的软件缺陷检测展现出了广阔的应用前景。因此,在解决背景中问题的过程中,本发明的发明人通过创造性的思考,提出一种二进制程序供应链安全检测方法及装置,能够从海量的漏洞信息中自动抽取出漏洞代码函数片断,进而构建出不同架构二进制程序函数级别的缺陷特征库,通过融合二进制程序的多维度特征来提升缺陷检测的精度。该方法具有较强的鲁棒性和较高的检测效率,可以用于二进制程序函数级别细粒度缺陷检测,对实现二进制程序供应链安全的自动化检测具有非常重要的意义。
22.在具体实施例中,针对二进制程序供应链安全高效自动检测的技术问题提出的解决方案,至少解决如下技术问题:1)如何从互联网自动化的获取包含漏洞的源代码,二进制程序代码,解决人工提取效率低、人力成本高的问题。
23.2)如何实现二进制程序函数的特征提取,构建多维度的漏洞二进制函数的特征库,解决二进制程序细粒度的缺陷检测。
24.3)如何组织和索引二进制函数的特征向量,实现高效的向量距离检索,提高缺陷检测效率,解决无法规模化分析的问题。
25.在具体实施方式中,本发明实施例的技术构思如下:二进制程序供应链安全检测的目标是在对使用者上传的二进制程序文件,能够快速提取该程序的多维度特征,从中筛选出是否具备漏洞的二进制特征,并能够给出阻断或修复该缺陷的建议。本发明实施例的技术方案用于二进制程序函数级别细粒度缺陷检测,其中在方法实施例中,主要分为三个大步骤:一、信息采集与预处理,采集漏洞源代码构建带有漏洞标注的二进制程序集合;二、二进制程序细粒度特征提取,将二进制函数表征为向量形式构建漏洞的二进制函数缺陷向量库;三、二进制程序缺陷识别,实现规模化的二进制缺陷检索分析。
26.其中在装置实施例中,主要包括防火墙、二进制安全检测服务器、二进制函数提取器、二进制函数特征生成器、缺陷特征向量数据库、漏洞信息采集和漏洞源代码获取器,它们通过组网接入到网络构成完整的基于二进制程序供应链安全检测系统。需要说明的是,本发明实施例实现的工作原理与具体的部署方式无关,因此这里仅采用了图1给出的一种部署方案示意说明,以便于说明本发明实施例的工作原理。
27.在如图1所示的部署方案中,终端用户通过请求二进制安全检测服务接口上传待检测的二进制,通过防火墙规则过滤掉无效或者未授权的访问;然后调用二进制安全检测服务返回检测结果,通过二进制函数特征生成器来生成二进制函数粒度的特征向量,与缺陷特征向量数据库存储的特征向量比对,返回超过距离阈值的向量所对应的缺陷类别。
28.如图2所示,在信息采集与预处理流程中,包括如下子步骤:
信息采集是从互联网漏洞信息披露网站采集漏洞信息,并对采集到的信息进行预处理和关键字段的提取。通过采集服务定期采集互联网各个漏洞发布平台的漏洞信息,从中提取出漏洞的编号、类别、外链等信息,并根据上述信息进一步获取漏洞详细信息包括:项目地址、漏洞修补前后的代码提交id编号(commit id)。具体步骤如下:1)从互联网漏洞发布平台,例如:cvedetails等国内外所有的漏洞库,采集已经披露的漏洞信息,提取漏洞编号、漏洞描述、漏洞类别、通用平台枚举、参考外链等结构化信息;2)从参考外链信息正则匹配github、sourceforge、code.google等常用的代码发布平台,提取该漏洞项目的下载地址和漏洞修补前后代码提交id编号;3)使用现有工具git下载漏洞所属的项目,例如:git clone 项目地址,然后使用git工具比较漏洞修补前后代码,得到了带有漏洞的函数片段。通过git diff 修补前id 修补后id。
29.4)建立源代码函数片段与二进制片段的映射关系,使用修改过的llvm编译器作为源代码关联到二进制程序标注器,在llvm编译的ir(中间语言)阶段插入漏洞代码函数的标签信息。
30.5)在多个交叉编译环境、不同的编译优化策略下编译漏洞项目,例如:arm、mips、x86交叉编译环境,o1、o2、o3等编译优化策略。输出多个架构、多个优化策略生成的带有漏洞标注的二进制程序。
31.如图3所示,在二进制程序细粒度特征提取流程中,包括如下子步骤:二进制程序细粒度特征提取是实现二进制供应链安全检测的关键,从信息采集与预处理步骤中获取的二进制程序提取二进制函数,构建适合二进制函数相似性检测的数据集,然后训练一个相似性判别模型,将模型的倒数第二层作为特征表示层向量,最后是将带有漏洞标注二进制函数输入到训练好的模型获得特征向量,并将该特征向量存储到特征库。
32.首先是数据集的构建方法,利用现有反汇编软件radare2从二进制程序提取函数粒度的汇编代码,按照源代码函数所在的文件路径、函数名称两个准则,将同一份源代码函数对应的不同编译条件下二进制函数的配对作为训练集的正样本,负样本是从剩下的未配对的样本随机抽取配对,从而构建二进制相似函数的正反样例数据集。
33.然后是二进制细粒度特征提取模型的模型训练流程,如图4所示,二进制细粒度特征提取模型网络结构使用的深度学习模型包含分为了两部分组成:特征融合网络和相似性判别网络。在特征融合网络利用了字符串(特指常量字符)、立即数、函数片段三类特征,具体实施例中使用word2vec嵌入方法将其表示为向量形式,接下来定义表示3种特征融合网络,是特征融合网络的每一层,是特征融合网络的输入向量:字符串特征向量,立即数特征向量,函数片段特征向量;然后用代表输入到层的向量,是超参数默认设置为0.5,是层的输出,表示层的权重,是层的偏移量,神经网络的激活函数采用的是变种的线性整流函数(leaky relu),可以解决当输入接近零或为负时,函数的梯度变为零的问题。那么特征融合网络向前传递公式为:
接下来定义是相似性判别网络的每一层,代表输入到层的向量,是层的输出,表示层的权重,是层的偏移量,神经网络的激活函数同样采用的是变种的线性整流函数,是相似性判别网络的输出函数,由于是二分类问题,采用sigmoid函数作为输出。那么相似性判别网络向前传递公式为:融合特征的深度神经网络倒数第二层是二进制函数特征表示层,为了后期向量检索通常可以设置为256维或者512维。训练过程中采用的是交叉熵损失函数:最后,将信息采集与预处理步骤中带有漏洞标注二进制函数输入到训练好的模型获得特征向量,并将该特征向量存入到向量检索数据库,并基于漏洞编号建立二进制函数向量的索引。本实施例选用的是现有向量检索数据库milvus ,该向量数据库适用于向量查询与检索设计,能够为万亿级向量数据建立索引,向量型数据库具有距离检索速度快、数据存储冗余低等优点,适合大规模的二进制程序供应链安全检测。
34.在二进制程序缺陷识别流程中,如图5所示,二进制程序缺陷识别是用户上传的待检测软件,识别其中的漏洞二进制函数片段,给出供应链安全的检测结果与缓解建议。图5给出了检测方法的流程示意图,具体步骤如下:1)用户通过二进制安全检测服务接口请求上传检测的软件,通过反汇编工具提取函数级的反汇编片段;2)将反汇编片段输入到特征提取模型,得到一组二进制程序的函数特征向量,然后将表征二进制程序的特征向量存储到向量型数据库,作为待测特征向量集;
3)使用存储在向量型数据库中的二进制函数缺陷向量,通过余弦距离检索待测的特征向量,输出距离最接近的向量,以及对应的余弦距离;4)最后,根据余弦距离是否超过设定的阈值比对结果,输出分析结果、漏洞编号以及该漏洞描述与防护建议。
35.本发明实施例挖掘了互联网广泛存在的漏洞信息,建立了漏洞的二进制函数向量特征库,实现了高效的二进制程序细粒度的缺陷检测,基于融合特征的深度神经二进制函数表征模型,大大提升了缺陷检测的精度。相比现有方法,主要具备以下有益效果和优点:1)充分利用了互联网漏洞信息和现有项目代码,实现了漏洞的源代码函数、二进制函数的自动化提取,建立了漏洞的二进制函数级的向量特征库,为大规模的二进制程序安全性分析提供核心信息支撑。
36.2)采用基于融合特征的深度神经二进制函数表征模型,融合了二进制函数的多维度特征,生成的特征向量更具有代表性,提升了缺陷检测的效果。
37.实施例1一种二进制程序供应链安全检测方法,包括以下步骤:s1,信息采集与预处理:采集漏洞源代码,构建带有漏洞标注的二进制程序集合;s2,从步骤s1中获取的二进制程序集合中提取二进制函数,将二进制函数表征为向量形式,通过构建二进制细粒度特征提取模型,得到漏洞的二进制函数缺陷向量库;s3,利用所述二进制细粒度特征提取模型和所述漏洞的二进制函数缺陷向量库,进行二进制程序缺陷检索识别分析。
38.实施例2在实施例1的基础上,在步骤s2中,包括如下子步骤:s21,构建适合二进制函数相似性检测的数据集:从二进制程序提取函数粒度的汇编代码,按照源代码函数所在的文件路径、函数名称两个准则,将同一份源代码函数对应的不同编译条件下二进制函数的配对作为训练集的正样本,负样本则是从剩下的未配对的样本随机抽取配对,从而构建二进制相似函数的正反样例数据集;s22,构建含有特征融合网络和相似性判别网络的相似性判别深度神经网络,并将相似性判别网络的倒数第二层作为特征表示层向量,得到二进制细粒度特征提取模型;s23,在特征融合网络利用字符串、立即数和函数片段三类特征,使用嵌入方式将其表示为向量形式来训练所述二进制细粒度特征提取模型;s24,将步骤s1中带有漏洞标注的二进制程序输入到训练好的二进制细粒度特征提取模型获得二进制函数缺陷特征向量,并将获得的二进制函数缺陷特征向量存储到数据库,再基于漏洞编号建立二进制函数向量的索引,得到所述漏洞的二进制函数缺陷向量库。
39.实施例3在实施例1的基础上,在步骤s3中,包括子步骤:利用存储在二进制函数缺陷向量库中的二进制函数缺陷向量,并通过余弦距离检索待测的特征向量,判断待测特征向量集是否超过设定的阈值比对结果,然后输出分析结果、漏洞编号以及该漏洞描述与防护建议。
40.实施例4
在实施例1的基础上,在步骤s1中,所述采集漏洞源代码包括通过采集服务定期从互联网漏洞信息披露网站采集漏洞信息。
41.实施例5在实施例2的基础上,在步骤s22中,所述特征融合网络包括输入层、第一隐含层和第二隐含层,输入层与第一隐含层连接,第一隐含层与第二隐含层连接。
42.实施例6在实施例2的基础上,在步骤s22中,所述相似性判别网络包括融合层、特征表示层和输出层,融合层与特征表示层连接,特征表示层与输出层连接。
43.实施例7在实施例2的基础上,在步骤s23中,在训练过程中采用交叉熵损失函数。
44.实施例8在实施例2的基础上,在步骤s23中,所述字符串包括常量字符。
45.实施例9在实施例2的基础上,在步骤s23中,所述嵌入方式包括word2vec嵌入方法。
46.实施例10一种二进制程序供应链安全检测装置,包括程序指令运行单元和程序指令存储单元,当程序指令由程序指令运行单元加载运行时执行如实施例1~实施例9任一所述的二进制程序供应链安全检测方法描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
47.根据本技术的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
48.作为另一方面,本技术还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
49.本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。
50.上述技术方案只是本发明的一种实施方式,对于本领域内的技术人员而言,在本发明公开了应用方法和原理的基础上,很容易做出各种类型的改进或变形,而不仅限于本发明上述具体实施方式所描述的方法,因此前面描述的方式只是优选的,而并不具有限制性的意义。
51.除以上实例以外,本领域技术人员根据上述公开内容获得启示或利用相关领域的知识或技术进行改动获得其他实施例,各个实施例的特征可以互换或替换,本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1