机器学习框架漏洞API参数定位方法、系统、设备及介质与流程

文档序号:23261761发布日期:2020-12-11 18:50阅读:142来源:国知局
机器学习框架漏洞API参数定位方法、系统、设备及介质与流程

本发明属于机器学习领域,涉及一种机器学习框架漏洞api参数定位方法、系统、设备及介质。



背景技术:

在机器学习领域中,机器学习框架通过将各种算法与功能集成为简单易懂的api(应用程序接口),极大程度上方便了人们的使用。在现实生活中,机器学习已经被使用在文本处理、图片识别等各个领域,在各行各业起着越发重要的作用。然而机器学习框架的api中存在的各类漏洞也为使用者带来了难以察觉和处理的安全隐患,轻则影响用户工作效率,重则危害使用者的财产安全乃至生命安全。

对软件中的潜在漏洞进行定位排查一直是一个饱受关注的研究方向。这是由于一方面排查软件中的漏洞问题具有非常高的实用价值,可以在各个领域中起到重要的作用;另一方面是由于对漏洞问题的检测一直缺乏一种普适且高效的方法,如何更有效的对目标软件系统进行更全面的分析始终吸引研究者。目前,通常采用的软件测试方法包括静态分析与动态分析两大类。但是,机器学习框架的api由于集成了各种算法、调用了各种依赖库,因此传统的测试方法在确认并定位问题的具体来源时存在一定的困难,难以高效的进行测试并确认问题的来源。



技术实现要素:

本发明的目的在于克服上述现有技术中在机器学习框架漏洞问题测试时,较难定位问题的具体来源的缺点,提供一种机器学习框架漏洞api参数定位方法、系统、设备及介质。

为达到上述目的,本发明采用以下技术方案予以实现:

本发明第一方面,一种机器学习框架漏洞api参数定位方法,包括以下步骤:

s1:获取一能够触发机器学习框架漏洞的api单层模型,并获取该api单层模型的参数组合及模型输入;

s2:变异参数组合中的单个参数,得到变异api单层模型;采用模型输入及变异api单层模型测试机器学习框架,得到机器学习框架漏洞的触发结果;

s3:对参数组合中的每个参数,均重复进行若干次s2;

s4:整合所有参数组合与对应机器学习框架漏洞的触发结果,得到单一参数变化与机器学习框架漏洞的触发关系,以及机器学习框架漏洞触发的共有参数;

s5:根据单一参数变化与机器学习框架漏洞的触发关系以及机器学习框架漏洞触发的共有参数,得到机器学习框架漏洞触发的api参数。

本发明机器学习框架漏洞api参数定位方法进一步的改进在于:

所述s2中变异参数组合中的单个参数的具体方法为:

当参数类型为整数类型或整数元组类型时,变异时只变异参数中的一个数的数值,且,在预设变异范围内进行选值;

当参数类型为浮点数类型时,变异时随机在该参数预设的取值范围内生成一个新的参数,且,单个浮点数类型的参数变异次数不超过预设次数;

当参数类型为布尔类型或字符串类型时,变异时随机在该参数预设的取值范围内选取一个未选取过的字符串进行赋值。

所述变异范围为参数初始值±5;所述预设次数为5次。

所述s3的具体方法为:

对参数组合中的每个参数;当参数类型为整数类型或整数元组类型时,重复s2至预设变异范围内的每个值均取一次;当参数类型为浮点数类型时,重复s2预设次数;当参数类型为布尔类型或字符串类型时,重复s2至该参数预设的取值范围内的每个字符串均选取过一次。

所述s4的具体方法为:

整合所有参数组合与对应机器学习框架漏洞的触发结果,分析机器学习框架漏洞的触发情况改变时,对应单一参数的改变情况,得到单一参数变化与机器学习框架漏洞的触发关系;选取机器学习框架漏洞触发时的所有参数组合中的共有参数,作为机器学习框架漏洞触发的共有参数。

所述s5的具体方法为:

根据单一参数变化与机器学习框架漏洞的触发关系,确定能够影响机器学习框架漏洞的触发关系的单一参数,并确定机器学习框架漏洞触发时该单一参数的值,作为第一参数;将机器学习框架漏洞触发的共有参数作为第二参数;将第一参数与第二参数集合,得到机器学习框架漏洞触发的api参数。

还包括:

s6:根据机器学习框架漏洞触发的api参数生成反馈文档,并发送反馈文档。

本发明第二方面,一种机器学习框架漏洞api参数定位系统,包括:

