CN114840418A - 模糊测试方法及装置 - Google Patents
模糊测试方法及装置 Download PDFInfo
- Publication number
- CN114840418A CN114840418A CN202210374020.XA CN202210374020A CN114840418A CN 114840418 A CN114840418 A CN 114840418A CN 202210374020 A CN202210374020 A CN 202210374020A CN 114840418 A CN114840418 A CN 114840418A
- Authority
- CN
- China
- Prior art keywords
- test
- test case
- test cases
- cases
- target
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
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
提供一种模糊测试方法及装置。该方法包括:利用第一测试用例集合对目标程序进行模糊测试,确定所述第一测试用例集合中的测试用例的多个特征的特征值;根据所述多个特征对发现有趣测试用例的影响,确定第一目标特征;从所述第一测试用例集合中选择所述第一目标特征的特征值满足第一预设条件的测试用例,得到第二测试用例集合;基于所述第二测试用例集合对所述目标程序进行模糊测试。
Description
技术领域
本公开涉及软件测试技术领域,更为具体地,涉及一种模糊测试方法及装置。
背景技术
相关技术中,模糊检测工具通常会利用人工设计的能量分配方法为参与突变的测试用例分配计算资源,并期望变异后的输入文件触发待测软件的异常情况。然而,人工设计的标准无法适用于所有的目标程序,使得在进行不同的目标程序的测试时漏洞挖掘效率不同。
发明内容
本公开提供一种模糊测试方法及装置,以解决上述问题。
第一方面,提供一种模糊测试方法,包括:利用第一测试用例集合对目标程序进行模糊测试,确定所述第一测试用例集合中的测试用例的多个特征的特征值;根据所述多个特征对发现有趣测试用例的影响,确定第一目标特征;从所述第一测试用例集合中选择所述第一目标特征的特征值满足第一预设条件的测试用例,得到第二测试用例集合;基于所述第二测试用例集合对所述目标程序进行模糊测试。
可选地,所述方法还包括:利用第三测试用例集合对所述目标程序进行模糊测试,确定所述第三测试用例集合中的测试用例的多个特征的特征值;根据所述多个特征对发现有趣测试用例的影响,确定第二目标特征;从所述第三测试用例集合中选择所述第二目标特征的特征值满足第二预设条件的测试用例,得到第四测试用例集合;对所述第四测试用例集合中的测试用例进行变异操作,得到所述第一测试用例集合。
可选地,所述基于所述第二测试用例集合对所述目标程序进行模糊测试,包括:对所述第二测试用例集合中的测试用例进行变异操作,得到第五测试用例集合;利用所述第五测试用例集合对所述目标程序进行模糊测试。
可选地,所述第二测试用例集合中的测试用例的第一目标特征的特征值均大于或小于所述第一测试用例集合中除所述第二测试用例集合中的测试用例以外的测试用例的第一目标特征的特征值。
可选地,所述第二测试用例集合与所述第一测试用例集合中的测试用例的数量的比值小于或等于0.4。
可选地,所述第四测试用例集合中的测试用例的第二目标特征的特征值均大于或小于所述第三测试用例集合中除所述第四测试用例集合中的测试用例以外的测试用例的第二目标特征的特征值。
可选地,所述第四测试用例集合与所述第三测试用例集合中的测试用例的数量的比值小于或等于0.4。
可选地,所述多个特征包括以下中的一种或多种:测试用例的基本特征,测试用例触发所述目标程序的基本块的特征以及测试用例触发的执行路径特征。
可选地,所述有趣测试用例包括以下中的一种或多种:能够触发新的执行路径的测试用例、能够触发所述目标程序异常情况的测试用例。
第二方面,提供一种模糊测试装置,所述装置包括:第一确定模块,用于利用第一测试用例集合对目标程序进行模糊测试,确定所述第一测试用例集合中的测试用例的多个特征的特征值;第二确定模块,用于根据所述多个特征对发现有趣测试用例的影响,确定第一目标特征;第一选择模块,用于从所述第一测试用例集合中选择所述第一目标特征的特征值满足第一预设条件的测试用例,得到第二测试用例集合;测试模块,用于基于所述第二测试用例集合对所述目标程序进行模糊测试。
可选地,所述装置还包括:第三确定模块,用于利用第三测试用例集合对所述目标程序进行模糊测试,确定所述第三测试用例集合中的测试用例的多个特征的特征值;第四确定模块,用于根据所述多个特征对发现有趣测试用例的影响,确定第二目标特征;第二选择模块,用于从所述第三测试用例集合中选择所述第二目标特征的特征值满足第二预设条件的测试用例,得到第四测试用例集合;变异模块,用于对所述第四测试用例集合中的测试用例进行变异操作,得到所述第一测试用例集合。
可选地,所述测试模块还用于:对所述第二测试用例集合中的测试用例进行变异操作,得到第五测试用例集合;利用所述第五测试用例集合对所述目标程序进行模糊测试。
可选地,所述第二测试用例集合中的测试用例的第一目标特征的特征值均大于或小于所述第一测试用例集合中除所述第二测试用例集合中的测试用例以外的测试用例的第一目标特征的特征值。
可选地,所述第二测试用例集合与所述第一测试用例集合中的测试用例的数量的比值小于或等于0.4。
可选地,所述第四测试用例集合中的测试用例的第二目标特征的特征值均大于或小于所述第三测试用例集合中除所述第四测试用例集合中的测试用例以外的测试用例的第二目标特征的特征值。
可选地,所述第四测试用例集合与所述第三测试用例集合中的测试用例的数量的比值小于或等于0.4。
可选地,所述多个特征包括以下中的一种或多种:测试用例的基本特征,测试用例触发所述目标程序的基本块的特征以及测试用例触发的执行路径特征。
可选地,所述有趣测试用例包括以下中的一种或多种:能够触发新的执行路径的测试用例、能够触发所述目标程序异常情况的测试用例。
第三方面,提供一种模糊测试装置,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器被配置为执行所述可执行代码,以实现如第一方面或第一方面中任一可能的实现方式中所述的方法。
第四方面,提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被执行时,能够实现如第一方面或第一方面中任一可能的实现方式中所述的方法。
第五方面,提供一种计算机程序产品,包括可执行代码,当所述可执行代码被执行时,能够实现如第一方面或第一方面中任一可能的实现方式中所述的方法。
本公开实施例提供的模糊测试方法,利用测试过程中测试用例的多个特征的特征值对于路径触发和崩溃的效率来评估各特征对于有价值输入文件的发现效率,根据在当前测试轮次中最有效的特征,选择该特征的特征值较高的测试用例作为下一轮次测试的种子,能够在不同的目标程序上实现自适应的效率评估,确定能量分配的方式,从而提高模糊测试工具的漏洞挖掘效率。
附图说明
图1是本公开实施例提供的模糊测试方法的示意性流程图。
图2是本公开实施例提供的保存测试用例的二维链表的结构示意图。
图3是本公开一实施例提供的模糊测试装置的示意性结构图。
图4是本公开另一实施例提供的模糊测试装置的示意性结构图。
图5是本公开又一实施例提供的模糊测试装置的示意性结构图。
具体实施方式
为了便于理解本公开,在下文中基于示例性实施例并结合附图来更详细地描述本公开。在附图中使用相同或相似的附图标记来表示相同或相似的模块。应该理解的是,附图仅是示意性的,本公开的保护范围并不局限于此。在介绍本公开实施例之前,先对本公开技术方案涉及的概念和术语做如下定义和解释。
灰盒模糊测试
灰盒模糊测试(Graybox Fuzzing,GF)是指通过向被测的程序提供大量测试用例从而发现程序中漏洞的过程。灰盒测试是在传统随机模糊测试上的改进。灰盒模糊测试可以根据目标程序内部结构信息指导测试用例生成,从而提高测试效率。
测试用例
测试用例(Test Case)是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。简单地认为,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。
基本块
基本块(Basic Block,BBL)是程序中最大限度顺序执行的语句序列,其中只有一个入口和出口,入口是其第一个语句,出口是其最后一个语句。对于一个基本块而言,在执行时只从其入口进入,从出口退出。
具体而言,只有一个入口,表示程序中不会有其他任何代码可以通过跳转等方式进入基本块除入口外的其他代码中。只有一个出口,表示程序只有执行到最后一条指令后才会执行其他基本块中的指令。
所以,基本块的一个典型特点是:只要基本块中第一条指令被执行了,那么基本块内所有执行都会按照顺序仅执行一次。
控制流图
控制流图(Control Flow Graph,CFG)是程序分析中的概念。控制流图是一种描述程序执行流程的有向图。控制流图由代码块节点和连接代码块的边组成。一个代码块可以是一个函数,也可以是一个基本块。控制流图中包含了程序中所有可能执行的分支信息。通常将描述一个函数内控制流信息的图称作“过程内”控制流图,将描述整个程序控制流信息的图称作“过程间”控制流图。
程序
程序,也可以称为计算机程序,是一组计算机可以识别和执行的指令。程序可以运行于计算机上,以满足用户的某种需求。一个程序可以由多个子程序组成。每个子程序也可以称为一个计算机函数(或称函数)。函数可以指一段可以直接被另一段函数引用的代码或指令集。
一个程序可以仅通过一个函数(或子程序)实现,也可以通过多个函数实现。本公开对程序包含的函数的数量不做限定。程序可以利用多种不同类型的编程语言编写,本公开对程序具体使用的编程语言类型不做限定。例如,程序可以利用C语言编写。又如,程序可以利用JAVA语言编写。一个程序可以由同一种编程语言实现,也可以由多种不同类型的编程语言共同实现,本公开对一个程序使用的编程语言的数量不做限定。
计算机软件(或称软件)可以是对计算机系统中程序和文档的总称。在一些场景中,软件也可以指代程序。本公开对软件和程序不作区分,即,本公开提及的程序也可以指计算机软件。
随着互联网的迅速发展与普及,软件被全面而广泛地应用于个人生活,企业生产,商业运营,政府管理与服务。然而,互联网技术应用不断模糊物理世界和虚拟世界界限,对整个经济社会发展的融合、渗透、驱动作用日益明显,带来的风险挑战也不断增大。
相关技术中,为了保证计算机程序运行过程中的健壮性,需要对程序进行测试。测试的主要目的是挖掘程序中的漏洞。程序中的漏洞指程序的异常运行状态,或者说,程序不符合预期的运行状态。例如,程序的漏洞可以指程序编写中缺乏某些判断(例如,缺乏对除法操作的被除数的非零判断),导致程序崩溃。又如,程序的漏洞可以指程序运行过程中非预期地修改了程序中的某些变量(例如非预期地修改了某个全局变量),影响程序正常运行。程序中的漏洞可能造成严重的影响。例如,程序漏洞可能导致程序甚至计算机系统崩溃。
为了便于理解,以操作系统为例介绍程序漏洞对实际使用的影响。操作系统可以看做是一种大型的程序。操作系统是整个计算机系统的核心部件。操作系统可以向下实现对底层硬件资源的抽象,向上为应用层提供服务。内核(或称操作系统内核),是一个操作系统的核心,是基于硬件的第一层软件扩充。内核可以为操作系统提供最基本的功能,是操作系统工作的基础。内核可以负责管理系统的进程、内存、设备驱动程序、文件和网络系统等。内核的性能和稳定性决定着操作系统的性能和稳定性。
随着互联网技术的不断发展,各种计算设备、移动终端、物联网等设备的数量呈现爆发式增长。为了与之适配,操作系统的数量和种类也不断地增加。相应地,操作系统内核的数量和种类也随之增加。由于操作系统使用范围广泛,因此,操作系统内核漏洞具有危险性大、影响范围广等特点。这些特点导致对操作系统内核的漏洞挖掘工作存在巨大的挑战。
操作系统内核漏洞已造成非常严重的损失。例如,2016年爆发的脏牛漏洞(CVE-2016–5195)可被攻击者所利用以实现内核提权,从而控制整个系统。脏牛漏洞影响了多个基于Linux内核的操作系统,例如移动端、PC端和服务器端的操作系统。
因此,如何快速且高效的发现漏洞成为亟待解决的问题。
在相关技术中,为了解决漏洞定位问题,可以采用代码审查的方式,即依靠人类专家的经验,根据现有认知总结确定漏洞规则,通过对软件源码进行词法分析、语法分析、语义分析等方式,在不同编译层次上完成代码错误的审核和排查。而由于人类经验的局限性。静态代码审查技术存在着漏洞检测漏报率和误报率高,漏洞定位精度差的问题。
近年来,对着人工智能技术的发展,提出了基于深度学习技术构建智能化的漏洞静态检测系统,这在一定程度上缓解了静态分析技术的困境。但是,受限于漏洞数据集匮乏、漏报误报无法根本解决以及模型本身安全性的问题,仍然存在着较大的改进空间。
为了高效识别软件中可能存在的漏洞,自动化漏洞挖掘技术在学术界和工业界备受关注。其中,一种受到广泛应用的方法是“基于突变算法的灰盒模糊测试”。基于突变算法的灰盒模糊测试工具通过特定的变异算法生产大量的测试用例,将测试用例作为待测程序的输入,执行目标程序,并实时记录目标程序的运行状态。将触发了待测程序异常性为的测试用例保存于本地,以进行后续的人工分析;将触发了新的执行路径的测试用例加入到保存的用例集合中,根据预先设定的能量分配方法,为保存的测试用例集合中的测试用例分配变异次数,利用变异后的测试用例进行下一轮次的测试,从而实现自动化的漏洞探测与报告。这种方法虽然具有一定的盲目性,但是灰盒模糊检测工具仍是当前最有效的漏洞检测方案之一,在漏洞检测领域得到了广泛的应用。
在以上所述的模糊测试中,能量即测试用例的变异次数,能量分配则是指模糊测试工具对每个测试用例分配的变异次数的多少。可以理解的是,模糊检测工具的能量分配算法对于测试用例的变异方向、漏洞触发潜力以及执行速度等关键参数都有很大的影响。
而在相关技术中,绝大多数的模糊测试工具无法自适应地探索哪一类的测试用例更适合当前目标程序的漏洞挖掘,大多依靠人工设计的标准来实现能量分配。例如,最常用的灰盒模糊测试工具AFL仅关注长度较短且执行速率快的测试用例,设计了定制化的能量分配算法为上述长度较短且执行速率块的测试用例分配更多的能量;MOpt、AFL++、EcoFuzz等新兴模糊测试工具也大多是采用人工设计标准来分配更多的计算能力给符合标准的测试用例。
但是,人工标注的方法不具备自适应性,实验表明,在不同的目标待测程序上,根据不同的选择标准确定的能量分配算法在漏洞挖掘上的效率不同,不存在绝对最优的、适合所有目标待测程序的人工标准。
有鉴于此,本公开提供一种模糊测试方法及装置,以解决上述问题。下面结合附图对本公开提供的模糊测试方法进行详细的介绍。
图1是本公开实施例提供的模糊测试方法的示意性流程图。如图1所示,本公开实施例提供的模糊测试方法可以包括步骤S110-S140。
在步骤S110,利用第一测试用例集合对目标程序进行模糊测试,确定第一测试用例集合中的测试用例的多个特征的特征值。
其中,第一测试用例集合中可以包括多个测试用例,测试用例有时也被称为种子文件。所述多个测试用例可以是由测试工具随机生成的多个测试用例,也可以是针对目标程序的相关特性而专门设置的多个测试用例。
第一测试用例集合可以是用户对目标程序进行模糊测试的任一测试用例集合,本公开对第一测试用例集合不做具体限定。例如,第一测试用例集合可以是用于进行第一轮次测试的原始种子文件集合,也可以是在前一轮次测试的基础上对种子文件进行变异操作得到的测试用例的集合。
在利用第一测试用例集合进行模糊测试时,通过记录各测试用例的多个特征的特征值,可以为后续的种子替换提供选择标准。
在一些实施方式中,上述多个特征可以包括一下中的一种或多种:测试用例的基本特征,测试用例触发目标程序的基本块的特征以及测试用例触发的执行路径特征。
其中,测试用例的基本特征例如可以包括:执行速度块、执行速度慢、种子文件大、种子文件小、种子文件深度、发现有趣测试用例数以及边变化效率;测试用例触发目标程序的基本块的特征例如可以包括:未触发邻居基本块数、包含有常量比较指令的基本块数、内存读写操作数、内存调用函数数、全局变量赋值操作数、发现有趣测试用例数以及高风险基本块数;测试用例触发的执行路径特征例如可以包括:稀有路径、触发边数以及触发循环数。
测试用例的基本特征可以通过监控个测试用例执行目标程序的运行情况来获取。例如,通过监控测试时执行目标程序的时间来确定“执行速度快”这一特征的特征值。
测试用例触发目标程序的基本块的特征可以通过确定测试用例的执行路径经过的基本块,计算基本块的特征值之和来确定。因此,在一些实施方式中,本公开实施例提供的方法还包括:在利用第一测试用例对目标程序进行测试前,对目标程序进行静态分析,以获取目标程序的基本块信息。
其中,静态分析是一种在不运行程序的前提下对程序进行分析的方法。静态分析可以由人工完成,也可以由计算机软件或硬件实现。本公开对静态分析的具体实现方法不做限定。
可以通过多种方式对目标程序进行静态分析。例如,可以直接分析程序的源码。又如,可以对程序进行编译,分析编译后生成的文件。编译过程通常会生成中间文件和二进制文件。在一些实施例中,可以对编译后生成的中间文件进行分析。通常而言,不同的编程语言使用相同的编译器(例如gcc或clang)编译得到的中间文件形式相同或类似。因此,分析编译后生成的中间文件,可以适用于多种编程语言,通用性强。作为一个示例,可以将程序编译为LLVM的中间代码形式。中间代码形式也可以称为中间表达式(IntermediateRepresentation,IR)。LLVM的中间代码有成熟的静态分析工具。因此,将程序编译为LLVM中间代码形式,可以复用已有的工具,实现简单。可以通过多种方式将程序编译为LLVM的中间代码形式。例如,可以使用clang编译器将程序编译为LLVM中间形式。
通过对目标程序的源码进行分析,能够确定目标程序中的基本块所具备的特征值。
对程序进行静态分析,还可以生成程序的控制流图。控制流图可以表示程序中所有可能执行的分支信息。通过对控制流图进行分析,能够获取基本块运行时的上下文关系以及各基本块的后继基本块信息。
在利用上述方法获取了目标程序的基本块特征后,可以通过分析测试用以的路径,获取经过的基本块信息,对所有经过基本块的特征值求和,即可确定测试用例所有经过基本块的特征值之和。
测试用例触发的执行路径特征可以根据测试用例执行目标程序的路径覆盖情况来确定。
在步骤S120,根据所述多个特征对发现有趣测试用例的影响,确定第一目标特征值。
在本公开实施例中,所述有趣测试用例是指能够触发新的执行路径的测试用例、能够触发所述目标程序异常情况的测试用例。
下面结合一个示例,对确定第一目标特征值的方法进行简要的说明。以第一测试用例集合中包括测试用例A、测试用例B、测试用例C和测试用例D这四个测试用例,所述多个特征包括执行速度快、种子文件小以及内存读写操作数这三个特征为例。
其中,上述四个测试用例的执行速度的特征值分别为1ms、2ms、1.5ms、1.7ms,种子文件大小分别为2KB、1.7KB、1.3KB、2.1KB,内存读写操作数分别为5、7、7、10。
可以理解的是,上述三种特征属于不同的维度,难以进行相互之间的对比。因此,为了便于确定不同特征对于发现有趣测试用例的影响,在本公开实施例中,定义了测试用例关于不同特征的临时分数,基于该临时分数来对各特征的影响进行比较。以执行速度快这一特征为例,将各测试用例关于执行速度快这一特征的特征值与所有测试用例中的最佳性能比较,在本示例中,“执行速度快”这一特征在上述四个测试测试用例中的最佳性能为测试用例A的1ms。因此,可以分别用测试用例B、测试用例C和测试用例D关于“执行速度快”这一特征的特征值与测试用例A进行比较,确定上述四个测试用例在执行速度快这一特征上的临时分数分别为:1、0.5、0.66、0.59。基于同样的方法,确定上述四个测试用例在“种子文件小”和“内存读写操作数”这两个特征上的临时分数分别为:0.65、0.76、1、0.62和1、0.71、0.625、0.5。
因此,上述四个测试用例在“执行速度快”、“种子文件小”和“内存读写操作数”这三个不同特征上的临时分数分别为:测试用例A:1、0.65、1;测试用例B:0.5、0.76、0.71;测试用例C:0.66、1、0.625;测试用例D:0.59、0.62、0.5。
假设测试用例B在执行测试时触发了新的执行路径,则根据测试用例B在上述三个特征上的临时分数,确定“种子文件小”这一特征为第一目标特征。
应理解,上述基于临时分数确定第一目标特征的方法仅为一示例,第一目标特征的确定方法还可以有很多种,例如通过人工智能或者根据经验判断等。
在本公开实施例中,所述模糊测试方法可以是基于突变算法的灰盒模糊测试。也就是说,在进行测试时,需要对种子文件(即测试用例)进行变异操作,生成变异后的测试用例,并进行新一轮的测试,根据新一轮的测试结果,对全部或部分的测试用例进行变异,以进行下一轮次的测试,如此循环直至测试结果收敛或测试的覆盖率达到一定的要求后测试结束。如前文中所述,如果在每一轮次的测试中都对所有的测试用例进行变异操作,一方面会导致执行速度慢从而降低测试效率,另一方面降低了漏洞挖掘的效率。
因此,在本公开的实施例的模糊测试方法中,在确定了第一目标特征后,还包括,在步骤S130,从第一测试用例集合中选择第一目标特征的特征值满足第一预设条件的第二测试用例集合。
其中,第一预设条件例如可以是所述第一目标特征的特征值大于一预设阈值。然而,在针对不同的目标程序进行测试时所使用的测试用例可能均不相同,因此上述预设阈值的取值大小难以确定。
因此,在一些实施方式中,上述第一预设条件可以配置为使第二测试用例集合中的测试用例的第一目标特征的特征值均大于(或均小于)第一测试用例集合中除第二测试用例集合中的测试用例以外的测试用例的第一目标特征的特征值。还以前文中的示例为例,第一目标特征值为“种子文件小”,此时可以从第一测试用例集合中的四个测试用例中选择该特征值较小的两个测试用例作为第二测试用例集合,即,将测试用例B和测试用例C选入第二测试集合中,此时,第二测试用例集合中的测试用例B和测试用例C关于“种子文件小”这一特征的特征值分别为1.7KB和1.3KB,均小于上述第一测试用例集合中的四个测试用例中出测试用例B和测试用例C外剩余的测试用例A和测试用例B的2KB和2.1KB。
应理解,第二测试用例集合中的测试用量的数量应小于第一测试用例集合中的测试用例的数量,这样才能达到对测试用例筛选的效果。
作为一优选的实施方式,第二测试用例集合与第一测试用例集合中的测试用例的数量的比值小于或等于0.4,这样能够使得从第一测试用例集合中筛选出的测试用例的性能更好,更有利于提高测试效率。
在步骤S140,基于第二测试用例集合,对目标程序进行模糊测试。
在一些实施方式中,所述基于第二测试用例对目标程序进行模糊测试可以是对第二测试用例结合中的所有测试用例进行变异操作,得到第五测试用例集合,利用第五测试用例集合中的测试用例,对目标程序进行模糊测试。
在上述方法中,变异操作的对象经过筛选的测试用例,如前文中所示,这些测试用例能够更有效的发现新的执行路径以及触发目标程序的异常。基于这些测试用例进行变异得到的新的测试用例对于目标程序的针对性更强,从而使得模糊测试效率更高。
其中,变异操作也可以称为变异策略。本公开提及的变异操作可以指对种子文件进行变异的操作,即,对种子文件进行修改的操作。本公开提及的变异操作也可以指确定对种子文件进行修改的策略。将该策略作用于种子文件,即可得到变异后的输出文件。本公开对变异操作的具体含义不做限定。
作为一个示例,变异操作可以指修改种子文件的确定字节。例如,变异操作可以指修改种子文件的第3个字节。
作为另一个示例,变异操作也可以指将特定的输入修改为特定的输出。例如,对于某一个字节的值进行修改的操作,也可以称为一次变异操作。在一些实施例中,当一个字节值等于8,对8进行替换操作,将8换成9复写入种子文件的原字节的操作,可以称为一个变异操作。
模糊测试在对种子文件进行变异的过程中,可能会同时对种子文件进行多处修改。作为一个示例,模糊测试在对种子文件的一次变异过程中,可能同时修改种子文件中3个字节的数据。
本公开对变异操作具体指代的对种子文件的修改不做限定。例如,当模糊测试同时修改种子文件中的3个字节的数据时,可以将对该3个字节的数据的修改作为一个变异操作,即,一个变异操作可以包括三个对种子文件的修改的操作。
又如,当模糊测试同时修改种子文件中的3个字节的数据时,也可以将对其中2个字节的数据的修改作为一个变异操作,即,一个变异操作可以包括3个对种子文件进行修改的操作中的任意2个操作。
又如,当模糊测试同时修改种子文件中的3个字节的数据时,还可以将其中1个字节的修改作为一个变异操作,即,当模糊测试同时修改种子文件中的3个字节的数据时,可以将该3处修改作为3个变异操作。
这里使用字节仅为了便于描述。本公开对变异操作实际作用的种子文件的目标单位的长度不做限定。本公开中所述的字节可以指任意的单位。例如,一个字节可以代表一个比特(或称bit)。又如,一个字节可以代表一个字节(或称byte)。又如,一个字节可以代表一个字(或称word)。本公开对模糊测试对字节的实际操作类型不做限定。对字节的操作例如可以指bitflip、arithmetic、interest、dictionary等。
本公开实施例提供的模糊测试方法,利用测试过程中测试用例的多个特征的特征值对于路径触发和崩溃的效率来评估各特征对于有价值输入文件的发现效率,根据在当前测试轮次中最有效的特征,选择该特征值较高的测试用例作为下一轮次测试的种子,能够在不同的目标程序上实现自适应的效率评估,确定能量分配的方式,从而提高模糊测试工具的漏洞挖掘效率。
在一些实施方式中,本公开所披露的上述模糊测试方法可以是循环进行的。也就是说,当前测试轮次的第一测试用例集合,可以是根据上一轮次的测试结果和目标特征,从上一轮测试的多个测试用例中筛选而得到的。在这种情况下,第一测试用例集合可以利用以下方法来确定:利用第三测试用例集合对目标程序进行模糊测试,确定第三测试用例集合中的测试用例的多个特征的特征值,根据上述多个特征对发现有趣测试用例的影响,确定第二目标特征,从第三测试用例集合中选择第二目标特征的特征值满足第二预设条件的第四测试用例集合,对第四测试用例集合中的测试用例进行变异操作,得到第一测试用例集合。
其中,第三测试用例集合也可称为初始种子队列,其中包括多个测试用例;或者,第三测试用例集合也可以是采用与第一测试用例集合相似的方法得到。
应理解,在本公开实施例中,第一目标特征和第二目标特征仅为了方便描述。第一目标特征和第二目标特征可以相同,也可以不同,本公开对此不做具体限定。
根据第二目标特征,可以从第三测试用例集合中选择第四测试用例集合,其中第四测试用例集合满足第二预设条件。可以理解的是,第四测试用例集合中的测试用量的数量应小于第三测试用例集合中的测试用例的数量,这样才能够达到对测试用例筛选的效果。
因此,作为一优选的实施方式,与前文中的第二测试用例集合类似,第四测试用例集合与第三测试用例集合中的测试用例的数量的比值小于或等于0.4,这样能够使得从第三测试用例集筛选出的测试用例的性能更好,更有利于提高测试效率。
根据前文所述,根据各特征对发现有趣测试用例的影响,能够确定各测试用例关于目标特征的临时分数,该临时分数是各测试用例的某个特征的特征值与多个测试用例中该特征值的最佳性能的比值。
基于此,在一些实施方式中,本公开实施例的方法还包括:累加测试用例关于多个特征的特征值,确定该测试用例的潜能分数。基于所述潜能分数,将测试用例集合中的测试用例以基于哈希表的二维链表结构保存,如图2所示,每个测试用例都保存了潜能分数和各特征的特征值。本公开实施例定义了路径校验和,路径校验和是对种子执行路径进行哈希运算得到的值,可以认为是执行路径的ID,路径校验和相同的两个种子意味着执行了相同的路径,可以保存在同一个校验和节点上。
在本公开实施例中,多个特征中的高风险基本块数和稀有路径特征在运行时会发生变化。因此,需要动态更新确定目标程序的一个或多个基本块是否为高风险块,以及确定测试用例的执行路径是否为稀有路径。
在一些实施方式中,所述方法还包括:更新高风险基本块数,测试用例在原始可执行程序上触发稀有崩溃时,使用该测试用例来执行记录最后一个基本块的二进制程序,从新添加的共享内存中读取最后一个基本块的标识并将该基本块及其相邻的基本块标记为高风险块。
在一些实施方式中,本公开实施例的模糊测试方法还包括:更新稀有路径特征。如图2所示,稀有路径和普通路径的容量值设置不同。首先确定当前最稀有的执行路径,当最稀有的执行路径改变时,将原稀有路径容量恢复为最小值1,并调整新稀有路径容量值为种子队列长度的1/16。
在本公开实施例的方法中,根据所述多个特征对发现有趣测试用例的影响,确定第一目标特征,以及从所述第一测试用例集合中选择所述第一目标特征的特征值满足第一预设条件的测试用例,得到第二测试用例集合可以是:维护多个特征队列,其中每个特征队列中存储在该特征队列所对应的特征上特征值较高的部分测试用例。通过统计每个特征队列中的测试用例的路径触发和崩溃发现效率,确定各特征队列的选择概率,将选择概率最高的一个特征队列作为第二测试用例集合。
其中,每个特征队列中所包含的测试用例的数量被配置为与第一测试用例集合中的测试用例的数量的比值小于或等于0.4。
基于上述多个特征队列的选择概率,在进行多轮次的测试时,可以在每一轮测试结束后对选择概率进行更新,将各特征队列的选择概率分布进行标准化操作,使得所有特征队列的选择概率的总和为1,根据概率分布挑选特征队列,对其所含的测试用例进行集中测试,对各特征队列的选择概率进行迭代优化。
前文结合图1-图2详细介绍了本公开的方法实施例,下面结合图3-图5介绍本公开的装置实施例。应理解,装置实施例和方法实施例相互对应。在装置实施例中未详尽描述之处,请参见方法实施例中的介绍。
图3是本公开一实施例提供的模糊测试装置的结构示意图。如图3所示,装置300可以包括:第一确定模块310、第二确定模块320、第一选择模块330以及测试模块340。
其中,第一确定模块310,用于在利用第一测试用例集合对目标程序进行模糊测试的过程中,确定所述第一测试用例集合中的测试用例的多个特征的特征值。
第二确定模块320,用于根据所述多个特征对发现有趣测试用例的影响,确定第一目标特征。
第一选择模块330,用于从所述第一测试用例集合中选择所述第一目标特征的特征值满足第一预设条件的测试用例,得到第二测试用例集合。
测试模块340,用于基于所述第二测试用例集合对所述程序进行模糊测试。
可选地,在一些实施方式中,装置300还包括:
第三确定模块,用于利用第三测试用例集合进行模糊测试,确定所述第三测试用例集合中的测试用例的多个特征的特征值。
第四确定模块,用于根据所述多个特征对发现有趣测试用例的影响,确定第二目标特征。
第二选择模块,用于从所述第三测试用例集合中选择所述第二目标特征的特征值满足第二预设条件的测试用例,得到第四测试用例集合。
变异模块,用于对所述第四测试用例集合中的测试用例进行变异操作,得到所述第一测试用例集合。
可选地,所述测试模块还用于:对所述第二测试用例集合中的测试用例进行变异操作,得到第五测试用例集合;利用所述第五测试用例集合对所述目标程序进行模糊测试。
可选地,所述第二测试用例集合中的测试用例的第一目标特征的特征值均大于所述第一测试用例集合中除所述第二测试用例集合中的测试用例以外的测试用例的第一目标特征的特征值。
可选地,所述第二测试用例集合与所述第一测试用例集合中的测试用例的数量的比值小于或等于0.4。
可选地,所述第四测试用例集合中的测试用例的第二目标特征的特征值均大于或小于所述第三测试用例集合中除所述第四测试用例集合中的测试用例以外的测试用例的第二目标特征的特征值。
可选地,所述第四测试用例集合与所述第三测试用例集合中的测试用例的数量的比值小于或等于0.4。
可选地,所述多个特征包括以下中的一种或多种:测试用例的基本特征,测试用例触发所述目标程序的基本块的特征以及测试用例触发的执行路径特征。
可选地,所述有趣测试用例包括以下中的一种或多种:能够触发新的执行路径和/或能触发所述目标程序异常情况的测试用例。
图4是本公开又一实施例提供的模糊测试装置的示意性结构图。图4中的装置400可以是能够执行模糊测试的任意装置。该装置400例如可以是具有计算功能的计算设备。比如,装置400可以是弹性云主机或者服务器。装置400可以包括存储器410和处理器420。存储器410可用于存储可执行代码。处理器420可用于执行所述存储器410中存储的可执行代码,以实现前文描述的各个方法中的步骤。在一些实施例中,该装置400还可以包括网络接口430,处理器420与外部设备的数据交换可以通过该网络接口430实现。
图5是本公开又一实施例提供的模糊测试装置的示意性结构图。图5中的装置500包括预处理模块510、探索收集模块520、评估更新模块530以及集中利用模块540。
其中,预处理模块510,配置为对目标程序进行基本块信息获取以及可执行程序的编译,包括:在目标程序源代码的编译过程中,分析程序控制流图以获取基本块运行时的上下文关系,记录各基本块的后继基本块信息;根据设定的特征要求对基本块源代码进行特定的静态分析,记录各基本块的特征值;在原始覆盖率插桩的二进制程序基础上,利用新的插桩来实现对测试用例执行的最后一个基本块的记录,并编译远吗生成二进制可执行程序,初始随机种子设定执行目标程序时均使用源代码文件的名称,以确保两个可执行程序中相同基本块标识的一致性。
探索收集模块520,用于对测试用例集合中的测试用例进行模糊测试,记录测试用例的特征信息,并计算测试用例的临时分数和潜能分数,为种子替换提供选择标准。
通过监控测试用例执行所述目标程序的运行情况,获取测试用例的基本特征;根据测试用例的执行路径定位经过的基本块,计算基本块的特征值之和,确定测试用例触发所述目标程序的基本块的特征;根据所测试用例执行所述目标程序的路径覆盖情况,确定测试用例触发的执行路径特征。
根据各特征在发现有趣测试用例上的表现,计算各测试用例在多个特征上的临时分数以及各测试用例的潜能分数,所述临时分数和潜能分数的确定方法已在前文的方法实施例中进行过详细的说明,此处不在赘述。
评估更新模块530,用于根据预处理模块510和探索收集模块520所累积的信息,构建和维护前文中所说的多个特征队列,基于测试过程中各特征在发现有趣测试用例上的表现,对特征队列的选择概率进行迭代优化。
集中利用模块540,用于在评估更新模块530结束之后,对特征队列的选择概率分布进行标准化操作,使得所有特征队列的选择概率之和等于1,根据概率分布挑选特征队列,利用其中所包含的测试管理进行集中测试,对各特征队列的选择概率进行迭代优化,输入至探索收集模块520展开下一轮模糊测试。
与现有技术相比,本方案的有益效果为:首先,本方案可以根据每一个特征队列在当前被测软件上的表现,合理地分配各特征队列的选择概率,使得高效的特征队列更多地被使用,而低效的特征队列更少地使用,实现了程序敏感的面向测试用例的多维自适应效率评估技术,从而提高模糊检测工具的漏洞挖掘效率;其次,本方案针对每一个被测软件都能评估不同特征队列效率并自适应地生成合适的选择概率分布,解决了不同的特征在不同被测软件上有着不同漏洞挖掘效率的问题;再次,由于能量分配是大多数模糊检测工具的必有功能模块,在具体应用场景下,关注的输入文件特征存在差异,本方案可以集成大多数模糊检测工具的能量分配方案,且各队列耦合性低,新增或删除特征队列灵活方便,具有可扩展性;最后,本发明所需的计算开销极小,所提出的模糊测试自适应能量分配方法和系统可以有效地提高模糊检测工具的漏洞挖掘效率。
应理解,在本公开的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital video disc,DVD))或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (19)
1.一种模糊测试方法,所述方法包括:
利用第一测试用例集合对目标程序进行模糊测试,确定所述第一测试用例集合中的测试用例的多个特征的特征值;
根据所述多个特征对发现有趣测试用例的影响,确定第一目标特征;
从所述第一测试用例集合中选择所述第一目标特征的特征值满足第一预设条件的测试用例,得到第二测试用例集合;
基于所述第二测试用例集合对所述目标程序进行模糊测试。
2.根据权利要求1所述的方法,所述方法还包括:
利用第三测试用例集合对所述目标程序进行模糊测试,确定所述第三测试用例集合中的测试用例的多个特征的特征值;
根据所述多个特征对发现有趣测试用例的影响,确定第二目标特征;
从所述第三测试用例集合中选择所述第二目标特征的特征值满足第二预设条件的测试用例,得到第四测试用例集合;
对所述第四测试用例集合中的测试用例进行变异操作,得到所述第一测试用例集合。
3.根据权利要求1所述的方法,所述基于所述第二测试用例集合对所述目标程序进行模糊测试,包括:
对所述第二测试用例集合中的测试用例进行变异操作,得到第五测试用例集合;
利用所述第五测试用例集合对所述目标程序进行模糊测试。
4.根据权利要求1所述的方法,所述第二测试用例集合中的测试用例的第一目标特征的特征值均大于或小于所述第一测试用例集合中除所述第二测试用例集合中的测试用例以外的测试用例的第一目标特征的特征值。
5.根据权利要求4所述的方法,所述第二测试用例集合与所述第一测试用例集合中的测试用例的数量的比值小于或等于0.4。
6.根据权利要求2所述的方法,所述第四测试用例集合中的测试用例的第二目标特征的特征值均大于或小于所述第三测试用例集合中除所述第四测试用例集合中的测试用例以外的测试用例的第二目标特征的特征值。
7.根据权利要求6所述的方法,所述第四测试用例集合与所述第三测试用例集合中的测试用例的数量的比值小于或等于0.4。
8.根据权利要求1或2所述的方法,所述多个特征包括以下中的一种或多种:测试用例的基本特征,测试用例触发所述目标程序的基本块的特征以及测试用例触发的执行路径特征。
9.根据权利要求1或2所述的方法,所述有趣测试用例包括以下中的一种或多种:能够触发新的执行路径的测试用例、能够触发所述目标程序异常情况的测试用例。
10.一种模糊测试装置,所述装置包括:
第一确定模块,用于利用第一测试用例集合对目标程序进行模糊测试,确定所述第一测试用例集合中的测试用例的多个特征的特征值;
第二确定模块,用于根据所述多个特征对发现有趣测试用例的影响,确定第一目标特征;
第一选择模块,用于从所述第一测试用例集合中选择所述第一目标特征的特征值满足第一预设条件的测试用例,得到第二测试用例集合;
测试模块,用于基于所述第二测试用例集合对所述目标程序进行模糊测试。
11.根据权利要求10所述的装置,所述装置还包括:
第三确定模块,用于利用第三测试用例集合对所述目标程序进行模糊测试,确定所述第三测试用例集合中的测试用例的多个特征的特征值;
第四确定模块,用于根据所述多个特征对发现有趣测试用例的影响,确定第二目标特征;
第二选择模块,用于从所述第三测试用例集合中选择所述第二目标特征的特征值满足第二预设条件的测试用例,得到第四测试用例集合;
变异模块,用于对所述第四测试用例集合中的测试用例进行变异操作,得到所述第一测试用例集合。
12.根据权利要求10所述的装置,所述测试模块还用于:
对所述第二测试用例集合中的测试用例进行变异操作,得到第五测试用例集合;
利用所述第五测试用例集合对所述目标程序进行模糊测试。
13.根据权利要求10所述的装置,所述第二测试用例集合中的测试用例的第一目标特征的特征值均大于或小于所述第一测试用例集合中除所述第二测试用例集合中的测试用例以外的测试用例的第一目标特征的特征值。
14.根据权利要求13所述的装置,所述第二测试用例集合与所述第一测试用例集合中的测试用例的数量的比值小于或等于0.4。
15.根据权利要求11所述的装置,所述第四测试用例集合中的测试用例的第二目标特征的特征值均大于或小于所述第三测试用例集合中除所述第四测试用例集合中的测试用例以外的测试用例的第二目标特征的特征值。
16.根据权利要求15所述的装置,所述第四测试用例集合与所述第三测试用例集合中的测试用例的数量的比值小于或等于0.4。
17.根据权利要求10或11所述的装置,所述多个特征包括以下中的一种或多种:测试用例的基本特征,测试用例触发所述目标程序的基本块的特征以及测试用例触发的执行路径特征。
18.根据权利要求10或11所述的装置,所述有趣测试用例包括以下中的一种或多种:能够触发新的执行路径的测试用例、能够触发所述目标程序异常情况的测试用例。
19.一种模糊测试装置,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器被配置为执行所述可执行代码,以实现如权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210374020.XA CN114840418A (zh) | 2022-04-11 | 2022-04-11 | 模糊测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210374020.XA CN114840418A (zh) | 2022-04-11 | 2022-04-11 | 模糊测试方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114840418A true CN114840418A (zh) | 2022-08-02 |
Family
ID=82563691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210374020.XA Pending CN114840418A (zh) | 2022-04-11 | 2022-04-11 | 模糊测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114840418A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117009980A (zh) * | 2023-08-10 | 2023-11-07 | 哈尔滨工业大学 | 一种针对智能合约漏洞检测的有指导的模糊测试方法 |
-
2022
- 2022-04-11 CN CN202210374020.XA patent/CN114840418A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117009980A (zh) * | 2023-08-10 | 2023-11-07 | 哈尔滨工业大学 | 一种针对智能合约漏洞检测的有指导的模糊测试方法 |
CN117009980B (zh) * | 2023-08-10 | 2024-03-15 | 哈尔滨工业大学 | 一种针对智能合约漏洞检测的有指导的模糊测试方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9098621B2 (en) | Modeling software behavior using learned predicates | |
CN110603527B (zh) | 用于服务器侧生产代码的条件调试的方法、系统和设备 | |
CN112559367B (zh) | 基于系统调用依赖图的内核模糊测试用例生成方法 | |
CN109635568B (zh) | 一种基于静态分析和模糊测试相结合的并发漏洞检测方法 | |
JP6976064B2 (ja) | モデルチェックのためのデータ構造抽象化 | |
CN114328173A (zh) | 软件模糊测试方法和装置、电子设备及存储介质 | |
Lin et al. | Test coverage optimization for large code problems | |
US11868465B2 (en) | Binary image stack cookie protection | |
CN116069656A (zh) | 一种以漏洞为导向的高效区域模糊测试方法 | |
CN114840418A (zh) | 模糊测试方法及装置 | |
US20150020056A1 (en) | Methods and systems for file processing | |
US20230333971A1 (en) | Workload generation for optimal stress testing of big data management systems | |
US20170161176A1 (en) | Trace recovery via statistical reasoning | |
US20220335135A1 (en) | Vulnerability analysis and reporting for embedded systems | |
CN113419960B (zh) | 用于可信操作系统内核模糊测试的种子生成方法及系统 | |
Zhao et al. | A systematic review of fuzzing | |
CN111045891B (zh) | 基于java多线程的监控方法、装置、设备以及存储介质 | |
Khan et al. | Detecting wake lock leaks in android apps using machine learning | |
CN115454473A (zh) | 基于深度学习漏洞决策的数据处理方法及信息安全系统 | |
Zhang et al. | Multi-level directed fuzzing for detecting use-after-free vulnerabilities | |
Di Nardo et al. | Evolutionary robustness testing of data processing systems using models and data mutation (T) | |
EP3671467A1 (en) | Gui application testing using bots | |
JP5525658B2 (ja) | 計算機、リソース使用量計算方法及びリソース使用量計算プログラム | |
Pramanik et al. | Study and Comparison of General Purpose Fuzzers | |
Allabadi et al. | METIS: resource and context-aware monitoring of finite state properties |
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 |