CN113704078A - 构建调用链转换图及引导生成x.509证书变种方法 - Google Patents

构建调用链转换图及引导生成x.509证书变种方法 Download PDF

Info

Publication number
CN113704078A
CN113704078A CN202010434699.8A CN202010434699A CN113704078A CN 113704078 A CN113704078 A CN 113704078A CN 202010434699 A CN202010434699 A CN 202010434699A CN 113704078 A CN113704078 A CN 113704078A
Authority
CN
China
Prior art keywords
node
test
call chain
variant
test case
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010434699.8A
Other languages
English (en)
Other versions
CN113704078B (zh
Inventor
朱佳宇
陈雨亭
沈备军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN202010434699.8A priority Critical patent/CN113704078B/zh
Publication of CN113704078A publication Critical patent/CN113704078A/zh
Application granted granted Critical
Publication of CN113704078B publication Critical patent/CN113704078B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种构建调用链转换图及引导生成X.509证书变种方法,通过构建测试种子集并输入目标测试程序,得到动态执行中的函数调用链信息并映射为调用链转换图中的初始节点;循环对调用链转换图中的取样节点通过变种算子生成新的变种测试用例并根据变种测试用例对应更新调用链转换图,直至生成目标数量的测试用例。本发明充分利用了测试用例集生成过程中的函数调用链信息,通过调用链转换图有效快速的生成多样化的测试用例,从而提升测试的效率。

Description

构建调用链转换图及引导生成X.509证书变种方法
技术领域
本发明涉及的是一种软件测试领域的技术,具体是一种通过收集程序动态执行时的函数调用链以构建调用链转换图引导X.509证书自动生成变种技术,用来测试openssl等实现SSL/TLS安全协议软件。
背景技术
模糊测试作为黑盒测试中的一种常用软件测试方法,通过向测试程序中发送非预期的测试用例来观查程序是否发生异常,从而找到潜在漏洞。一般有两种生成方法:一种将已有的测试用例通过变种算子产生新的测试用例,所产生的新的测试用例称之为变种,保留了原测试用例大部分的数据,仅部分数据经过变换和原先不同。变种算子可以是随机置换,即随机交换原测试用例中的部分数据或根据具体应用场景自定义,有目的性和引导性的增删改替换原测试用例中的部分数据。测试工具有proxyfuzz等;另一种根据目标程序的测试覆盖情况来调整生成新的测试用例,测试工具有AFL等。大部分模糊测试会采取两种相结合的方法,以便应用于复杂数据类型输入的测试中,诸如X.509证书等。X.509证书作为SSL/TLS通信协议中用于加密验证的重要实体,其测试的重要性不言而喻。
Mucert作为针对X.509证书测试场景的工具,测试目标待测软件关于证书验证的功能,采用了覆盖率引导的模糊测试方法,将现实中的X.509证书作为初始种子集,自定义37种变种算子以生成变种测试用例。在生成变种的过程中,使用测试用例在目标待测程序中的累计覆盖率信息概率性的接收或拒绝变种以提高目标待测程序的累计覆盖率。累计覆盖率一般表示测试的充分性,即待测程序在执行中语句函数等的覆盖情况,但无法用来衡量测试集在目标程序中执行路径的多样性。若仅考虑测试用例集的充分性而不考虑其在目标测试程序中的执行路径,则对于那些在测试程序中执行路径一致的测试用例,其测试效果是一致的,这将会导致测试用例冗余,多样性不高。
发明内容
本发明针对现有技术存在的上述不足,提出一种构建调用链转换图及引导生成X.509证书变种方法,提取测试用例在目标程序运行时收集到的函数名称,将函数名称根据执行时的先后顺序形成一条链,即函数调用链,将测试用例集和对应的函数调用链映射构建成调用链转换图,并使用调用链转换图指导生成新的变种测试用例过程来实现测试用例的自动生成。本发明相比较mucert,充分利用了测试用例集生成过程中的函数调用链信息,通过调用链转换图有效快速的生成多样化的测试用例,从而提升测试的效率。
本发明是通过以下技术方案实现的:
本发明通过构建测试种子集并输入目标测试程序,得到动态执行中的函数调用链信息并映射为调用链转换图中的初始节点;循环对调用链转换图中的取样节点通过变种算子生成新的变种测试用例并根据变种测试用例对应更新调用链转换图,直至生成目标数量的测试用例。
所述的映射是指:调用链转换图中的节点和测试用例对应,图的一个节点是一个测试用例集合,该测试用例集合中的任意一个测试用例在目标测试程序上得到的函数调用链是一致的。
所述的取样是指:通过计算潜力值并挑选节点和节点中的测试用例以用于生成变种。
所述的变种是指:对一个现有的测试用例进行修改生成一个新的测试用例,其实现方式视具体的测试场景而言,可自定义具体的变种方式也可对接已有的模糊测试工具如AFL对测试用例进行修改而生成新的测试用例。在针对X.509证书测试的应用场景中,变种算子可采用mucert工具中提供的变种方法。
所述的更新调用链转换图是指:以更新后的变种测试用例作为输入得到目标测试程序运行时的函数调用链,更新中间文件并映射为转换图中的新节点,构造一条调用链转换图中取样节点和新节点之间的边并更新取样节点所有边的权值。
技术效果
本发明整体解决已有模糊测试工具无法定量衡量测试用例集的多样性以及由于不考虑测试用例的多样性而导致生成大量冗余测试用例从而使得测试效率低下的问题。本发明通过调用链转换图可以定量衡量测试用例集的多样性,同时由于图中每个节点中的测试用例在测试目标上的函数调用链等同,即意味着在测试目标上的测试效果也相同,可以减少其他模糊测试工具随机对测试用例进行修改生成变种导致大量冗余的测试用例生成。此外,通过调用链转换图引导生成变种过程比起随机生成变种更具有导向性,能生成更多触发不同有效的执行路径的测试用例。
本发明旨在通过调用链转换图来定量度量测试集的多样性,并将其用于指导生成变种测试用例过程,提高测试用例集的多样性,从而提升测试的效率,可应用于诸如X.509证书测试等场景。
附图说明
图1为函数调用链信息映射为转换图的节点示意图;
图中:a)函数调用链信息,b)调用链信息转为hash值,c)调用链信息以及对应测试用例映射为节点;
图2为基于调用链转换图引导X.509证书生成变种的框架;
图3为实施例调用链转换图。
具体实施方式
如图2所示,为本实施例涉及一种构建调用链转换图并用以引导X.509证书自动变种用以测试的方法,通过收集初始测试种子集合在目标待测程序上的函数调用链,中间文件动态记录调用链hash值和对应的测试用例集合,并映射为转换图中的一个节点,随后迭代在图中采样,选取图中一个节点的一个测试用例,通过变种算子生成新的变种测试用例,收集其在目标测试程序上的调用链更新图和测试用例集。
如图3所示,为调用链转换图的实例,其中调用链转换图是带权重的有向图G=(V,E,W),其中:V为节点集合,每个节点映射为对应的函数调用链hash值,当两个测试用例同属于一个节点,则对应的函数调用链hash值相同,说明其在目标测试程序上的执行路径相同;E为调用链转换边的集合,当一个节点为u,另一个节点为v,u中的一个测试用例在进行变种后得到一个属于节点v的测试用例,则得到一条从节点u指向节点v的边,用u->v来标记,则整个边集合为
Figure BDA0002501798250000031
w为边上的权重集合,使用w=weight(u->v)表示在给定节点u的情况下得到指向v节点的概率,从节点u出发的所有边的权重和为1,即
Figure BDA0002501798250000032
本实施例自动变种方法迭代进行,包括:构建并初始化调用链转换图、利用调用链转换图指导生成变种过程并更新转换图,持续迭代直至生成目标数量的测试用例,具体包括:
步骤1)构建并初始化调用链转换图:获取测试用例种子集,使用工具etrace将初始种子集作为输入获取目标程序运行过程中的函数调用链,并使用MD5编码为定长字符串并映射为调用链转换图中的节点;初始化用于动态维护每个散列值和对应的测试用例编号的中间文件后,记录每个节点的hash值和对应的测试用例集合。
步骤2)利用调用链转换图指导变种过程生成新的测试用例:使用潜能函数计算每个节点的潜力值
Figure BDA0002501798250000033
其中:Out(n)表示节点n的出度,Mutate(n)表示节点n被选中进行变种的次数,在每个节点按照潜力值降序存进队列后,再从队列中选取序号为k的节点,
Figure BDA0002501798250000034
其中:|array|表示数组的大小,rand为0-1的随机数,ε的值的含义是图中每个节点都没有被选中的概率,设为一个很小的值,其一般选为0.05。随机选取选中节点中的一个测试用例通过变种算子进行修改以生成变种。
所述的变种算子根据目标测试程序自定义,将根据变种算子修改后生成的变种测试用例添加回测试集中。
所述的变种是指:通过变种算子修改一个测试用例以生成一个新的测试用例,其变种算子视具体的测试场景自定义或者使用现有的工具如AFL。在X.509证书测试场景中可以使用mucert工具中提供的变种操作。
通过上述步骤可以触发更多的执行路径,基于某些节点更容易触发生成新的节点,因而选中的概率需要更高一些。
步骤3)更新调用链转换图:收集新生成的变种测试用例在目标程序运行时的函数调用链,将函数调用链映射为调用链转换图中的一个节点;迭代取样调用链转换图中的节点并选取节点中的测试用例生成变种,根据变种测试用例在目标测试程序中的函数调用链映射为图中的新节点,动态添加原测试用例映射节点和变种映射节点中的边和更新边的权值,直至生成目标数量的证书测试用例,并输入待测程序进行测试,具体为:当该节点不存在于原先的调用链转换图中,则在图中添加新的节点。记变种测试用例对应的原测试用例所映射的节点为A,新生成的变种测试用例映射的节点为B,在转换图中添加一条从A指向B的有向边,最后将变种测试用例添加回测试集中。
所述的添加一条从A指向B的有向边,即由节点A指向节点B的边,同时从节点A出发的边上的权重需要更新,则节点A被选中进行变种次数为T1,其他从节点A出发的节点Bi包含了T2i个由节点A中证书生成的变种证书,则从A到Bi的权重被更新为
Figure BDA0002501798250000041
本实施例基于上述方法得到的整个测试集的多样性
Figure BDA0002501798250000042
其中:G表示转换图,|G.V|表示转换图中的节点数,|T|表示测试集的个数。
转换图中的节点个数越多,则能探索到的执行路径越多,测试集越丰富。一般来说,测试集的多样性的值会随着测试集的增大而减小。因此,测试用例的生成目标是随着测试集的增加同时加速增加多样性指标。
经过具体实际实验,以现实中爬取的1005个X.509证书作为初始测试种子集,采取和mucert中一致的变种算子。测试准则使用差别测试方法,即将测试用例输入一组功能相近的测试程序,若结果一致,则视这组测试程序皆通过测试。其中目标测试软件对于测试用例输入得到不同的测试结果/提示组合,视为一个不一致性模式。在同样进行10000次变种算子操作后得到的测试用例集根据本方法中的多样性公式来计算,mucert的数据是5.59%,本方法生成的测试用例集的数据是26.35%。将测试用例集对目标测试软件openssl,gnutls.mbed tls,nss进行测试,mucert得到9种不一致性模式,采用本方法生成的测试用例得到34种不一致性模式。基于本方法生成的测试用例引起目标测试软件的不一致性模式是mucert的3.8倍。分析归纳引起不一致性模式或潜在漏洞的原因,mucert仅揭示4种,本方法揭示11种。
与现有技术相比,本方法生成的测试用例集的多样性和在测试X.509证书相关场景中的测试效率远高于mucert。
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。