信息获取模块,用于获取一能够触发机器学习框架漏洞的api单层模型,并获取该api单层模型的参数组合及模型输入;

参数变异及测试模块,用于变异参数组合中的单个参数,得到变异api单层模型;采用模型输入及变异api单层模型测试机器学习框架,得到机器学习框架漏洞的触发结果;

调度模块,用于对参数组合中的每个参数,均重复触发若干次参数变异及测试模块;

数据整合模块,用于整合所有参数组合与对应机器学习框架漏洞的触发结果,得到单一参数变化与机器学习框架漏洞的触发关系,以及机器学习框架漏洞触发的共有参数;以及

参数确定模块,用于根据单一参数变化与机器学习框架漏洞的触发关系以及机器学习框架漏洞触发的共有参数,得到机器学习框架漏洞触发的api参数。

本发明第三方面,一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述机器学习框架漏洞api参数定位方法的步骤。

本发明第四方面,一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述机器学习框架漏洞api参数定位方法的步骤。

与现有技术相比,本发明具有以下有益效果:

本发明机器学习框架漏洞api参数定位方法,通过控制参数进行变异以补充测试,并且保证每次只改变一个变量,从而获取不同变量与脆弱性问题的影响关系,,这样的特性决定了本发明方法的实现简单,复杂度低,在具体测试过程中可以较为综合地反映框架api中的漏洞问题与不同参数组合的关系,最终得到的结果可信度高,可以辅助使用者进一步定位源码中的问题。再进行综合的分析,根据单一参数变化与机器学习框架漏洞的触发关系以及机器学习框架漏洞触发的共有参数,达到一定程度上定位框架漏洞api参数的目的,整个方法过程中无须过多先验知识,复杂度低,对于机器学习框架与api类型、漏洞问题的种类与测试方法均无特定的限制,可以应用在多种机器学习框架下的不同api的各种漏洞问题测试中,普适性强,能对不同机器学习框架中的各种api进行高效分析。同时,具体实现中的测试方法也非常简单,仅需知晓一个触发漏洞问题的api的模型既可开始进行测试,使得在不同机器学习框架下的大批量应用成为了可能,这对于批量漏洞定位是非常有益的。

进一步的,对api中的单个参数变异非常简单,几乎所有机器学习框架中的api均可以参与变异测试,只需要提前从官方文档中获取参数类型和大致取值范围即可。

进一步的,在对单个参数变异中,对每个参数的变异范围进行相应的设置,可以有效地获取足够的参数与漏洞问题的关联信息,且不过分冗余。

进一步的,对于变异后参数的漏洞触发结果进行的分析简单而不单一,实现时高效快捷,可以有效地分析参数与问题的触发,有效地辅助用户在源码中定位问题。

附图说明

图1为本发明一个实施例中的机器学习框架漏洞api参数定位方法流程图;

图2为本发明一个实施例中的一种api的参数配置说明及能触发机器学习框架漏洞的api单层模型的参数配置示意图;

图3为本发明一个实施例中的变异及定位结果示意图;

图4为本发明再一个实施例中的另一种api的参数配置说明及能触发机器学习框架漏洞的api单层模型的参数配置示意图;

图5为本发明再一个实施例中的变异及定位结果示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

下面结合附图对本发明做进一步详细描述:

参见图1,本发明一个实施例中,提供一种机器学习框架漏洞api参数定位方法,具体为一种基于因果测试思想的机器学习框架漏洞api参数定位方法,通过控制参数在小范围领域内进行变异以补充测试,保证每次只改变一个变量,从而获取不同变量与脆弱性问题的影响关系,再进行综合的分析,达到一定程度上定位框架漏洞api参数的目的,无须过多先验知识,复杂度低,普适性强,能对不同机器学习框架中的各种api进行高效分析的方法。具体的,该机器学习框架漏洞api参数定位方法包括以下步骤:

s1:获取一能够触发机器学习框架漏洞的api单层模型,并获取该api单层模型的参数组合及模型输入。

具体的,首先要获取一个包含漏洞问题的api单层模型,通过读取该单层模型mi,可以获取到该单层模型触发机器学习框架漏洞时的参数组合以及模型输入

s2:变异参数组合中的单个参数,得到变异api单层模型;采用模型输入及变异api单层模型测试机器学习框架,得到机器学习框架漏洞的触发结果。

具体的,将参数组合作为种子,小范围内变异其中的单个参数并重新生成模型m′i,使用同样的模型输入重新测试,记录此时机器学习框架漏洞的触发结果与变异后的参数配置其中,变异参数组合中的单个参数的具体方法如下:当参数类型为整数类型或整数元组类型时,变异时只变异参数中的一个数的数值,且,在预设变异范围内进行选值,变异范围一般为参数初始值±5;当参数类型为浮点数类型时,变异时随机在该参数预设的取值范围内生成一个新的参数,且,单个浮点数类型的参数变异次数不超过预设次数,预设次数一般为5次;当参数类型为布尔类型或字符串类型时,变异时随机在该参数预设的取值范围内选取一个未选取过的字符串进行赋值。

s3:对参数组合中的每个参数,均重复进行若干次s2。

具体的,对参数组合中的每个参数,尽可能多的进行变异。重复的终止条件为中所有参数都在整个变异范围内完成过变异并记录了机器学习框架漏洞的触发结果。此时判断是否满足了终止条件,若仍有参数未完成小范围变异,则重复s2使之完成参数变异与结果记录;若均已完成变异并记录结果,则进行下一步。可选的,当参数类型为整数类型或整数元组类型时,重复s2至预设变异范围内的每个值均取一次;当参数类型为浮点数类型时,重复s2预设次数;当参数类型为布尔类型或字符串类型时,重复s2至该参数预设的取值范围内的每个字符串均选取过一次。

s4:整合所有参数组合与对应机器学习框架漏洞的触发结果,得到单一参数变化与机器学习框架漏洞的触发关系,以及机器学习框架漏洞触发的共有参数。

具体的,分析重点主要为两类:

p1:分析机器学习框架漏洞的触发情况改变时,对应单一参数的改变情况,得到单一参数变化与机器学习框架漏洞的触发关系。即:分析机器学习框架漏洞的触发情况与每次变异的单一参数的关系,通过逐个对比变异后未触发机器学习框架漏洞的参数与原始参数的改变量,确定哪些单一参数影响了机器学习框架漏洞的表现与机器学习框架漏洞在单一参数中的具体触发范围。即p2:选取机器学习框架漏洞触发时的所有参数组合中的共有参数,作为机器学习框架漏洞触发的共有参数。即,分析机器学习框架漏洞触发时的共同参数,即对于所有变异后仍触发机器学习框架漏洞的参数组合取公共参数,如果存在公共参数使得触发机器学习框架漏洞的参数组合一定包含该参数,未触发机器学习框架漏洞的参数组合一定不包含该参数,则该参数较大概率为触发机器学习框架漏洞的潜在原因。

s5:根据单一参数变化与机器学习框架漏洞的触发关系以及机器学习框架漏洞触发的共有参数,得到机器学习框架漏洞触发的api参数。

具体的,根据单一参数变化与机器学习框架漏洞的触发关系,确定能够影响机器学习框架漏洞的触发关系的单一参数,并确定机器学习框架漏洞触发时该单一参数的值,作为第一参数;将机器学习框架漏洞触发的共有参数作为第二参数;将第一参数与第二参数集合,得到机器学习框架漏洞触发的api参数。

s6:后续还可以根据该机器学习框架漏洞触发的api参数结果进行总结与整理,生成具备简单描述的文档说明进行反馈,以便于用户进一步从源码层面确认并定位漏洞问题以作进一步修复。

参见图2,本发明再一个实施例中,以一个keras机器学习框架的常用api:conv2d为例实施本发明机器学习框架漏洞api参数定位方法。

已知一conv2d单层模型的配置参数如下:{filters=8,kernel_size=(2,2),strides=(2,2),dilation_rate=(1,1),padding=’same’,activation=’relu’},使用该配置参数在cntk机器学习框架后端上计算时会出现数值上的偏差,可以通过keras搭载的其他机器学习框架后端辅助验证。对该机器学习框架漏洞进行定位与分析,以尽可能精准地确定机器学习框架漏洞的原因与触发机器学习框架漏洞的参数组合,过程如下:

步骤1:从keras官方文档中获取conv2d的参数配置,包括每个参数的类型与大致取值范围,并从输入的模型中读取此时conv2d的参数。

步骤2:变异单个参数,根据单个参数小范围内变异的原则,依次变异filters,kernel_size,strides,dilation_rate,padding,activation等参数的值,并记录变异参数后的模型测试机器学习框架时,机器学习框架漏洞的触发结果。重复此操作直到完成所有参数的小范围内变异。

