一种漏洞检测方法及相关设备与流程

    专利查询2026-06-12  6


    本技术涉及软件开发及测试,尤其涉及一种漏洞检测方法、软件测试平台、计算设备集群、计算机可读存储介质以及计算机程序产品。


    背景技术:

    1、漏洞,也称作脆弱性(vulnerability),是指计算机系统安全方面的缺陷,使得系统或其应用数据的保密性、完整性、可用性、访问控制等面临威胁。目前,业界广泛使用软件成分分析(software composition analysis,sca)技术来检测软件中的漏洞,尤其是采用二进制sca技术检测软件的二进制程序(例如为可执行代码)中的漏洞。其中,漏洞对软件(如二进制程序或者称作目标程序)产生的真实的安全风险影响程度可以通过漏洞影响有效性表示。

    2、针对待检测的软件,可以通过sca技术先识别该软件引用的其他软件(例如为开源软件)以及引用软件的版本号,然后根据引用的开源软件和版本号查询已知漏洞库,从而关联出软件存在的漏洞清单。在该检测方法中,漏洞清单中的漏洞被认为都会对软件(如二进制程序)产生影响,漏洞的影响程度基于漏洞信息中的通用漏洞评分系统(commonvulnerability scoring system,cvss)3.0打分结果在检测报告(也称作扫描报告)中呈现。

    3、然而,软件从源代码编译生成二进制程序过程中存在很多影响因素或场景,上述漏洞检测方法并未考虑编译过程中的影响因素或场景,导致难以对漏洞影响有效性进行识别和检测。人工对检测报告中的漏洞进行漏洞影响有效性分析的效率比较低下,并且对分析人员的技能要求较高,通常需要具备理解汇编代码的能力,增加了成本,难以满足业务的需求。


    技术实现思路

    1、本技术提供了一种漏洞检测方法,该方法可以实现对漏洞影响程度的自动化识别与检测,提升漏洞检测效率。本技术还提供了该方法对应的软件测试平台、计算设备集群、计算机可读存储介质以及计算机程序产品。

    2、第一方面,本技术提供了一种漏洞检测方法,该方法可以由软件测试平台执行。软件测试平台用于检测漏洞对软件的影响程度。软件测试平台可以是软件系统,该软件系统可以是独立的软件系统,例如是部署在本地或者云上的软件系统,该软件系统也可以集成于其他系统,例如是以插件形式集成在其他软件系统。该软件系统可以部署在计算设备集群,计算设备集群执行软件系统的程序代码,从而执行本技术的漏洞检测方法。软件测试平台也可以是具有漏洞检测功能的硬件系统,该硬件系统运行时,执行本技术的漏洞检测方法。

    3、具体地,软件测试平台获取被测软件的代码文件,该被测软件的代码文件为经过编译的代码文件,根据被测软件的代码文件,提取被测软件的特征集合,其中,被测软件的特征集合包括函数标识、函数特征和函数调用信息,接着软件测试平台将被测软件的特征与软件特征库中软件的特征集合进行匹配,从软件特征库确定被测软件的至少一个引用软件,其中,软件特征库包括开源软件或具有源代码访问权限的闭源软件的特征集合,软件特征库中软件的特征集合包括函数标识、函数特征和函数调用信息,根据被测软件的至少一个引用软件查询漏洞定位信息知识库,获得至少一个引用软件存在的漏洞以及漏洞的定位信息,该定位信息指示至少一个引用软件中与漏洞相关的目标函数,接着软件测试平台根据被测软件的特征集合以及至少一个引用软件的特征集合中目标函数相关的特征,获得至少一个引用软件存在的漏洞对被测软件的影响程度。

    4、该方法通过匹配被测软件的函数级特征与软件特征库中软件的函数级特征,确定被测软件的引用软件,再通过查询漏洞定位信息知识库,获得可以指示引用软件中与漏洞相关的目标函数的定位信息,进而将被测软件的函数级特征以及引用软件中与漏洞相关的目标函数相关的特征进行匹配,通过上述两级特征匹配,确定漏洞对被测软件的影响程度,例如是不对被测软件产生影响的漏洞,如此,实现对漏洞影响程度的自动化识别与检测,提升漏洞检测效率,降低人工分析的工作量。

    5、在一些可能的实现方式中,与漏洞相关的目标函数包括漏洞函数以及漏洞函数的调用链上的函数。在该方法中,将引用软件中与漏洞有直接关系或间接关系的函数均确定为与漏洞相关的目标函数,如此,避免遗漏引用软件中与漏洞有关的函数,提升漏洞检测的准确程度。

    6、在一些可能的实现方式中,软件测试平台可以将目标函数的函数标识与被测软件的特征集合中的函数标识匹配,或者,软件测试平台可以将目标函数的函数特征与被测软件的特征集合中的函数特征匹配,当匹配失败,软件测试平台可以确定漏洞在被测软件中不存在。

    7、在该方法中,函数标识或函数特征匹配失败表示目标函数在被测软件的特征集合中不存在,即引用软件的漏洞未被编译到被测软件中。如此,能够识别出引用软件的漏洞在被测软件中不存在的情况,提升漏洞检测的全面性。

    8、在一些可能的实现方式中,软件测试平台可以将目标函数的函数标识与被测软件的特征集合中的函数标识匹配,或者,软件测试平台可以将目标函数的函数特征与被测软件的特征集合中的函数特征匹配,当匹配成功,确定目标函数是否被被测软件的函数调用,若否,软件测试平台可以确定漏洞在被测软件中存在,该漏洞对被测软件无影响。

    9、在该方法中,函数标识或函数特征匹配失败,且目标函数未被被测软件的函数调用表示该目标函数不会被被测软件执行。如此,能够识别出引用软件的漏洞在被测软件中存在、但不会被执行的情况,提升漏洞检测的全面性。

    10、在一些可能的实现方式中,软件测试平台可以在漏洞检测结果中标识至少一个引用软件存在的漏洞对被测软件的影响程度。

    11、在该方法中,用户查看漏洞检测结果可以直观、清晰地了解引用软件的漏洞是否会对被测软件产生影响以及影响程度,对于漏洞在被测软件中不存在以及漏洞对被测软件无影响的情况,用户无需进行处理(例如是漏洞修复),提升被测软件的漏洞检测的准确性,减少用户进行漏洞修复的工作量。

    12、在一些可能的实现方式中,漏洞定位信息知识库可以通过如下方式构建:首先,获取开源软件或具有源代码访问权限的闭源软件的漏洞修复信息,根据漏洞修复信息,获得开源软件或具有源代码访问权限的闭源软件的源代码中引入漏洞的漏洞函数以及漏洞函数的代码片段,接着对漏洞函数的代码片段进行分析,获得漏洞函数的调用链,根据漏洞函数以及漏洞函数的调用链,构建漏洞定位信息知识库。

    13、在该方法中,通过综合漏洞函数的代码片段和与该漏洞函数相关的其他函数信息,能够构建出全面、准确地漏洞定位信息知识库。

    14、在一些可能的实现方式中,软件特征库可以通过如下方式构建:首先,获取开源软件或具有源代码访问权限的闭源软件的源代码,从开源软件或具有源代码访问权限的闭源软件的源代码中提取函数标识、函数特征和函数调用信息,接着根据开源软件或具有源代码访问权限的闭源软件的函数标识、函数特征和函数调用信息,构建软件特征库。

    15、该方法能够在无需搭建源码构建环境、源码无需编译成功的基础上实现高效地特征提取。此外,该方法利用函数调用关系生成特征集合,颗粒度较细,从而丰富软件特征库。

    16、在一些可能的实现方式中,软件测试平台可以全部部署在云上,例如是以软件即服务的形式向用户提供漏洞检测服务,用户可以通过漏洞检测页面或者应用程序编程接口实现被测软件的漏洞检测。

    17、在一些可能的实现方式中,软件测试平台可以部分部署在本地,另一部分部署在云上,从而在降低用户部署成本的基础上,向用户提供漏洞检测的服务。

    18、第二方面,本技术提供了一种软件测试平台,所述软件测试平台用于检测漏洞对软件的影响程度,所述软件测试平台包括:

    19、文件获取模块,用于获取被测软件的代码文件,所述被测软件的代码文件为经过编译的代码文件;

    20、特征提取模块,用于根据所述被测软件的代码文件,提取所述被测软件的特征集合,所述被测软件的特征集合包括函数标识、函数特征和函数调用信息;

    21、特征匹配模块,用于将所述被测软件的特征集合与软件特征库中软件的特征集合进行匹配,从所述软件特征库中确定所述被测软件的至少一个引用软件,所述软件特征库包括开源软件或具有源代码访问权限的闭源软件的特征集合,所述软件特征库中软件的特征集合包括函数标识、函数特征和函数调用信息;

    22、漏洞定位模块,用于根据所述被测软件的至少一个引用软件查询漏洞定位信息知识库,获得所述至少一个引用软件存在的漏洞以及所述漏洞的定位信息,所述定位信息指示所述至少一个引用软件中与所述漏洞相关的目标函数;

    23、影响确定模块,用于根据所述被测软件的特征集合以及所述至少一个引用软件的特征集合中目标函数相关的特征,获得所述至少一个引用软件存在的漏洞对所述被测软件的影响程度。

    24、在一些可能的实现方式中,所述与所述漏洞相关的目标函数包括漏洞函数以及所述漏洞函数的调用链上的函数。

    25、在一些可能的实现方式中,所述影响确定模块具体用于:

    26、将所述目标函数的函数标识与所述被测软件的特征集合中的函数标识匹配,和/或,将所述目标函数的函数特征与所述被测软件的特征集合中的函数特征匹配;

    27、当匹配失败,确定所述漏洞在所述被测软件中不存在。

    28、在一些可能的实现方式中,所述影响确定模块还用于:

    29、当匹配成功,确定所述目标函数是否被所述被测软件的函数调用,若否,则确定所述漏洞在所述被测软件中存在,所述漏洞对所述被测软件无影响。

    30、在一些可能的实现方式中,所述影响确定模块还用于:

    31、在漏洞检测结果中标识所述至少一个引用软件存在的漏洞对所述被测软件的影响程度。

    32、在一些可能的实现方式中,所述漏洞定位信息知识库通过如下方式构建:

    33、获取所述开源软件或所述具有源代码访问权限的闭源软件的漏洞修复信息;

    34、根据所述漏洞修复信息,获得所述开源软件或所述具有源代码访问权限的闭源软件的源代码中引入所述漏洞的漏洞函数以及所述漏洞函数的代码片段;

    35、对所述漏洞函数的代码片段进行分析,获得所述漏洞函数的调用链;

    36、根据所述漏洞函数以及所述漏洞函数的调用链,构建所述漏洞定位信息知识库。

    37、在一些可能的实现方式中,所述软件特征库通过如下方式构建:

    38、获取所述开源软件或所述具有源代码访问权限的闭源软件的源代码;

    39、从所述开源软件或所述具有源代码访问权限的闭源软件的源代码中提取函数标识、函数特征和函数调用信息;

    40、根据所述开源软件或所述具有源代码访问权限的闭源软件的函数标识、函数特征和函数调用信息,构建所述软件特征库。

    41、第三方面,本技术提供了一种计算设备集群。所述计算设备集群包括至少一台计算设备,所述至少一台计算设备包括至少一个处理器和至少一个存储器。所述至少一个处理器、所述至少一个存储器进行相互的通信。所述至少一个处理器用于执行所述至少一个存储器中存储的指令,以使得计算设备或计算设备集群执行如第一方面或第一方面的任一种实现方式所述的漏洞检测方法。

    42、第四方面,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令指示计算设备或计算设备集群执行上述第一方面或第一方面的任一种实现方式所述的漏洞检测方法。

    43、第五方面,本技术提供了一种包含指令的计算机程序产品,当其在计算设备或计算设备集群上运行时,使得计算设备或计算设备集群执行上述第一方面或第一方面的任一种实现方式所述的漏洞检测方法。

    44、本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。


    技术特征:

    1.一种漏洞检测方法,其特征在于,应用于软件测试平台,所述软件测试平台用于检测漏洞对软件的影响程度,所述方法包括:

    2.根据权利要求1所述的方法,其特征在于,所述与所述漏洞相关的目标函数包括漏洞函数以及所述漏洞函数的调用链上的函数。

    3.根据权利要求1或2所述的方法,其特征在于,所述根据所述被测软件的特征集合以及所述至少一个引用软件的特征集合中目标函数相关的特征,获得所述漏洞对所述被测软件的影响程度,包括:

    4.根据权利要求3所述的方法,其特征在于,所述方法还包括:

    5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:

    6.根据权利要求1至5任一项所述的方法,其特征在于,所述漏洞定位信息知识库通过如下方式构建:

    7.根据权利要求1至5任一项所述的方法,其特征在于,所述软件特征库通过如下方式构建:

    8.一种软件测试平台,其特征在于,所述软件测试平台用于检测漏洞对软件的影响程度,所述软件测试平台包括:

    9.根据权利要求8所述的软件测试平台,其特征在于,所述与所述漏洞相关的目标函数包括漏洞函数以及所述漏洞函数的调用链上的函数。

    10.根据权利要求8或9所述的软件测试平台,其特征在于,所述影响确定模块具体用于:

    11.根据权利要求10所述的软件测试平台,其特征在于,所述影响确定模块还用于:

    12.根据权利要求8至11任一项所述的软件测试平台,其特征在于,所述影响确定模块还用于:

    13.根据权利要求8至12任一项所述的软件测试平台,其特征在于,所述漏洞定位信息知识库通过如下方式构建:

    14.根据权利要求8至13任一项所述的软件测试平台,其特征在于,所述软件特征库通过如下方式构建:

    15.一种计算设备集群,其特征在于,所述计算设备集群包括至少一台计算设备,所述至少一台计算设备包括至少一个处理器和至少一个存储器,所述至少一个存储器中存储有计算机可读指令;所述至少一个处理器执行所述计算机可读指令,以使得所述计算设备集群执行如权利要求1至7中任一项所述的方法。

    16.一种计算机可读存储介质,其特征在于,包括计算机可读指令;所述计算机可读指令用于实现权利要求1至7任一项所述的方法。

    17.一种计算机程序产品,其特征在于,包括计算机可读指令;所述计算机可读指令用于实现权利要求1至7任一项所述的方法。


    技术总结
    本申请提供了一种漏洞检测方法,该方法由软件测试平台执行,该方法包括:获取被测软件的代码文件;根据被测软件的代码文件,提取被测软件的特征集合;将被测软件的特征集合与软件特征库中软件的特征集合进行匹配,从软件特征库中确定被测软件的至少一个引用软件;根据被测软件的至少一个引用软件查询漏洞定位信息知识库,获得至少一个引用软件存在的漏洞以及漏洞的定位信息;根据被测软件的特征集合以及至少一个引用软件的特征集合中目标函数相关的特征,获得至少一个引用软件存在的漏洞对被测软件的影响程度。该方法能够实现对漏洞影响程度的自动化识别与检测,提升漏洞检测效率,降低人工分析的工作量。

    技术研发人员:郑志强
    受保护的技术使用者:华为云计算技术有限公司
    技术研发日:
    技术公布日:2024/11/26
    转载请注明原文地址:https://tc.8miu.com/read-36082.html

    最新回复(0)