Claims (9)

1.一种构建调用链转换图及引导生成X.509证书变种方法,其特征在于,通过构建测试种子集并输入目标测试程序,得到动态执行中的函数调用链信息并映射为调用链转换图中的初始节点;循环对调用链转换图中的取样节点通过变种算子生成新的变种测试用例并根据变种测试用例对应更新调用链转换图,直至生成目标数量的测试用例。
2.根据权利要求1所述的构建调用链转换图及引导生成X.509证书变种方法,其特征是,所述的映射是指:调用链转换图中的节点和测试用例对应,图的一个节点是一个测试用例集合,该测试用例集合中的任意一个测试用例在目标测试程序上得到的函数调用链是一致的。
3.根据权利要求1所述的构建调用链转换图及引导生成X.509证书变种方法,其特征是,所述的取样是指:通过计算潜力值并挑选节点和节点中的测试用例以用于生成变种。
4.根据权利要求1所述的构建调用链转换图及引导生成X.509证书变种方法,其特征是,所述的变种是指:对一个现有的测试用例进行修改生成一个新的测试用例,其实现方式视具体的测试场景而言,可自定义具体的变种方式也可对接已有的模糊测试工具如AFL对测试用例进行修改而生成新的测试用例,在针对X.509证书测试的应用场景中,变种算子可采用mucert工具中提供的变种方法。
5.根据权利要求1所述的构建调用链转换图及引导生成X.509证书变种方法,其特征是,所述的更新调用链转换图是指:以更新后的变种测试用例作为输入得到目标测试程序运行时的函数调用链,更新中间文件并映射为转换图中的新节点,构造一条调用链转换图中取样节点和新节点之间的边并更新取样节点所有边的权值。
6.根据权利要求1所述的构建调用链转换图及引导生成X.509证书变种方法,其特征是,所述的调用链转换图是带权重的有向图G=(V,E,W),其中:V为节点集合,每个节点映射为对应的函数调用链hash值,当两个测试用例同属于一个节点,则对应的函数调用链hash值相同,说明其在目标测试程序上的执行路径相同;E为调用链转换边的集合,当一个节点为u,另一个节点为v,u中的一个测试用例在进行变种后得到一个属于节点v的测试用例,则得到一条从节点u指向节点v的边,用u->v来标记,则整个边集合为
Figure FDA0002501798240000011
w为边上的权重集合,使用w=weight(u->v)表示在给定节点u的情况下得到指向v节点的概率,从节点u出发的所有边的权重和为1,即
Figure FDA0002501798240000022
7.根据权利要求1所述的构建调用链转换图及引导生成X.509证书变种方法,其特征是,所述的通过变种算子生成新的变种测试用例是指:使用潜能函数计算每个节点的潜力值
Figure FDA0002501798240000023
其中:Out(n)表示节点n的出度,Mutate(n)表示节点n被选中进行变种的次数,在每个节点按照潜力值降序存进队列后,再从队列中选取序号为k的节点,
Figure FDA0002501798240000021
其中:|array|表示数组的大小,rand为0-1的随机数,ε为图中每个节点都没有被选中的概率,随机选取选中节点中的一个测试用例通过变种算子进行修改以生成变种;所述的变种算子根据目标测试程序自定义,将根据变种算子修改后生成的变种测试用例添加回测试集中。
8.根据权利要求1所述的构建调用链转换图及引导生成X.509证书变种方法,其特征是,所述的更新调用链转换图是指:收集新生成的变种测试用例在目标程序运行时的函数调用链,将函数调用链映射为调用链转换图中的一个节点;迭代取样调用链转换图中的节点并选取节点中的测试用例生成变种,根据变种测试用例在目标测试程序中的函数调用链映射为图中的新节点,动态添加原测试用例映射节点和变种映射节点中的边和更新边的权值,直至生成目标数量的证书测试用例,并输入待测程序进行测试。
9.根据权利要求1或8所述的构建调用链转换图及引导生成X.509证书变种方法,其特征是,所述的更新调用链转换图具体为:当该节点不存在于原先的调用链转换图中,则在图中添加新的节点,记变种测试用例对应的原测试用例所映射的节点为A,新生成的变种测试用例映射的节点为B,在转换图中添加一条从A指向B的有向边,最后将变种测试用例添加回测试集中;
所述的添加一条从A指向B的有向边,即由节点A指向节点B的边,同时从节点A出发的边上的权重需要更新,则节点A被选中进行变种次数为T1,其他从节点A出发的节点Bi包含了T2i个由节点A中证书生成的变种证书,则从A到Bi的权重被更新为
Figure FDA0002501798240000024
CN202010434699.8A 2020-05-21 2020-05-21 构建调用链转换图及引导生成x.509证书变种方法 Active CN113704078B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010434699.8A CN113704078B (zh) 2020-05-21 2020-05-21 构建调用链转换图及引导生成x.509证书变种方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010434699.8A CN113704078B (zh) 2020-05-21 2020-05-21 构建调用链转换图及引导生成x.509证书变种方法