步骤3:基于记录的机器学习框架漏洞的触发结果及变异参数配,分析机器学习框架漏洞的触发条件与潜在原因。通过求取触发机器学习框架漏洞的参数组合的公共参数获取机器学习框架漏洞的潜在原因,参见图3,该实施例中,公共参数,即潜在原因,为padding=’same’;机器学习框架漏洞的触发条件可以通过对比每次对单一参数的改变以及对结果的影响得到,对结果的分析表明,strides!=1会触发机器学习框架漏洞。

步骤4:综合步骤3的分析结果,得到触发机器学习框架conv2d漏洞的参数组合为:{padding=‘same’,strides!=1},将此结果反馈给用户以辅助用户确定源码中的具体问题。

参见图4,本发明再一个实施例中,以一个keras机器学习框架中常用作激活函数的api:relu为例实施本发明机器学习框架漏洞api参数定位方法。

已知一relu单层模型的配置参数如下:{max_value=0.8,negative_slope=0.2,threshold:none},采用本发明机器学习框架漏洞api参数定位方法对于该api参数进行变异与分析,分析结果参见图5,通过分析单个参数小范围变异后的漏洞问题触发结果,可以确定问题的潜在原因为:“threshold=none”。

本发明再一个实施例中,提供了一种机器学习框架漏洞api参数定位系统,该机器学习框架漏洞api参数定位系统能够用于实现上述机器学习框架漏洞api参数定位方法,具体的,该机器学习框架漏洞api参数定位系统包括信息获取模块、参数变异及测试模块、调度模块、数据整合模块以及参数确定模块。

其中,信息获取模块用于获取一能够触发机器学习框架漏洞的api单层模型,并获取该api单层模型的参数组合及模型输入;参数变异及测试模块用于变异参数组合中的单个参数,得到变异api单层模型;采用模型输入及变异api单层模型测试机器学习框架,得到机器学习框架漏洞的触发结果;调度模块用于对参数组合中的每个参数,均重复触发若干次参数变异及测试模块;数据整合模块用于整合所有参数组合与对应机器学习框架漏洞的触发结果,得到单一参数变化与机器学习框架漏洞的触发关系,以及机器学习框架漏洞触发的共有参数;参数确定模块用于根据单一参数变化与机器学习框架漏洞的触发关系以及机器学习框架漏洞触发的共有参数,得到机器学习框架漏洞触发的api参数。

本发明再一个实施例中,提供了一种终端设备,该终端设备包括处理器以及存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于执行所述计算机存储介质存储的程序指令。处理器可能是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor、dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行一条或一条以上指令从而实现相应方法流程或相应功能;本发明实施例所述的处理器可以用于机器学习框架漏洞api参数定位方法的操作,包括:s1:获取一能够触发机器学习框架漏洞的api单层模型,并获取该api单层模型的参数组合及模型输入;s2:变异参数组合中的单个参数,得到变异api单层模型;采用模型输入及变异api单层模型测试机器学习框架,得到机器学习框架漏洞的触发结果;s3:对参数组合中的每个参数,均重复进行若干次s2;s4:整合所有参数组合与对应机器学习框架漏洞的触发结果,得到单一参数变化与机器学习框架漏洞的触发关系,以及机器学习框架漏洞触发的共有参数;s5:根据单一参数变化与机器学习框架漏洞的触发关系以及机器学习框架漏洞触发的共有参数,得到机器学习框架漏洞触发的api参数。

本发明再一个实施例中,本发明还提供了一种存储介质,具体为计算机可读存储介质(memory),所述计算机可读存储介质是终端设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括终端设备中的内置存储介质,当然也可以包括终端设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。

可由处理器加载并执行计算机可读存储介质中存放的一条或一条以上指令,以实现上述实施例中有关机器学习框架漏洞api参数定位方法的相应步骤;计算机可读存储介质中的一条或一条以上指令由处理器加载并执行如下步骤:s1:获取一能够触发机器学习框架漏洞的api单层模型,并获取该api单层模型的参数组合及模型输入;s2:变异参数组合中的单个参数,得到变异api单层模型;采用模型输入及变异api单层模型测试机器学习框架,得到机器学习框架漏洞的触发结果;s3:对参数组合中的每个参数,均重复进行若干次s2;s4:整合所有参数组合与对应机器学习框架漏洞的触发结果,得到单一参数变化与机器学习框架漏洞的触发关系,以及机器学习框架漏洞触发的共有参数;s5:根据单一参数变化与机器学习框架漏洞的触发关系以及机器学习框架漏洞触发的共有参数,得到机器学习框架漏洞触发的api参数。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1