软件成分检测方法、电子设备及计算机可读存储介质技术

技术编号:36890793 阅读:13 留言:0更新日期:2023-03-15 21:55
本申请公开一种软件成分检测方法、电子设备及计算机可读存储介质,方法包括:建立特征库的步骤:将源码库中的各组件的源码分别编译成二进制文件;对各二进制文件分别进行反编译形成汇编程序;分别从各汇编程序中提取所包含的常量字符串;将提取到的所有常量字符串及其与各组件的第一对应关系存储在特征库中。匹配步骤:将待检软件的待检二进制文件进行反编译形成待检汇编程序并从待检汇编程序中提取所包含的待匹配常量字符串;将若干待匹配常量字符串依次与特征库中的常量字符串进行匹配以根据匹配结果和特征库中的第一对应关系对特征库中的组件进行第一步筛选。本申请提供了一种全新的基于二进制文件检测的软件成分检测方法。方法。方法。

【技术实现步骤摘要】
软件成分检测方法、电子设备及计算机可读存储介质


[0001]本申请涉及软件成分检测
,具体涉及一种软件成分检测方法、电子设备及计算机可读存储介质。

技术介绍

[0002]现代软件开发,开源组件的使用越来越多,据Gartner调查统计,绝大多数的软件开发中都或多或少地使用了各类开源的软件组件,各种便利的开源组件给开发人员带来了极大的便利。然而任何的便利,都会带来风险的一面,开源组件的广泛普及和使用带来的风险不容忽视:如开源组件的运维和管理风险、漏洞和数据安全风险、合规和知识产权风险等。针对此情况,当前市场上已经有很多软件成分分析工具(SCA工具)应运而生,通过软件成分分析技术可以分析项目应用中所含的第三方开源成分及其漏洞和许可的风险情况。目前软件成分分析技术通常是利用源码检测,在源码检测上可通过包管理器,代码函数特征等方式来进行检测,而二进制检测相对源码检测具有很大的难度,目前尚未出现成熟的二进制检测技术方案。

技术实现思路