Publications (2)

Publication Number Publication Date
CN113704078A true CN113704078A (zh) 2021-11-26
CN113704078B CN113704078B (zh) 2024-02-06

Family

ID=78646032

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010434699.8A Active CN113704078B (zh) 2020-05-21 2020-05-21 构建调用链转换图及引导生成x.509证书变种方法

Country Status (1)

Country Link
CN (1) CN113704078B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114626071A (zh) * 2022-03-21 2022-06-14 中国人民解放军国防科技大学 一种漏洞导向的模糊测试方法、系统和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102045280A (zh) * 2009-10-26 2011-05-04 国基电子(上海)有限公司 线缆调制解调器及其证书测试方法
CN108875375A (zh) * 2018-04-26 2018-11-23 南京大学 一种面向安卓系统隐私泄漏检测的动态特性信息提取方法
CN111008151A (zh) * 2019-12-20 2020-04-14 上海品顺信息科技有限公司 程序扫描方法、终端设备及计算机可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102045280A (zh) * 2009-10-26 2011-05-04 国基电子(上海)有限公司 线缆调制解调器及其证书测试方法
CN108875375A (zh) * 2018-04-26 2018-11-23 南京大学 一种面向安卓系统隐私泄漏检测的动态特性信息提取方法
CN111008151A (zh) * 2019-12-20 2020-04-14 上海品顺信息科技有限公司 程序扫描方法、终端设备及计算机可读存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114626071A (zh) * 2022-03-21 2022-06-14 中国人民解放军国防科技大学 一种漏洞导向的模糊测试方法、系统和介质

