云服务api的模糊测试方法和装置
技术领域
1.本公开涉及云服务安全测试领域,并且更为具体地,涉及一种云服务api的模糊测试方法和装置。
背景技术:2.云服务应用程序接口(application programming interface,api)的安全至关重要。为了挖掘云服务api的潜在漏洞,从而规避风险,相关技术提出了一种测试工具restler。restler能够自动化地对云服务api进行模糊测试,因此得到了广泛的应用。
3.在使用restler进行模糊测试的过程中,restler会随机为报文模块中的参数赋值,从而生成测试报文。但是,restler生成的测试报文质量较低,大量的测试报文被云服务拒绝。
技术实现要素:4.本公开提供一种云服务api的模糊测试方法和装置,以解决测试报文质量低的问题。
5.第一方面,提供一种云服务api的模糊测试方法,所述方法包括:利用第一测试报文序列对云服务api进行模糊测试,其中所述第一测试报文序列包括成功通过所述云服务api检测的目标测试报文;利用所述目标测试报文训练第一机器学习模型,其中所述第一机器学习模型用于学习所述目标测试报文中的参数和参数值的映射关系;利用训练后的所述第一机器学习模型为测试报文赋值,以生成第二测试报文序列;利用所述第二测试报文序列对云服务api进行模糊测试。
6.可选地,作为一种可能的实现方式,在所述利用第一测试报文序列对云服务api进行模糊测试之前,所述方法还包括:从第一报文模板序列集中选择第一报文模板序列;为所述第一报文模板序列中的参数赋值,得到所述第一测试报文序列。
7.可选地,作为一种可能的实现方式,所述从第一报文模板序列集中选择第一报文模板序列,包括:从所述第一报文模板序列集中选择所述第一报文模板序列,使得所述第一报文模板序列集中的长度较长的报文模板序列具有较高的被选择概率。
8.可选地,作为一种可能的实现方式,在所述从第一报文模板序列集中选择第一报文模板序列之前,所述方法还包括:延长第二报文模板序列集中的各个报文模板序列,得到所述第一报文模板序列集。
9.可选地,作为一种可能的实现方式,所述第一报文模板序列是基于能量分配算法从所述第一报文模板序列集中选择的。
10.可选地,作为一种可能的实现方式,所述第一机器学习模型为基于rnn的注意力模型。
11.第二方面,提供一种云服务api的模糊测试装置,所述装置包括:第一测试模块,用于利用第一测试报文序列对云服务api进行模糊测试,其中所述第一测试报文序列包括成
功通过所述云服务api检测的目标测试报文;训练模块,用于利用所述目标测试报文训练第一机器学习模型,其中所述第一机器学习模型用于学习所述目标测试报文中的参数和参数值的映射关系;第一生成模块,用于利用训练后的所述第一机器学习模型为测试报文赋值,以生成第二测试报文序列;第二测试模块,用于利用所述第二测试报文序列对云服务api进行模糊测试。
12.可选地,作为一种可能的实现方式,所述装置还包括:第一选择模块,用于在所述利用第一测试报文序列对云服务api进行模糊测试之前,从第一报文模板序列集中选择第一报文模板序列;第二生成模块,用于为所述第一报文模板序列中的参数赋值,得到所述第一测试报文序列。
13.可选地,作为一种可能的实现方式,所述第一选择模块用于从所述第一报文模板序列集中选择所述第一报文模板序列,使得所述第一报文模板序列集中的长度较长的报文模板序列具有较高的被选择概率。
14.可选地,作为一种可能的实现方式,所述装置还包括:第二选择模块,用于在所述从第一报文模板序列集中选择第一报文模板序列之前,延长第二报文模板序列集中的各个报文模板序列,得到所述第一报文模板序列集。
15.可选地,作为一种可能的实现方式,所述第一报文模板序列是基于能量分配算法从所述第一报文模板序列集中选择的。
16.可选地,作为一种可能的实现方式,所述第一机器学习模型为基于rnn的注意力模型。
17.第三方面,提供一种云服务api的模糊测试装置,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器被配置为执行所述可执行代码,以实现如第一方面所述的方法。
18.第四方面,提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
19.第五方面,提供一种计算机程序产品,包括可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
20.本公开实施例提供了一种云服务api的模糊测试方法和装置,利用成功通过云服务api检测的报文中的参数和参数值,训练机器学习模型,并利用训练后的机器学习模型为测试报文赋值。也就是说,本公开实施例从成功通过云服务api检测报文中学习测试报文中的参数的赋值规律,与相关技术采用的随机赋值方式相比,能够提高测试报文质量,从而提高测试报文的通过率。
附图说明
21.图1是相关技术提供的云服务api的测试流程图。
22.图2是本公开一实施例提供的云服务api的模糊测试方法的流程示意图。
23.图3是本公开一实施例提供的一种报文序列的构造方法的流程示意图。
24.图4是图3中的步骤s310和步骤s320的一种可能的实现方式的流程示意图。
25.图5是本公开另一实施例提供的云服务api的模糊测试方法的流程示意图。
26.图6是本公开一实施例提供的云服务api的测试装置的结构示意图。
27.图7是本公开另一实施例提供的云服务api的测试装置的结构示意图。
28.图8是本公开又一实施例提供的云服务api的测试装置的结构示意图。
具体实施方式
29.下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本公开一部分实施例,而不是全部的实施例。
30.近十年间,云服务的发展很迅猛。云服务通常布置在由云供应商提供的云计算平台上,例如亚马逊网络服务器(amazon web services)、微软azure以及阿里巴巴云服务等。云服务通过互联网向用户提供软件即服务(software as a service,saas),平台即服务(platform as a service,paas)等服务,从而使得用户在享受这些服务的同时,无需在本地安装相关软件。
31.云服务api是云服务提供商提供的与外部程序进行交互的接口。云服务api接口的类型有多种。目前被广泛使用的云服务api称为rest api。rest为表述性状态转移(representational state transfer)的缩写,描述的是一种api的架构风格。
32.云服务api允许用户以编程的方式访问云服务器。因此,云服务api的安全至关重要。例如,一个错误的api访问可能造成线程的崩溃,并最终导致云服务崩溃、控制权限的错误访问和隐私数据泄露。
33.为了提高云服务的安全性,开发人员通过测试api来挖掘云服务的漏洞。传统的方法是利用人工定义的规则和已捕获的api报文作为模板,生成测试目标云服务的报文。但是,该方法依赖大量人工工作,效率非常低下。近期,微软针对rest api开发出了一种测试工具。该测试工具称为restler。restler能够自动化对云服务api进行模糊测试。具体而言,在对某个云服务api进行模糊测试的过程中,restler可以自动生成和发送该云服务api的测试报文序列(如http/https报文序列)。如果该测试报文序列触发了云服务的异常行为,则restler会将该报文序列保存在本地,用以调试云服务api存在的漏洞。
34.为了便于理解,下面结合图1,以restler为例,对相关技术提供的云服务api的自动化测试方式进行更为具体的举例说明。
35.参见图1,在步骤s110,获取api的接口描述文件。例如,restler可以从云服务的目标rest api中得到一组接口描述文件。
36.在步骤s120,生成模糊测试语法模板。restler可以基于接口描述文件生成一个模糊测试语法模板,其中包含每一报文的模板以及报文中每一参数的候选值,因此可以指导报文的生成。
37.在步骤s130,推测报文之间的依赖关系,生成报文序列。基于模糊测试语法模板,restler可以推测不同类型报文之间的依赖关系,并生成报文序列。例如,插入成员到一个组里,需要先创建相应的组,因此在报文序列中插入报文必须在创建报文之后执行。需要说明的是,restler每次都是生成一个新的报文序列。
38.在步骤s140,发送报文序列,进行测试。restler按生成的报文序列对目标云服务进行测试,发送序列中的第一报文,得到响应后再发送第二报文。例如,restler先通过api发送创建组的报文,云服务会响应创建的组的id;restler会将得到的id信息加入插入组员的报文中,再向api进行发送并等待响应。
39.在步骤s150,接收响应,保存触发异常行为的报文序列。云服务的异常行为有多种,例如返回500error返回值、资源泄漏的漏洞以及释放后使用的漏洞等。restler将触发异常行为的报文序列保存在本地,可以用于后续的异常分析。
40.相比传统方法,restler按照上述步骤发送报文序列,实现了自动化探索云服务状态的功能,并可以探测目标云服务api的潜在漏洞。例如,restler可以探索易触发的云服务状态,也可以通过推测报文之间的依赖关系探索更难触发的云服务状态。
41.然而,restler在探测潜在漏洞的过程中存在两个关键缺陷,一是生成的报文质量低,二是构造的报文序列长度短。
42.如前文所述,restler生成的模糊测试语法模板中包含报文每一参数的候选值,在生成报文的过程中,参数值是在候选值中随机选取的,在一些关键参数中存在提供错误候选值的情况,导致报文质量低。这些包含错误候选值的报文被发送到api中,得到400bad request的返回值,成为被云服务拒绝的无效报文。例如,报文中某个参数的参数值要求是0或1,restler可能将候选值中的-100对该参数进行赋值,测试无效。因此restler生成的报文质量低,大量报文被云服务拒绝,从而导致测试效率低。
43.另一方面,restler构造报文序列是从空序列开始的,通过加入报文不断延长序列。正如前文所说的,restler每次都是生成一个新的报文序列,然后重新生成序列中的每一报文并按序列测试目标云服务api。若序列中的报文触发了云服务api的异常返回值,执行步骤s150。若序列中有报文如前文被云服务拒绝,则将重新从空序列开始构造报文序列。由于restler生成的报文质量低,使报文序列重新构造的比例提升,且每次都是从空序列开始,因此实际使用中restler构造的报文序列长度短,难以生成复杂报文序列实现对云服务的深层探索,同样使模糊测试的测试效率偏低。
44.综上,目前学术界与工业界在对云服务api的测试中,都缺少合适的生成测试报文并构建较长报文序列的方法,导致测试效率比较低。
45.为了解决上述问题中的一个或多个,本公开实施例提出了一种云服务api的模糊测试方法。应理解,这里以及后文提到的云服务api可以是任意格式或风格的云服务api。作为一个示例,该云服务api可以是前文提到的rest api。
46.下面结合图2至图4,对本公开实施例提供的云服务api的模糊测试方法进行详细地举例说明。
47.参见图2,在步骤s210,利用第一测试报文序列对云服务api进行模糊测试。
48.第一测试报文序列可以包括一个或多个测试报文。该一个或多个测试报文可以是具有依赖关系的测试报文,换句话说,该一个或多个报文可以是按照一定序列排序的测试报文。在测试过程中,可以将该第一个或多个测试报文按序发送至云服务api,以对所述云服务api进行模糊测试。
49.第一测试报文序列可以包括成功通过云服务api检测的测试报文。所谓“成功通过云服务api检测的测试报文”例如可以指该测试报文的参数的取值符合要求,能够被云服务api识别。为了便于描述,本公开实施例将“成功通过云服务api检测的测试报文”称为目标测试报文。
50.在一些实施例中,一个测试报文是否为目标测试报文,可以基于云服务api针对该测试报文的响应或返回值确定。作为一个示例,针对一个测试报文,如果云服务api的响应
或返回值为400bad request,则表示云服务api并未识别出该测试报文,因此,该测试报文并非目标测试报文。作为另一示例,针对一个测试报文,如果云服务api的响应或返回值为正常的返回值200,或探测到云服务异常行为的500error,则表示该测试报文通过了云服务api的检测,因此,该测试报文即可作为本公开实施例提及的目标测试报文。
51.在步骤s220,利用目标测试报文训练第一机器学习模型。
52.第一机器学习模型可以是能够实现对测试报文赋值的任意类型的机器学习模型。在一些实施例中,第一机器学习模型可以是注意力模型。注意力模型可以基于循环神经网络(recurrent neural network,rnn)进行构造,也可以基于其他神经网络进行构造。使用rnn构造注意力模型,可以实现序列化地生成元组,直至到达最大长度或输出终止字符结束。
53.第一机器学习模型可以通过学习目标测试报文的参数和参数值,完成模型训练。例如,第一机器学习模型可以学习参数和参数值的映射关系,也可以学习报文中参数的赋值规律。在目标测试报文通过云服务api检测后,记录目标测试报文的参数和参数值,将其作为第一机器学习模型的训练集中的训练数据。在一些实施例中,参数值可以是模糊测试中变异后的参数值,也可以是第一机器学习模型引导的参数值。
54.第一机器学习模型的训练时机是可以根据测试情况调整的。例如,可以在测试的过程中进行训练,或者在收集多次目标测试报文的参数和参数值后进行训练。在一些实施例中,周期性地执行注意力模型训练过程,采用收集到的训练集对注意力模型进行微调训练,实现注意力模型的性能提升,优化报文生成质量。
55.在步骤s230,利用训练后的第一机器学习模型为测试报文赋值,以生成第二测试报文序列。
56.在一些实施例中,将报文名作为第一机器学习模型的输入,模型输出需要执行修改的参数、参数值组成的序列。例如,第一机器学习模型的输入为报文名的向量化数值,输出为元组(参数名,参数值)的向量值。
57.如果第一机器学习模型没有输出报文参数对应的参数值,也就是说,如果报文中存在未赋值的参数名,可以从候选值中随机选取一个值作为该参数名的参数值。例如,在测试开始时,第一机器学习模型的训练集状态为空,或者在测试过程中有一些参数名对应的参数值还未训练出结果。在一些实施例中,候选值是在测试前就由测试人员根据经验设定的,可以按候选值集合的形式进行储存。
58.在步骤s240,利用第二测试报文序列对云服务api进行模糊测试。步骤s240同步骤s210,在此不再赘述。
59.通过图2的实施步骤,本公开实施例可以收集成功通过云服务api检测的参数和参数值,训练第一机器学习模型。训练后的第一机器学习模型可以为报文的关键参数提供合适的参数值。因此报文质量提升,报文通过云服务api检测的比例提高,从而提升了模糊测试的效率。
60.如前文提到的,restler还存在报文序列长度短的问题。报文质量的提升,可以在一定程度上延长通过api检测的报文序列长度。但是,因为restler每次都是从空序列开始构造报文序列,难以生成复杂报文序列,仍然不利于实现对云服务api的深层探索。例如,在一个测试报文序列中,第四个报文返回400bad request返回值,restler将不记录前三个报
文的序列,而是重新从空序列开始生成新的测试序列。
61.为了解决这个问题,本公开实施例提供了一种构造测试报文序列的方法,可以实现更多地使用长报文序列对云服务api进行测试。
62.下面结合图3和图4,对本公开实施例提供的报文序列的构造方法进行详细地说明。
63.参见图3,在步骤s310,延长第二报文模板序列集中的各个报文模板序列,得到第一报文模板序列集。
64.报文模板序列可以由成功触发目标云服务api正常反馈的测试报文序列得到。如果一个测试报文序列内的报文为目标测试报文,则认为该报文序列成功触发云服务api的正常反馈。
65.报文模板序列可以包括一个或多个报文模板。该报文模板可以至少包含目标测试报文的一部分数据。该一个或多个报文模板可以按目标测试报文在测试报文序列中的顺序排列。在一些实施例中,报文模板序列可以是将测试报文序列中的报文头按顺序进行保存,也可以保存更多的数据。
66.延长报文模板序列,可以是指对报文模板序列进行增加报文模板的操作。在一些实施例中,通过在每一序列的末尾增加新的报文模板来实现报模板文序列的延长。
67.延长每一个报文模板序列,可以得到第一报文模板序列集。在一些实施例中,第二报文模板序列集的初始状态为空,通过收集报文模板序列不断更新第二报文模板序列集。每次更新后,都对第二报文模板序列集中的每一个序列执行延长操作,从而得到第一报文模板序列集。
68.在步骤s320,从第一报文模板序列集中选择第一报文模板序列。第一报文模板序列集中的各个报文模板序列长度不同,且测试报文多样,可以作为选择报文模板序列的候选集。
69.第一报文模板序列可以依据多种方式进行选择。作为一个示例,可以在第一报文模板序列集中随机进行选择。随机选择可以实现测试的多样性,但不同长度的报文模板序列的选择概率基本一致,不能解决对云服务api深层探索的问题。
70.作为另一个示例,可以选择第一报文模板序列集中最长的报文模板序列。如果只选择长度最大的报文模板序列作为第一报文模板序列,不能保证测试的多样性。
71.作为又一个示例,可以给第一报文模板序列集中的报文模板序列分配不同的选择概率。例如,依据报文模板序列的长度进行概率分配,使得长度较长的报文模板序列具有较高的被选择概率。根据每一序列的长度,概率性地筛选集合中的报文模板序列,可以同时满足测试的多样性和复杂性。
72.图4是实现概率性选择报文模板序列的流程示意图,结合图4对其进行详细说明。
73.参见图4,步骤s410与步骤s310一致,在此不再赘述。
74.在步骤s420,分配序列的选择概率。第一报文模板序列集中包含至少一个报文模板序列。对不同报文模板序列分配不同的选择概率,可以是依据报文模板序列的长度进行分配,也可以是依据报文模板序列第一个报文进行分配。
75.在一些实施例中,基于每一报文模板序列的长度,通过能量分配算法对第一报文模板序列集进行筛选。例如,使用与长度相关的数学函数作为每一报文模板序列的选择概
率分布,使长度较长的序列具有较高的概率,实现不同长度报文序列的选择概率分配。
76.在步骤s430,根据概率选择序列,从而得到第一报文模板序列。基于步骤s420分配的选择概率,较长的报文模板序列具有更高的被选择概率,因此第一报文模板序列长度较大的概率较高。
77.图4是图3中的步骤s310和步骤s320的一种可能的实现方式。通过图3的步骤s310和步骤s320,得到第一报文模板序列。
78.在步骤s330,为第一报文模板序列中的参数赋值,得到第一测试报文序列。该第一测试报文序列为前文所述的步骤s210中,对云服务api进行模糊测试的第一测试报文序列。具体参数赋值过程同步骤s230,在此不再赘述。
79.下面结合具体例子图5,更加完整地描述本公开实施例。应注意,图2至图4的例子仅仅是为了帮助本领域技术人员理解本公开实施例,而非要将本公开实施例限于所例示的具体数值或具体场景。本领域技术人员根据所给出的图2至图4的例子,显然可以进行各种等价的修改或变化,这样的修改或变化也落入本公开实施例的范围内。
80.图5是本公开另一实施例提供的一种云服务api的模糊测试方法,描述了基于能量分配算法与注意力模型的云服务api模糊测试的数据驱动变异策略。应理解,注意力模型是第一机器学习模型一种可能实现的方式,能量分配算法是选择报文模板序列的一种可能实现的方式,都可以进行等价的修改或变化。
81.参见图5,在步骤s510,注意力模型初始化。在测试初期,创建测试用的注意力模型结构,初始化模型中的参数值。
82.在步骤s520,报文模板序列选择。如前文所述,可以根据每一序列的长度,概率性地从第一报文模板序列集中进行选择第一报文模板序列。基于能量分配算法,使长度较大的序列被选择的概率更大。因此,较长的报文模板序列具有较高的使用次数,从而提升对目标云服务api的复杂操作的测试次数。
83.在步骤s530,报文生成。选取好第一报文模板序列后,基于注意力模型实现对序列中每一报文的参数进行赋值。具体地,将报文名作为注意力模型的输入,模型输出参数名、参数值组成的序列。根据模型的输出值,对报文中的参数名填入对应参数值。对于其它没有填写值的参数名,随机选取一个候选参数值。完成第一报文模板序列中的每一报文的生成过程,以生成测试报文序列。
84.在步骤s540,模糊测试。按照步骤s530生成的测试报文序列,顺序地将序列中的每一报文发送给云服务api,进行模糊测试。在一些实施例中,模糊测试过程对报文中参数的变异操作可以是按设定的比例实施的,也可以是根据模型的训练情况进行动态调整的。例如,设定参数变异的比例为50%,在生成的报文中将有50%的参数值执行变异操作,其余50%则保留模型引导的参数值。
85.在步骤s550,数据收集。在测试过程中,对每一报文的反馈信息进行分析,根据每一报文的返回值判断报文是否通过云服务api的检测。若报文通过云服务api的检测并返回正确的返回值,记录执行变异操作的参数名与变异后的参数值,将其作为注意力模型的训练集。若一个报文序列中有报文通过云服务api的检测,该报文序列成功触发了目标云服务api的正常反馈,将其对应的报文模板序列保存到报文模板序列集中。
86.在步骤s560,模型训练。步骤s510得到注意力模型的初始化状态。利用步骤s550收
集到的训练集,执行注意力模型的微调训练过程,使得注意力模型可以针对不同报文提供更合适的参数值,用以指导变异过程,从而提升报文通过云服务检测的概率。
87.在步骤s570,漏洞收集。漏洞可以是在步骤s540中触发的云服务api的错误或其它异常行为的情况,收集漏洞用于后续对云服务api的分析和修复。
88.周期性地执行步骤s520至步骤s560,对云服务api进行测试,直至模糊测试结束。
89.根据步骤s510至步骤570所示的模糊测试方法,可以针对每一个被测的目标云服务api,通过数据驱动的方式获取有效的报文模板序列与注意力模型的训练集,提升在每一目标云服务api上的模糊测试效率。
90.综上,针对生成报文质量低,大量无效报文被云服务拒绝的问题,本公开实施例基于模型学习的方法提升报文的有效率。收集和记录历史数据中的通过云服务api检测的报文,利用这些报文的数据集和注意力模型生成对应于报文名的(参数名,参数值)元组集合,作为测试报文的候选值。本公开实施例尽可能规避无效参数、参数值对报文质量的影响,减小报文在生成过程中的搜索空间,提高了测试的效率。同时,本公开实施例所需的算力开销极小,可以保证对云服务api的漏洞挖掘效率的高效性。在多个云服务api上的测试结果表明,与现有工作相比,本方案能提升报文10%-30%的有效率。
91.针对构造的报文序列长度短,难以生成复杂报文序列实现深层探索的问题,本公开实施例收集通过云服务api检测的报文序列,作为后续生成的报文模板序列,并基于能量分配算法优化序列构造。在报文模板序列选择过程中,本公开实施例通过能量分配算法概率性地选用不同长度的报文模板序列,使长度较大的序列被选择的概率更大。由于长序列能够包含短序列,现有工作的序列集合可以视为本公开实施例序列集合的一个子集。本公开实施例更多地使用复杂报文组合去测试目标云服务api,实现对云服务api复杂行为的测试,增加漏洞挖掘的能力。
92.上文结合图2至图5,详细描述了本公开的方法实施例,下面结合图6至图8,详细描述本公开的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
93.图6是本公开一实施例提供的云服务api的测试装置的结构示意图。图6的测试装置600包括第一测试模块610,训练模块620,第一生成模块630和第二测试模块640。下面对这些模块进行详细介绍。
94.第一测试模块610可利用第一测试报文序列对云服务api进行模糊测试,其中第一测试报文序列包括成功通过云服务api检测的目标测试报文。
95.训练模块620可利用目标测试报文训练第一机器学习模型,其中第一机器学习模型用于学习目标测试报文中的参数和参数值的映射关系。
96.第一生成模块630可利用训练后的第一机器学习模型为测试报文赋值,以生成第二测试报文序列。
97.第二测试模块640可利用第二测试报文序列对云服务api进行模糊测试。
98.可选地,在一些实施例中,测试装置600还包括第一选择模块和第二生成模块(图6中未示出)。
99.第一选择模块可在利用第一测试报文序列对云服务api进行模糊测试之前,用于从第一报文模板序列集中选择第一报文模板序列。
100.第二生成模块可用于为第一报文模板序列中的参数赋值,得到第一测试报文序列。
101.可选地,在一些实施例中,第一选择模块从第一报文模板序列集中选择第一报文模板序列,使得第一报文模板序列集中的长度较长的报文模板序列具有较高的被选择概率。
102.可选地,在一些实施例中,测试装置600还包括第二选择模块(图6中未示出)。
103.第二选择模块可在从第一报文模板序列集中选择第一报文模板序列之前,用于延长第二报文模板序列集中的各个报文模板序列,得到第一报文模板序列集。
104.可选地,在一些实施例中,第一报文模板序列是基于能量分配算法从第一报文模板序列集中选择的。
105.可选地,训练模块620中的第一机器学习模型为基于rnn的注意力模型。
106.图7是本公开另一实施例提供的测试装置的结构示意图。图7所示的测试装置700包括注意力模型初始化模块710,报文模板选择模块720,生成模块730,测试模块740,数据收集模块750,训练模块760和漏洞收集模块770。所述各模块可用于执行图5中相应方法的各个步骤,在此不再赘述。
107.图8是本公开又一实施例提供的测试装置的结构示意图。图8所示的测试装置800可以是能够执行云服务api模糊测试的任意网络节点。该装置800例如可以是具有计算功能的计算设备。比如,装置800可以是移动终端或者服务器。装置800可以包括存储器810和处理器820。存储器810可用于存储可执行代码。处理器820可用于执行所述存储器810中存储的可执行代码,以实现前文描述的各个方法中的步骤。在一些实施例中,该装置800还可以包括网络接口830,处理器820与外部设备的数据交换可以通过该网络接口830实现。
108.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,dvd))、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
109.本领域普通技术人员可以意识到,结合本公开实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
110.在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
111.所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
112.另外,在本公开各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
113.以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
技术特征:1.一种云服务api的模糊测试方法,所述方法包括:利用第一测试报文序列对云服务api进行模糊测试,其中所述第一测试报文序列包括成功通过所述云服务api检测的目标测试报文;利用所述目标测试报文训练第一机器学习模型,其中所述第一机器学习模型用于学习所述目标测试报文中的参数和参数值的映射关系;利用训练后的所述第一机器学习模型为测试报文赋值,以生成第二测试报文序列;利用所述第二测试报文序列对云服务api进行模糊测试。2.根据权利要求1所述的方法,在所述利用第一测试报文序列对云服务api进行模糊测试之前,所述方法还包括:从第一报文模板序列集中选择第一报文模板序列;为所述第一报文模板序列中的参数赋值,得到所述第一测试报文序列。3.根据权利要求2所述的方法,所述从第一报文模板序列集中选择第一报文模板序列,包括:从所述第一报文模板序列集中选择所述第一报文模板序列,使得所述第一报文模板序列集中的长度较长的报文模板序列具有较高的被选择概率。4.根据权利要求3所述的方法,在所述从第一报文模板序列集中选择第一报文模板序列之前,所述方法还包括:延长第二报文模板序列集中的各个报文模板序列,得到所述第一报文模板序列集。5.根据权利要求3所述的方法,所述第一报文模板序列是基于能量分配算法从所述第一报文模板序列集中选择的。6.根据权利要求1所述的方法,所述第一机器学习模型为基于rnn的注意力模型。7.一种云服务api的模糊测试装置,所述装置包括:第一测试模块,用于利用第一测试报文序列对云服务api进行模糊测试,其中所述第一测试报文序列包括成功通过所述云服务api检测的目标测试报文;训练模块,用于利用所述目标测试报文训练第一机器学习模型,其中所述第一机器学习模型用于学习所述目标测试报文中的参数和参数值的映射关系;第一生成模块,用于利用训练后的所述第一机器学习模型为测试报文赋值,以生成第二测试报文序列;第二测试模块,用于利用所述第二测试报文序列对云服务api进行模糊测试。8.根据权利要求7所述的装置,所述装置还包括:第一选择模块,用于在所述利用第一测试报文序列对云服务api进行模糊测试之前,从第一报文模板序列集中选择第一报文模板序列;第二生成模块,用于为所述第一报文模板序列中的参数赋值,得到所述第一测试报文序列。9.根据权利要求8所述的装置,所述第一选择模块用于从所述第一报文模板序列集中选择所述第一报文模板序列,使得所述第一报文模板序列集中的长度较长的报文模板序列具有较高的被选择概率。10.根据权利要求9所述的装置,所述装置还包括:第二选择模块,用于在所述从第一报文模板序列集中选择第一报文模板序列之前,延
长第二报文模板序列集中的各个报文模板序列,得到所述第一报文模板序列集。11.根据权利要求9所述的装置,所述第一报文模板序列是基于能量分配算法从所述第一报文模板序列集中选择的。12.根据权利要求7所述的装置,所述第一机器学习模型为基于rnn的注意力模型。13.一种云服务api的模糊测试装置,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器被配置为执行所述可执行代码,以实现权利要求1-6中任一项所述的方法。
技术总结本公开披露了一种云服务API的模糊测试方法和装置。所述方法包括:利用第一测试报文序列对云服务API进行模糊测试,其中所述第一测试报文序列包括成功通过所述云服务API检测的目标测试报文;利用所述目标测试报文训练第一机器学习模型,其中所述第一机器学习模型用于学习所述目标测试报文中的参数和参数值的映射关系;利用训练后的所述第一机器学习模型为测试报文赋值,以生成第二测试报文序列;利用所述第二测试报文序列对云服务API进行模糊测试。试。试。
技术研发人员:纪守领 吕晨阳 许嘉诚 刘向阳 曹伟
受保护的技术使用者:支付宝(杭州)信息技术有限公司
技术研发日:2022.04.11
技术公布日:2022/7/5