[0003]本申请的目的在于提供一种软件成分检测方法、电子设备及计算机可读存储介质,能够基于二进制文件进行检测。
[0004]为实现上述目的,本申请提供了一种提供了一种基于二进制文件检测的软件成分检测方法,包括:
[0005]建立特征库的步骤:
[0006]将源码库中的各组件的源码分别编译成二进制文件;
[0007]对各所述二进制文件分别进行反编译形成汇编程序;
[0008]分别从各所述汇编程序中提取所包含的常量字符串;
[0009]将提取到的所有常量字符串及其与各组件的第一对应关系存储在所述特征库中;
[0010]匹配步骤:
[0011]将待检软件的待检二进制文件进行反编译形成待检汇编程序并从所述待检汇编程序中提取所包含的待匹配常量字符串;
[0012]将若干所述待匹配常量字符串依次与所述特征库中的常量字符串进行匹配以根据匹配结果和所述特征库中的第一对应关系对所述特征库中的组件进行第一步筛选。
[0013]可选地,如果存在唯一的组件使所述待检软件的所有待匹配常量字符串均匹配到其常量字符串,则结束筛选并将该组件作为筛选成功组件来返回筛选结果;
[0014]如果存在至少两个组件使所述待检软件的所有待匹配常量字符串均匹配到其常量字符串,则该至少两个组件进入下一步筛选;
[0015]如果不存在使所述待检软件的所有待匹配常量字符串均匹配到其常量字符串的组件,且存在至少两个组件使所述待检软件的部分待匹配常量字符串匹配到其常量字符
串,则该至少两个组件进入下一步筛选;
[0016]如果仅存在一个组件使所述待检软件的至少预设字符串数量的待匹配常量字符串匹配到其常量字符串,则结束筛选并将该组件作为筛选成功组件来返回筛选结果。
[0017]可选地,所述建立特征库的步骤还包括:
[0018]基于各所述汇编程序建立每一所述组件的函数与所述常量字符串的第二对应关系并存储在所述特征库中;
[0019]所述匹配步骤还包括:
[0020]基于所述待检汇编程序建立所述待检软件的函数与所述待匹配常量字符串的第三对应关系;
[0021]将所述待检软件的所述第三对应关系分别与所述第一步筛选过来的组件的所述第二对应关系进行匹配;
[0022]如果存在唯一的组件使所述待检软件的所有第三对应关系均匹配到其第二对应关系,则结束筛选并将该组件作为筛选成功组件来返回筛选结果;
[0023]如果存在至少两个组件使所述待检软件的所有第三对应关系均匹配到其第二对应关系,则该至少两个组件进入下一步筛选;
[0024]如果不存在使所述待检软件的所有第三对应关系均匹配到其第二对应关系的组件,且存在至少两个组件使所述待检软件的部分第三对应关系匹配到其第二对应关系,则该至少两个组件进入下一步筛选;
[0025]如果仅存在一个组件使所述待检软件的至少预设关系数量的第三对应关系匹配到其第二对应关系,则结束筛选并将该组件作为筛选成功组件来返回筛选结果。
[0026]可选地,如果不存在组件使所述待检软件的至少预设关系数量的第三对应关系匹配到其第二对应关系,结束筛选并返回筛选结果。
[0027]可选地,所述建立特征库的步骤还包括:
[0028]基于所述汇编程序提取各所述组件的代码块中的函数内容;
[0029]对提取到的各所述组件的函数内容分别进行哈希得到第一函数特征并存储在所述特征库中;
[0030]所述匹配步骤还包括:
[0031]基于所述待检汇编程序提取所述待检软件的代码块中的函数内容;
[0032]对提取到的所述待检软件的函数内容进行哈希得到第二函数特征;
[0033]将所述待检软件的所述第二函数特征分别与上一步筛选过来的组件的所述第一函数特征进行匹配;
[0034]如果存在组件使所述待检软件的所有第二函数特征均匹配到其第一函数特征,则结束筛选并将该组件作为筛选成功组件来返回筛选结果;
[0035]如果不存在组件使所述待检软件的所有第二函数特征均匹配到其第一函数特征,且存在至少两个组件使所述待检软件的部分第二函数特征匹配到其第一函数特征,则该至少两个组件进入下一步筛选;
[0036]如果仅存在一个组件使所述待检软件的至少预设特征数量的第二函数特征匹配到其第一函数特征,则结束筛选并将该组件作为筛选成功组件来返回筛选结果。
[0037]可选地,如果不存在组件使所述待检软件的至少预设特征数量的第二函数特征匹
配到其第一函数特征,结束筛选并返回筛选结果。
[0038]可选地,所述建立特征库的步骤还包括:
[0039]基于所述汇编程序提取各所述组件的第一控制流特征并存储在所述特征库;
[0040]所述匹配步骤还包括:
[0041]基于所述待检汇编程序提取所述待检软件的第二控制流特征;
[0042]将所述待检软件的所述第二控制流特征与利用函数特征匹配筛选过来的组件的所述第一控制流特征进行匹配;
[0043]根据各步匹配结果对完成控制流特征匹配的各组件进行相似度计算。
[0044]可选地,所述根据各步匹配结果对完成控制流特征匹配的各组件进行相似度计算包括:
[0045]设置常量字符串匹配的权重系数为A、对应关系匹配的权重系数为B、函数特征匹配的权重系数为C、控制流特征匹配的权重系数为D,以及设置阈值为E;
[0046]对完成控制流特征匹配的各组件分别进行如下计算:
[0047]匹配上所述待匹配常量字符串的所述常量字符串的数量*A+匹配上所述第三对应关系的所述第二对应关系的数量*B+匹配上所述第二函数特征的所述第一函数特征的数量*C+匹配上所述第二控制流特征的所述第一控制流特征的数量*D;
[0048]将上述计算结果与阈值E进行比较;
[0049]如果上述计算结果大于或大于等于阈值E,则该组件为有效组件。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种软件成分检测方法,其特征在于,包括:建立特征库的步骤:将源码库中的各组件的源码分别编译成二进制文件;对各所述二进制文件分别进行反编译形成汇编程序;分别从各所述汇编程序中提取所包含的常量字符串;将提取到的所有常量字符串及其与各组件的第一对应关系存储在所述特征库中;匹配步骤:将待检软件的待检二进制文件进行反编译形成待检汇编程序并从所述待检汇编程序中提取所包含的待匹配常量字符串;将若干所述待匹配常量字符串依次与所述特征库中的常量字符串进行匹配以根据匹配结果和所述特征库中的第一对应关系对所述特征库中的组件进行第一步筛选。2.如权利要求1所述的软件成分检测方法,其特征在于,如果存在唯一的组件使所述待检软件的所有待匹配常量字符串均匹配到其常量字符串,则结束筛选并将该组件作为筛选成功组件来返回筛选结果;如果存在至少两个组件使所述待检软件的所有待匹配常量字符串均匹配到其常量字符串,则该至少两个组件进入下一步筛选;如果不存在使所述待检软件的所有待匹配常量字符串均匹配到其常量字符串的组件,且存在至少两个组件使所述待检软件的部分待匹配常量字符串匹配到其常量字符串,则该至少两个组件进入下一步筛选;如果仅存在一个组件使所述待检软件的至少预设字符串数量的待匹配常量字符串匹配到其常量字符串,则结束筛选并将该组件作为筛选成功组件来返回筛选结果。3.如权利要求1或2所述的软件成分检测方法,其特征在于,所述建立特征库的步骤还包括:基于各所述汇编程序建立每一所述组件的函数与所述常量字符串的第二对应关系并存储在所述特征库中;所述匹配步骤还包括:基于所述待检汇编程序建立所述待检软件的函数与所述待匹配常量字符串的第三对应关系;将所述待检软件的所述第三对应关系分别与所述第一步筛选过来的组件的所述第二对应关系进行匹配;如果存在唯一的组件使所述待检软件的所有第三对应关系均匹配到其第二对应关系,则结束筛选并将该组件作为筛选成功组件来返回筛选结果;如果存在至少两个组件使所述待检软件的所有第三对应关系均匹配到其第二对应关系,则该至少两个组件进入下一步筛选;如果不存在使所述待检软件的所有第三对应关系均匹配到其第二对应关系的组件,且存在至少两个组件使所述待检软件的部分第三对应关系匹配到其第二对应关系,则该至少两个组件进入下一步筛选;如果仅存在一个组件使所述待检软件的至少预设关系数量的第三对应关系匹配到其第二对应关系,则结束筛选并将该组件作为筛选成功组件来返回筛选结果。
4.如权利要求3所述的软件成分检测方法,其特征在于,如果不存在组件使所述待检软件的至少预设关系数量的第三对应关系匹配到其第二对应关系,结束筛选并返回筛选结果。5.如权利要求1至4任一项所述的软件成分检测方法,其特征在于,所述...

【专利技术属性】
技术研发人员:汪杰万振华王颉李华董燕
申请(专利权)人:深圳开源互联网安全技术有限公司
类型:发明
国别省市:

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

1