Also Published As

Publication number Publication date
CN113704078B (zh) 2024-02-06

Similar Documents

Publication Publication Date Title
Rajpal et al. Not all bytes are equal: Neural byte sieve for fuzzing
CN110008710B (zh) 基于深度强化学习和程序路径插桩的漏洞检测方法
US8117598B2 (en) Method and apparatus to automatically identify specific code changes to probabilistically exclude from regression
Li et al. Multi-agent system based distributed pattern search algorithm for non-convex economic load dispatch in smart grid
Luo et al. Local Search with Efficient Automatic Configuration for Minimum Vertex Cover.
US20200125900A1 (en) Selecting an algorithm for analyzing a data set based on the distribution of the data set
McCaffrey Generation of pairwise test sets using a genetic algorithm
Das et al. Multi-objective feature selection (MOFS) algorithms for prediction of liquefaction susceptibility of soil based on in situ test methods
CN105718368A (zh) 一种软件测试数据扩增方法
CN115562987A (zh) 针对智能合约调用序列优化与资源分配导向的模糊测试方法
CN109933515B (zh) 一种回归测试用例集的优化方法和自动优化装置
Olsthoorn et al. Syntest-solidity: Automated test case generation and fuzzing for smart contracts
Yao et al. Constrained multi‐objective test data generation based on set evolution
CN108427643A (zh) 基于多种群遗传算法的二进制程序模糊测试方法
CN113704078A (zh) 构建调用链转换图及引导生成x.509证书变种方法
Chen et al. MMO: Meta multi-objectivization for software configuration tuning
Ma et al. LOKI: State-Aware Fuzzing Framework for the Implementation of Blockchain Consensus Protocols.
CN114238078A (zh) 一种基于高阶函数的程序间依赖关系抽取方法
CN117194219A (zh) 模糊测试用例生成与选择方法、装置、设备及介质
CN114840856A (zh) 一种状态感知的物联网可信执行环境模糊测试方法和系统
Bae et al. Semi-source independent quantum walk random number generation
CN111949555B (zh) 一种基于多维向量和规则脚本的随机测试方法及装置
Lin et al. Boosting Fuzzing Performance with Differential Seed Scheduling
CN115018477B (zh) 基于企业oa系统的大数据分析方法及设备
CN110120949B (zh) 一种数据存储方法和数据存储系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant