漏洞处理方法、装置、设备及存储介质
文献发布时间:2023-06-19 12:24:27
技术领域
本申请涉及金融科技(Fintech)的自动化测试技术,涉及但不限于一种漏洞处理方法、装置、电子设备及计算机存储介质。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。
在相关技术中,交互式应用程序安全测试(Interactive Application SecurityTesting,IAST)方案是一种新的应用程序安全测试方案,可以通过代理、虚拟专用网络(Virtual Private Network,VPN)或者在服务端部署代理(Agent)程序,收集、监控网络(Web)应用程序运行时函数执行、数据传输,并与扫描器端进行实时交互,从而检测安全缺陷及漏洞。
然而,IAST漏洞扫描方案是需要大量的测试用例执行作为流量驱动,需要在业务测试层面处理,无疑会增加测试人力成本,同时需项目人员熟悉IAST漏洞检测流程;即需要项目人员编写测试用例,从而判断漏洞是否误报,增加了人力成本和时间成本。
发明内容
本申请实施例提供一种漏洞处理方法、装置、电子设备及计算机存储介质,可以自动化地对待验证漏洞进行验证,降低了人力成本和时间成本。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种漏洞处理方法,所述方法包括:
获取针对应用程序安全性的测试用例,通过应用程序安全测试平台执行所述测试用例,接收所述应用程序安全测试平台返回的待验证漏洞;
在所述待验证漏洞是首次发现的漏洞,且第一训练集中漏洞的选中属性存在于所述待验证漏洞的属性中时,根据所述第一训练集中所述选中属性对应的漏洞数与所述第一训练集对应的总漏洞数的占比、以及所述第一训练集对应的各漏洞中各个级别漏洞的数量,对所述待验证漏洞进行验证;其中,所述第一训练集包括多个漏洞的属性集,所述属性集包括至少一种属性。
在本申请的一些实施例中,所述方法还包括:
在所述待验证漏洞是首次发现的漏洞时,在所述第一训练集中各种属性对应的基尼指数中,确定最小的基尼指数;将所述最小的基尼系数对应的一种属性作为所述选中属性。
可以理解地,基尼指数表示在样本集合中一个随机选中的样本被分错的概率,基尼指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高;在本申请实施例中,可以在第一训练集中各种属性对应的基尼指数中确定最小的基尼指数后;将最小的基尼系数对应的一种属性作为选中属性;结合上述对基尼指数的解释说明可知,与其它属性相比,选中属性对应的个分组的数据混合程度最低,从而有利于从第一训练集中选中属性的角度,准确地分析待验证漏洞的错误率。
在本申请的一些实施例中,所述方法还包括:
在所述选中属性不存在于所述待验证漏洞的属性中时,将第i训练集排除所述选中属性的取值后,得到第i+1训练集;
在i取大于或等于1的整数时,根据第i+1训练集的各种属性对应的基尼指数,在所述第i+1训练集的各种属性中重新确定出所述选中属性。
可以理解地,通过不断更新选中属性,直至确定出的选中属性存在于待验证漏洞的属性中;在确定出的选中属性存在于待验证漏洞的属性中时,适合从第一训练集中选中属性的角度分析待验证漏洞的错误率。
在本申请的一些实施例中,所述方法还包括:
在所述待验证漏洞不满足预设条件时,根据所述第一训练集中各种属性对应的基尼指数,在所述第一训练集中各种属性中确定出所述选中属性;其中,所述预设条件包括:所述待验证漏洞的各种属性的值均存在于所述第一训练集中,或者,所述待验证漏洞的各种属性的值均不属于所述第一训练集。
可以看出,本申请实施例中可以针对待验证漏洞不满足预设条件的情况,在第一训练集中各种属性中确定出选中属性;在针对待验证漏洞满足预设条件的情况,无需确定选中属性并根据选中属性对待验证漏洞进行验证,在一定程度上提高了待验证漏洞的验证效率。
在本申请的一些实施例中,所述方法还包括:
在所述待验证漏洞与所述第一训练集中任意一个漏洞的各种属性的值相同时,将所述任意一个漏洞的验证结果确定为所述待验证漏洞的验证结果。
可以理解地,在所述待验证漏洞与所述第一训练集中任意一个漏洞的各种属性的值相同时,由于第一训练集中任意一个漏洞的验证结果是明确已知的信息,因而,可以快速准确地对待验证漏洞进行验证。
在本申请的一些实施例中,所述方法还包括:
在所述待验证漏洞的各种属性的值均不属于所述第一训练集时,生成针对所述待验证漏洞的分析指令,所述分析指令用于指示用户通过漏洞处理平台对所述待验证漏洞进行分析。
可以理解地,在待验证漏洞的各种属性的值均不属于所述第一训练集时,通过对待验证漏洞进行进一步分析,有利于准确地对待验证漏洞进行验证。
在本申请的一些实施例中,所述方法还包括:
在对所述待验证漏洞进行验证后,通过将所述待验证漏洞的属性值加入到所述第一训练集,实现对所述第一训练集的更新。
可以理解地,在对待验证漏洞进行验证后,通过将待验证漏洞的属性值加入到第一训练集,有利于使第一训练集的内容更加丰富准确,从而,根据第一训练集对再次获取的待验证漏洞能够进行更加准确地验证;即,可以实现针对漏洞验证实现自适应决策。
在本申请的一些实施例中,所述方法还包括:
在确定所述选中属性存在于所述待验证漏洞的属性中,且所述选中属性为接口路径时,将所述选中属性更新为接口路径所属的子系统。
可以理解地,在选中属性为接口路径时,将选中属性更新为接口路径所属的子系统,可以更灵活地确定选中属性。
在本申请的一些实施例中,所述根据所述第一训练集中所述选中属性对应的漏洞数与所述第一训练集对应的总漏洞数的占比、以及所述第一训练集对应的各漏洞中各个级别漏洞的数量,对所述待验证漏洞进行验证,包括:
针对所述第一训练集对应的各漏洞,确定所述待验证漏洞的漏洞级别的误报漏洞数量与其它漏洞级别的误报漏洞数量的比例;所述其它漏洞级别表示除所述待验证漏洞的漏洞级别的漏洞级别;
根据所述第一训练集中所述选中属性对应的漏洞数与所述第一训练集对应的总漏洞数的占比、以及所述待验证漏洞的漏洞级别的误报漏洞数量与其它漏洞级别的误报漏洞数量的比例,确定所述待验证漏洞的错误率;
根据所述待验证漏洞的错误率,对所述待验证漏洞进行验证。
可以理解地,根据第一训练集中选中属性对应的漏洞数与第一训练集对应的总漏洞数的占比、以及待验证漏洞的漏洞级别的漏洞数量与其它漏洞级别的漏洞数量的比例,有利于准确地确定待验证漏洞的错误率,从而,有利于准确地对待验证漏洞进行验证。
在本申请的一些实施例中,所述根据所述待验证漏洞的错误率,对所述待验证漏洞进行验证,包括:
在所述待验证漏洞的错误率小于设定值时,确定所述待验证漏洞为正确的漏洞;在所述待验证漏洞的错误率大于或等于设定值时,确定所述待验证漏洞为误报的漏洞。
可以理解地,本申请实施例可以根据待验证漏洞的错误率,较为容易地对待验证漏洞进行验证。
在本申请的一些实施例中,所述方法还包括:
将所述正确的漏洞的属性值发送至漏洞处理平台,使漏洞处理平台对所述正确的漏洞进行修复。
如此,本申请实施例可以及时地对漏洞进行修复,实现对正确的漏洞的自动化处理。
在本申请的一些实施例中,所述方法还包括:
在所述待验证漏洞不是首次发现的漏洞时,根据漏洞处理平台上所述待验证漏洞的状态,对所述待验证漏洞进行验证。
可以看出,本申请实施例可以结合漏洞处理平台上待验证漏洞的状态,更加准确地对待验证漏洞进行验证。
在本申请的一些实施例中,所述方法还包括:
根据对所述待验证漏洞进行验证的验证结果,将所述应用程序安全测试平台执行的测试用例标记所述验证结果。
可以看出,本申请实施例可以在对待验证漏洞进行验证后,实现应用程序安全测试平台执行的测试用例的自动打标,由于无需人工参与,因而可以减少人力成本和时间成本。
本申请实施例提供一种漏洞处理装置,所述装置包括:第一处理模块和第二处理模块,其中,
第一处理模块,用于获取针对应用程序安全性的测试用例,通过应用程序安全测试平台执行所述测试用例,接收所述应用程序安全测试平台返回的待验证漏洞;
第二处理模块,用于在所述待验证漏洞是首次发现的漏洞,且第一训练集中漏洞的选中属性存在于所述待验证漏洞的属性中时,根据所述第一训练集中所述选中属性对应的漏洞数与所述第一训练集对应的总漏洞数的占比、以及所述第一训练集对应的各漏洞中各个级别漏洞的数量,对所述待验证漏洞进行验证;其中,所述第一训练集包括多个漏洞的属性集,所述属性集包括至少一种属性。
本申请实施例提供一种电子设备,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现上述任意一种漏洞处理方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于被处理器执行时,实现上述任意一种漏洞处理方法。
本申请实施例中,获取针对应用程序安全性的测试用例,通过应用程序安全测试平台执行所述测试用例,接收所述应用程序安全测试平台返回的待验证漏洞;在所述待验证漏洞是首次发现的漏洞,且第一训练集中漏洞的选中属性存在于所述待验证漏洞的属性中时,根据所述第一训练集中所述选中属性对应的漏洞数与所述第一训练集对应的总漏洞数的占比、以及所述第一训练集对应的各漏洞中各个级别漏洞的数量,对所述待验证漏洞进行验证;其中,所述第一训练集包括多个漏洞的属性集,所述属性集包括至少一种属性。
可以看出,本申请实施例通过执行测试用例获取应用程序安全测试平台返回的待验证漏洞,然后在待验证漏洞是首次发现的漏洞的情况下,结合第一训练集中漏洞的信息,准确对待验证漏洞进行验证;由于无需项目人员编写测试用例实现漏洞验证,因而有利于降低人力成本和时间成本。
附图说明
图1为本申请实施例的漏洞处理方法的一个流程图;
图2为本申请实施例中基于容器的IAST漏洞测试跟踪跟验证全闭环架构图;
图3为本申请实施例中漏洞处理解析的流程图;
图4为本申请实施例中漏洞处理装置的结构示意图;
图5为本申请实施例中电子设备的结构示意图。
具体实施方式
以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本申请,并不用于限定本申请。另外,以下所提供的实施例是用于实施本申请的部分实施例,而非提供实施本申请的全部实施例,在不冲突的情况下,本申请实施例记载的技术方案可以任意组合的方式实施。
需要说明的是,在本申请实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元,例如的单元可以是部分电路、部分处理器、部分程序或软件等等)。
例如,本申请实施例提供的漏洞处理方法包含了一系列的步骤,但是本申请实施例提供的漏洞处理方法不限于所记载的步骤,同样地,本申请实施例提供的漏洞处理装置包括了一系列模块,但是本申请实施例提供的装置不限于包括所明确记载的模块,还可以包括为获取相关信息、或基于信息进行处理时所需要设置的模块。
本申请实施例可以应用于电子设备中,这里,电子设备可以是小型计算机系统、大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。电子设备可以包括能够执行指令的程序模块。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者可以对特定的抽象数据类型进行处理。
示例性地,上述电子设备可以是质量中台,用于提供测试工具、测试探索以及任务调度等方法,用于促进开发部门和质量保障部门之间的沟通、协作与整合。
图1为本申请实施例的漏洞处理方法的一个流程图,如图1所示,该流程可以包括:
步骤101:获取针对应用程序安全性的测试用例,通过应用程序安全测试平台执行测试用例,接收应用程序安全测试平台返回的待验证漏洞。
这里,应用程序安全测试平台可以是IAST平台或其它用于测试应用程序安全性的平台。
本申请实施例中,电子设备在获取到针对应用程序安全性的测试用例后,可以请求应用程序安全测试平台执行测试用例;应用程序安全测试平台可以通过执行测试用例,得到测试用例的执行结果,测试用例的执行结果可以包括待验证漏洞和待验证漏洞的属性集;示例性地,应用程序安全测试平台可以在执行测试用例后,可以在数据库(DB)中标记测试用例为已执行状态。
待验证漏洞的属性集至少包括待验证漏洞的漏洞级别,即,待验证漏洞的漏洞级别是已知信息。示例性地,待验证漏洞的漏洞级别可以是高危(high)、中危(med)、低危(low)和提示(info,忽略不计)中的一种级别。
示例性地,由于IAST平台并不是在执行测试用例后立即得到执行结果,而是在执行测试用例后,延时得到执行结果;因此,电子设备可以通过IAST平台定时执行测试用例,并定时获取IAST平台的待验证漏洞。
步骤102:在待验证漏洞是首次发现的漏洞,且第一训练集中漏洞的选中属性存在于待验证漏洞的属性中时,根据第一训练集中选中属性对应的漏洞数与第一训练集对应的总漏洞数的占比、以及第一训练集对应的各漏洞中各个级别漏洞的数量,对待验证漏洞进行验证;其中,第一训练集包括多个漏洞的属性集,属性集包括至少一种属性。
示例性地,电子设备在每次获取到待验证漏洞后,可以在数据库中存储待验证漏洞;如果电子设备当前获取的待验证漏洞不是已经存储的漏洞,则说明待验证漏洞是首次发现的漏洞;如果电子设备当前获取的待验证漏洞是已经存储的漏洞,则说明待验证漏洞不是首次发现的漏洞。
本申请实施例中,漏洞的属性集包括漏洞级别,示例性地,漏洞的属性集还可以包括以下至少一种属性:漏洞类型、版本库、子系统、接口路径;属性集中不同属性之间存在一定的关联,示例性地,当属性集中接口路径存在时,子系统存在于属性集中,子系统与接口路径的对应关系为一对多;对待验证漏洞进行验证的核心属性可以是漏洞类型,漏洞类型与版本库的对应关系可以是M:N,M和N可以是相同的整数,也可以是不同的整数;在漏洞类型明确已知的情况下,漏洞级别也可以确定,例如,漏洞类型为可扩展标记语言外部实体注入攻击(Extensible Markup Language External Entity Injection,XXE),则漏洞级别可以是高危级别。
本申请实施例中,可以根据已知属性值的漏洞预先建立第一训练集;在得到第一训练集后,可以从第一训练集的漏洞的属性集中选取一种属性,即得到选中属性;例如,可以将漏洞类型、版本库、子系统或接口路径作为选中属性。
由于第一训练集中各漏洞的属性值为已知属性值,因此,可以确定第一训练集中选中属性对应的漏洞数、第一训练集对应的总漏洞数;在第一训练集中各漏洞的漏洞级别已知的情况下,可以确定第一训练集对应的各漏洞中各个级别漏洞的数量。
在一些实施例中,可以根据第一训练集中选中属性对应的漏洞数与第一训练集对应的总漏洞数的占比、以及第一训练集对应的各漏洞中各个级别漏洞的数量,确定待验证漏洞的错误率;这里,待验证漏洞的错误率用于反映待验证漏洞为正确的漏洞的概率;因此,可以根据待验证漏洞的错误率,对所述待验证漏洞进行验证。
本申请实施例中,如果待验证漏洞是正确的漏洞,这说明待验证漏洞为需要进行修复的漏洞;如果待验证漏洞不是正确的漏洞,即说明待验证漏洞属于误报的漏洞。
在实际应用中,步骤101至步骤102可以基于电子设备的处理器实现,上述处理器可以是特定用途集成电路(Application Specific Integrated Circuit,A SIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital SignalProcessing Device,DSPD)、可编程逻辑装置(Programmable Logic Device,PLD)、现场可编程门阵列(Field Programmable Gate Array,F PGA)、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作限制。
可以看出,本申请实施例通过执行测试用例获取应用程序安全测试平台返回的待验证漏洞,然后在待验证漏洞是首次发现的漏洞的情况下,结合第一训练集中漏洞的信息,准确对待验证漏洞进行验证;由于无需项目人员编写测试用例实现漏洞验证,因而有利于降低人力成本和时间成本。
在一些实施例中,在待验证漏洞是首次发现的漏洞时,在第一训练集中各种属性对应的基尼指数中,确定最小的基尼指数;将最小的基尼系数对应的一种属性作为所述选中属性。
本申请实施例中,可以根据公式(1)计算得出第一训练集的基尼指数:
其中,D表示第一训练集,c表示第一训练集中属性的种类数,例如,在第一训练集中漏洞的属性集包括:漏洞类型、版本库、子系统和接口路径的情况下,c的取值为4;p
对于第一训练集中的每种属性,均可以得出对应的基尼指数;下面以漏洞类型为例进行说明。
在得到第一训练集后,可以按照漏洞类型的取值,对第一训练集中的各个属性值进行分组;不同漏洞的属性值属于不同的分组,不同分组中的漏洞类型的取值不同,同一分组中包括漏洞类型的一个取值或者包括漏洞类型的多个相同取值。
示例性地,第一训练集包括漏洞1的属性集、漏洞2的属性集和漏洞3的属性集;漏洞1的属性集为漏洞类型、版本库、子系统和接口路径,漏洞1的漏洞类型的取值为漏洞类型A1,漏洞1的版本库的取值的版本库B1,漏洞1的子系统的取值的子系统C1,漏洞1的接口路径的取值的接口路径D1;漏洞2的属性集为漏洞类型、版本库和子系统,漏洞2的漏洞类型的取值为漏洞类型A1,漏洞2的版本库的取值的版本库B2,漏洞2的子系统的取值的子系统C2;漏洞3的属性集为漏洞类型和版本库,漏洞3的漏洞类型的取值为漏洞类型A2,漏洞3的版本库的取值的版本库B3;在这种情况下,可以按照漏洞类型的取值,将漏洞1的各属性的取值和漏洞2的各属性的取值划分至分组1,将漏洞3的各属性的取值划分至分组2。
在对第一训练集中的各个属性值进行分组后,可以根据每个分组中属性值,确定第一训练集中漏洞类型对应的基尼指数。
示例性地,可以根据公式(2)计算得出第一训练集中漏洞类型对应的基尼指数:
其中,D
同理,可以计算出第一训练集中版本库、子系统和接口路径对应的基尼指数。
本申请实施例中,最小的基尼系数对应的一种属性可以理解为最大的基尼指数增益值对应的一种属性。以漏洞类型为例,可以根据公式(3)计算得出第一训练集中漏洞类型对应的基尼指数增益值:
ΔGini
其中,ΔGini
可以理解地,基尼指数表示在样本集合中一个随机选中的样本被分错的概率,基尼指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高;在本申请实施例中,可以在第一训练集中各种属性对应的基尼指数中确定最小的基尼指数后;将最小的基尼系数对应的一种属性作为选中属性;结合上述对基尼指数的解释说明可知,与其它属性相比,选中属性对应的个分组的数据混合程度最低,从而有利于从第一训练集中选中属性的角度,准确地分析待验证漏洞的错误率。
在一些实施例中,如果选中属性不存在于待验证漏洞的属性中,则说明不适合从第一训练集中选中属性的角度分析待验证漏洞的错误率;此时,可以在i取大于或等于1的情况下,将第i训练集排除选中属性的取值后,得到第i+1训练集;然后,根据第i+1训练集的各种属性对应的基尼指数,在第i+1训练集的各种属性中重新确定出所述选中属性。
这里,根据第i+1训练集的各种属性对应的基尼指数,在第i+1训练集的各种属性中重新确定出选中属性的实现方式,与根据第i+1训练集的各种属性对应的基尼指数在第一训练集的各种属性中确定选中属性的实现方式相同,这里不再赘述。
本申请实施例中,如果任意一次确定出的选中属性不存在于待验证漏洞的属性中,则可以上述记载的内容重新确定出新的训练集(即根据第i训练集得到第i+1训练集),并根据新的训练集重新确定选中属性,直至确定出的选中属性存在于待验证漏洞的属性中。
可以理解地,通过不断更新选中属性,直至确定出的选中属性存在于待验证漏洞的属性中;在确定出的选中属性存在于待验证漏洞的属性中时,适合从第一训练集中选中属性的角度分析待验证漏洞的错误率。
在一些实施例中,在确定待验证漏洞后,可以根据待验证漏洞的属性值对待验证漏洞进行初步验证,在待验证漏洞满足预设条件时,可以直接对待验证漏洞进行验证,无需确定选中属性并根据选中属性对待验证漏洞进行验证。这里,预设条件包括待验证漏洞的各种属性的值均存在于第一训练集中,或者,待验证漏洞的各种属性的值均不属于第一训练集。
示例性地,在待验证漏洞与所述第一训练集中任意一个漏洞的各种属性的值相同时,将该任意一个漏洞的验证结果确定为所述待验证漏洞的验证结果。
可以理解地,在所述待验证漏洞与所述第一训练集中任意一个漏洞的各种属性的值相同时,由于第一训练集中任意一个漏洞的验证结果是明确已知的信息,因而,可以快速准确地对待验证漏洞进行验证。
示例性地,在待验证漏洞的各种属性的值均不属于第一训练集时,可以定义待验证漏洞为新的漏洞,此时,可以生成针对所述待验证漏洞的分析指令,分析指令用于指示用户通过漏洞处理平台对待验证漏洞进行分析。也就是说,需要用户通过漏洞处理平台对待验证漏洞进行进一步分析。
可以理解地,在待验证漏洞的各种属性的值均不属于所述第一训练集时,通过对待验证漏洞进行进一步分析,有利于准确地对待验证漏洞进行验证。
在一些实施例中,可以在待验证漏洞不满足预设条件时,根据第一训练集中各种属性对应的基尼指数,在第一训练集中各种属性中确定出选中属性。
可以看出,本申请实施例中可以针对待验证漏洞不满足预设条件的情况,在第一训练集中各种属性中确定出选中属性;在针对待验证漏洞满足预设条件的情况,无需确定选中属性并根据选中属性对待验证漏洞进行验证,在一定程度上提高了待验证漏洞的验证效率。
在一些实施例中,在对待验证漏洞进行验证后,通过将待验证漏洞的属性值加入到第一训练集,实现对所述第一训练集的更新。
可以理解地,在对待验证漏洞进行验证后,通过将待验证漏洞的属性值加入到第一训练集,有利于使第一训练集的内容更加丰富准确,从而,根据第一训练集对再次获取的待验证漏洞能够进行更加准确地验证;即,可以实现针对漏洞验证实现自适应决策。
在一些实施例中,在确定选中属性存在于所述待验证漏洞的属性中,且选中属性为接口路径时,将选中属性更新为接口路径所属的子系统。
根据上述记载的内容可知,当属性集中接口路径存在时,子系统也会存在于属性集中;例如,属性集中接口路径的取值为ias-mg/api/XXXX,子系统的取值为ias-mg。
可以理解地,在选中属性为接口路径时,将选中属性更新为接口路径所属的子系统,可以更灵活地确定选中属性。
在一些实施例中,对待验证漏洞进行验证的实现方式可以包括:
针对第一训练集对应的各漏洞,确定待验证漏洞的漏洞级别的误报漏洞数量与其它漏洞级别的误报漏洞数量的比例;其它漏洞级别表示除待验证漏洞的漏洞级别的漏洞级别;
根据第一训练集中选中属性对应的漏洞数与第一训练集对应的总漏洞数的占比、以及待验证漏洞的漏洞级别的误报漏洞数量与其它漏洞级别的误报漏洞数量的比例,确定待验证漏洞的错误率;
根据待验证漏洞的错误率,对待验证漏洞进行验证。
下面对其它漏洞级别进行举例说明,各种漏洞的漏洞级别分为高危、中危和低危,待验证漏洞的漏洞级别为低危,则其它漏洞级别包括高危和中危。
示例性地,可以根据公式(4)计算得出待验证漏洞的错误率:
p=p
其中,p
示例性地,在待验证漏洞的漏洞级别为低危,其它漏洞级别包括高危和中危的情况下,可以根据公式(5)计算得出λ
其中,p
可以理解地,根据第一训练集中选中属性对应的漏洞数与第一训练集对应的总漏洞数的占比、以及待验证漏洞的漏洞级别的漏洞数量与其它漏洞级别的漏洞数量的比例,有利于准确地确定待验证漏洞的错误率,从而,有利于准确地对待验证漏洞进行验证。
在一些实施例中,可以在待验证漏洞的错误率小于设定值时,确定待验证漏洞为正确的漏洞。在待验证漏洞的错误率大于或等于设定值时,确定待验证漏洞为误报的漏洞,此时,可以忽略该待验证漏洞。
本申请实施例中,设定值可以根据实际需求预先设置,例如,设定值可以是0.4、0.5或0.6。
可以理解地,本申请实施例可以根据待验证漏洞的错误率,较为容易地对待验证漏洞进行验证。
在一些实施例中,可以将正确的漏洞的属性值发送至漏洞处理平台,使漏洞处理平台对正确的漏洞进行修复。
如此,本申请实施例可以及时地对漏洞进行修复,实现对正确的漏洞的自动化处理。
在一些实施例中,在待验证漏洞不是首次发现的漏洞时,可以根据漏洞处理平台上待验证漏洞的状态,对待验证漏洞进行验证。
根据上述记载的内容可知,如果待验证漏洞存储于数据库中,则可以认为待验证漏洞是首次发现的漏洞,此时需要结合漏洞处理平台上待验证漏洞的状态,对待验证漏洞进行验证。
本申请实施例中,漏洞处理平台接收到漏洞后,可以重新验证该漏洞,如果验证该漏洞为误报的漏洞,则可以拒绝该漏洞;如果验证该漏洞为正确的漏洞,则可以对该漏洞进行修复。
待验证漏洞的各种状态可以包括未解决状态、重新打开状态、已关闭状态、已拒绝状态、遗留状态和已解决状态;其中,未解决状态表示待验证漏洞并未拒绝且并未修复的状态;重新打开状态表示:在待验证漏洞修复后重新出现待验证漏洞的情况下,重新打开针对待验证漏洞的处理任务以对待验证漏洞进行修复的状态;已关闭状态表示在拒绝待验证漏洞或修复完成待验证漏洞后关闭针对待验证漏洞的处理任务的状态,这里,在对拒绝待验证漏洞或修复完成待验证漏洞后,可以自动将待验证漏洞的状态切换为已关闭状态,也可以由用户手动将待验证漏洞的状态切换为已关闭状态;已拒绝状态表示待验证漏洞被拒绝的状态;遗留状态表示当前不需要对待验证漏洞进行处理,而是在应用程序下一版本对待验证漏洞进行处理的状态;已解决状态表示待验证漏洞已经修复完成的状态。
示例性地,在待验证漏洞的状态为未解决状态或重新打开状态时,说明漏洞处理平台正在处理待验证漏洞,此时,可以忽略接收到的待验证漏洞。
示例性地,在待验证漏洞的状态为已关闭状态时,判断待验证漏洞关闭前的状态,在待验证漏洞关闭前的状态为已拒绝状态时,说明待验证漏洞是误报的漏洞,可以忽略接收到的待验证漏洞;在待验证漏洞关闭前验证为正确的漏洞时,说明待验证漏洞再次发生,此时,需要重新打开处理待验证漏洞的任务,需要开发排查是否应用程序是否发生版本被覆盖的情况。
示例性地,在待验证漏洞的状态为已拒绝状态时,说明待验证漏洞是误报的漏洞,可以忽略接收到的待验证漏洞,可以直接关闭处理待验证漏洞的任务。
示例性地,在待验证漏洞的状态为遗留状态时,暂不处理该待验证漏洞。
示例性地,在待验证漏洞的状态为已解决状态时,说明待验证漏洞再次发生,此时,需要重新打开处理待验证漏洞的任务,通知开发人员进行修复,在进行漏洞修复后,需要向IAST平台发送该待验证漏洞对应的测试用例。
可以看出,本申请实施例可以结合漏洞处理平台上待验证漏洞的状态,更加准确地对待验证漏洞进行验证。
在一些实施例中,无论待验证漏洞是否为首次发现的漏洞,均可以根据对待验证漏洞进行验证的验证结果,将应用程序安全测试平台执行的测试用例标记验证结果。
示例性地,对待验证漏洞进行验证的验证结果可以是正确的漏洞或误报的漏洞。
可以看出,本申请实施例可以在对待验证漏洞进行验证后,实现应用程序安全测试平台执行的测试用例的自动打标,由于无需人工参与,因而可以减少人力成本和时间成本。
下面通过一个实施例对本申请实施例的实现方式进行示例性说明。
图2为本申请实施例中基于容器的IAST漏洞测试跟踪跟验证全闭环架构图,如图2所示,TctpTest平台为上述记载的电子设备,DPMS(Data Proces sing ManagementSystem)平台为上述记载的漏洞处理平台,DPMS平台是一种软件开发过程管理系统,可以更好地支持以产品为维度的开发流程,对产品的开发过程做统一的规范化管理;在TctpTest平台上设置有多个接口,可以分别与DPMS平台、IAST平台、企业微信平台、数据库等进行交互。
TctpTest平台每天定时自动执行子系统的所有测试用例,同时分两次批次定时拉取IAST平台的漏洞。这里,TctpTest平台可以向引擎处理器发送测试用例的执行请求,引擎处理器可以通过IAST平台执行测试用例,得到测试用例的执行结果。
引擎处理器在执行测试用例后,可以在数据库中标记测试用例为已执行状态。
在获取待验证漏洞后,可以对待验证漏洞进行解析,以确定是否需要向D PMS提出BUG单,BUG单表示对待验证漏洞进行处理的任务。
示例性地,对待验证漏洞进行解析,得到待验证漏洞的验证结果,参照图2,可以在数据库中标记验证结果。
图3为本申请实施例中漏洞处理解析的流程图,参照图3,TctpTest平台尝试获取漏洞,如果并未发现漏洞,则在DPMS上关闭BUG单,并确定IAST平台的打标过程(即针对待验证漏洞的验证结果的标记过程)结束。
参照图3,在发现待验证漏洞时,判断是否完成针对所有待验证漏洞的验证分析,如果否,则判断待验证漏洞是否为首次发现的漏洞,如果待验证漏洞是首次发现的漏洞,则可以采用自适应决策算法判断待验证漏洞是否为正确的漏洞,如果待验证漏洞是正确的漏洞,则可以在DPMS提出BUG单,也可以通过相关人员对漏洞进行处理;如果待验证漏洞不是正确的漏洞,则可以判断是否完成针对所有待验证漏洞的验证分析。
下面对采用自适应决策算法判断待验证漏洞是否为正确的漏洞的实现方式进行说明。
自适应决策算法的原理是根据大量训练集,参照漏洞属性对应的基尼指数和风险权重影响因子自适应调整决策待验证漏洞是否为正确的漏洞。
待验证漏洞的五个属性包括漏洞类型、版本库、子系统、接口路径和漏洞级别,漏洞级别并不参与漏洞属性的选取,用来纠正误差,使得更精准预测出待验证漏洞的验证结果。基于漏洞类型、版本库、子系统和接口路径这四个取值,可以确定出唯一的一个漏洞。漏洞级别可以分为高危、中危、低危和提示,风险权重影响因子记为λ,高危级别、中危级别和低危级别分别对应的风险权重影响因子分别为p
可以根据以下公式(6)确定待验证漏洞的验证结果:
(x,res)={x
其中,x表示待验证漏洞,res表示待验证漏洞的验证结果;x
在待验证漏洞满足预设条件或不满足条件时,均可以参照前述记载的内容进行处理,得到待验证漏洞的验证结果。如果待验证漏洞为正确的漏洞,则可以在DPMS上发起提BUG单的流程,如果待验证漏洞是误报的漏洞,则可以忽略该待验证漏洞。
参照图3,如果待验证漏洞不是首次发现的漏洞,可以结合DPMS平台上的BUG状态来对待验证漏洞进行验证,结合DPMS平台上的BUG状态来对待验证漏洞进行验证的实现方式,已经在前述实施例中作出说明。
参照图3,在完成针对所有待验证漏洞的验证分析后,可以判断计数值是否等于n,这里,计数值的初始值为0,n表示所有待验证漏洞的数量。本申请实施例中,可以在每次得到待验证漏洞的验证结果或者在确定待验证漏洞的状态为遗留状态时,可以将计数值增加1。因此,如果计数值等于n,则可以确认IAST平台的打标过程结束,如果计数值不等于n;如果计数值不等于n,则说明IAST平台的打标过程并未结束,但是可以结束漏洞处理解析的本次流程。
本申请实施例中,可以在对待验证漏洞为正确的漏洞后,通过将待验证漏洞的属性值加入到第一训练集,从而通过不断训练,达到自适应决策效果,使得让自适应决策算法的处理精度提高。
参照图2,TctpTest平台通过获取漏洞通知,确定漏洞处理解析流程结束后,可以监控DPMS平台的漏洞状态是否为已解决状态,如果DPMS平台的漏洞状态为已解决状态,则发起相应的测试用例执行请求,并通过获取测试用例的执行结果确定验证漏洞是否已经修复;如果通过获取测试用例的执行结果确定验证漏洞已经修复,则标记漏洞的验证结果;如果通过获取测试用例的执行结果确定验证漏洞并未修复,则可以重新打开BUG单,将针对漏洞的测试次数加1,并通过企业微信平台通知开发人员进行漏洞修复,实现整个流程的全闭环。
综上,本申请实施例提出了一种自动验证漏洞的完整方案,可以采用自适应决策算法精准分析待验证漏洞是否为正确的漏洞,降低错误率,减少开发、测试人员介入,降低人力成本;并且可以通过监控DPMS平台的漏洞状态,及时反向验证实现闭环,达到每个版本IAST测试自动化目的,真正释放测试人力,实现漏洞的自动化验证。
在前述实施例提出的漏洞处理方法的基础上,本申请实施例还提出了一种漏洞处理装置;图4为本申请实施例的漏洞处理装置的一个可选的组成结构示意图,如图4所示,漏洞处理装置400可以包括:第一处理模块401和第二处理模块402,其中,
第一处理模块401,用于获取针对应用程序安全性的测试用例,通过应用程序安全测试平台执行所述测试用例,接收所述应用程序安全测试平台返回的待验证漏洞;
第二处理模块402,用于在所述待验证漏洞是首次发现的漏洞,且第一训练集中漏洞的选中属性存在于所述待验证漏洞的属性中时,根据所述第一训练集中所述选中属性对应的漏洞数与所述第一训练集对应的总漏洞数的占比、以及所述第一训练集对应的各漏洞中各个级别漏洞的数量,对所述待验证漏洞进行验证;其中,所述第一训练集包括多个漏洞的属性集,所述属性集包括至少一种属性。
在一些实施例中,所述第二处理模块402,还用于:
在所述待验证漏洞是首次发现的漏洞时,在所述第一训练集中各种属性对应的基尼指数中,确定最小的基尼指数;将所述最小的基尼系数对应的一种属性作为所述选中属性。
在一些实施例中,所述第二处理模块402,还用于:
在所述选中属性不存在于所述待验证漏洞的属性中时,将第i训练集排除所述选中属性的取值后,得到第i+1训练集;
在i取大于或等于1的整数时,根据第i+1训练集的各种属性对应的基尼指数,在所述第i+1训练集的各种属性中重新确定出所述选中属性。
在一些实施例中,所述第二处理模块402,还用于:
在所述待验证漏洞不满足预设条件时,根据所述第一训练集中各种属性对应的基尼指数,在所述第一训练集中各种属性中确定出所述选中属性;其中,所述预设条件包括:所述待验证漏洞的各种属性的值均存在于所述第一训练集中,或者,所述待验证漏洞的各种属性的值均不属于所述第一训练集。
在一些实施例中,所述第二处理模块402,还用于:
在所述待验证漏洞与所述第一训练集中任意一个漏洞的各种属性的值相同时,将所述任意一个漏洞的验证结果确定为所述待验证漏洞的验证结果。
在一些实施例中,所述第二处理模块402,还用于:
在所述待验证漏洞的各种属性的值均不属于所述第一训练集时,生成针对所述待验证漏洞的分析指令,所述分析指令用于指示用户通过漏洞处理平台对所述待验证漏洞进行分析。
在一些实施例中,所述第二处理模块402,还用于:
在对所述待验证漏洞进行验证后,通过将所述待验证漏洞的属性值加入到所述第一训练集,实现对所述第一训练集的更新。
在一些实施例中,所述第二处理模块402,还用于:
在确定所述选中属性存在于所述待验证漏洞的属性中,且所述选中属性为接口路径时,将所述选中属性更新为接口路径所属的子系统。
在一些实施例中,所述第二处理模块402,具体用于:
针对所述第一训练集对应的各漏洞,确定所述待验证漏洞的漏洞级别的误报漏洞数量与其它漏洞级别的误报漏洞数量的比例;所述其它漏洞级别表示除所述待验证漏洞的漏洞级别的漏洞级别;
根据所述第一训练集中所述选中属性对应的漏洞数与所述第一训练集对应的总漏洞数的占比、以及所述待验证漏洞的漏洞级别的误报漏洞数量与其它漏洞级别的误报漏洞数量的比例,确定所述待验证漏洞的错误率;
根据所述待验证漏洞的错误率,对所述待验证漏洞进行验证。
在一些实施例中,所述第二处理模块402,具体用于:
在所述待验证漏洞的错误率小于设定值时,确定所述待验证漏洞为正确的漏洞;在所述待验证漏洞的错误率大于或等于设定值时,确定所述待验证漏洞为误报的漏洞。
在一些实施例中,所述第二处理模块402,还用于:
将所述正确的漏洞的属性值发送至漏洞处理平台,使漏洞处理平台对所述正确的漏洞进行修复。
在一些实施例中,所述第二处理模块402,还用于:
在所述待验证漏洞不是首次发现的漏洞时,根据漏洞处理平台上所述待验证漏洞的状态,对所述待验证漏洞进行验证。
在一些实施例中,所述第二处理模块402,还用于:
根据对所述待验证漏洞进行验证的验证结果,将所述应用程序安全测试平台执行的测试用例标记所述验证结果。
在实际应用中,第一处理模块401和第二处理模块402均可以利用电子设备的处理器实现,上述处理器可以是ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作限制。
需要说明的是,以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是终端、服务器等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
相应的,本申请实施例再提供一种计算机存储介质,所述计算机存储介质上存储有计算机可执行指令,该计算机可执行指令用于实现上述实施例提供的任意一种漏洞处理方法。
本申请实施例还提供一种电子设备,图5为本申请实施例提供的电子设备的一个可选的组成结构示意图,如图5所示,所述电子设备50包括:
存储器501,用于存储可执行指令;
处理器502,用于执行所述存储器501中存储的可执行指令时,实现上述任意一种确定域名服务器的方法。
上述处理器502可以为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。
上述计算机可读存储介质/存储器可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是包括上述存储器之一或任意组合的各种终端,如移动电话、计算机、平板设备、个人数字助理等。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一些实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一些实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本申请实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得设备自动测试线执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
- 一种漏洞处理方法、装置、设备及可读存储介质
- 漏洞处理方法、装置、设备和计算机可读存储介质