CN111858307B - 模糊测试方法和设备 - Google Patents

模糊测试方法和设备 Download PDF

Info

Publication number
CN111858307B
CN111858307B CN202010558216.5A CN202010558216A CN111858307B CN 111858307 B CN111858307 B CN 111858307B CN 202010558216 A CN202010558216 A CN 202010558216A CN 111858307 B CN111858307 B CN 111858307B
Authority
CN
China
Prior art keywords
resource
test
access
accessed
test input
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.)
Active
Application number
CN202010558216.5A
Other languages
English (en)
Other versions
CN111858307A (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.)
Samsung China Semiconductor Co Ltd
Samsung Electronics Co Ltd
Original Assignee
Samsung China Semiconductor Co Ltd
Samsung Electronics Co Ltd
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 Samsung China Semiconductor Co Ltd, Samsung Electronics Co Ltd filed Critical Samsung China Semiconductor Co Ltd
Priority to CN202010558216.5A priority Critical patent/CN111858307B/zh
Publication of CN111858307A publication Critical patent/CN111858307A/zh
Priority to KR1020210033539A priority patent/KR20210156728A/ko
Priority to US17/336,360 priority patent/US11868238B2/en
Application granted granted Critical
Publication of CN111858307B publication Critical patent/CN111858307B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3696Methods or tools to render software testable
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • 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/3676Test management for coverage analysis
    • 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

Abstract

提供一种模糊测试方法和设备,所述模糊测试方法包括:向被测对象测试入口注入测试输入;获取基于所述测试输入所述被测对象被执行过程中的资源访问反馈,其中,所述资源访问反馈指示所述被测对象对资源的访问情况;根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试。根据所述测试方法和设备,能够通过利用资源访问反馈来引导模糊测试的方式,获取可用输入用例,从而基于获取的可用输入用例来对同一执行路径进行深入测试,来达到发现更多的深层次漏洞的技术效果。

Description

模糊测试方法和设备
技术领域
本发明总体来说涉及计算机技术领域,更具体地讲,涉及一种模糊测试方法和设备。
背景技术
模糊测试(Fuzz Testing,简称“Fuzzing”)是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。其核心思想是将无效数据,意料之外的数据或随机数据中的一个或多个的组合作为输入注入到一个程序中,并监视程序异常,如崩溃、内置代码断言失败、潜在的内存泄漏、日志异常等,以发现可能的程序错误。
目前模糊测试可被分为黑盒测试、白盒测试以及灰盒测试三大类,其中,灰盒测试又称为覆盖率指导的突变模糊测试,是指介于白盒测试与黑盒测试之间的一种测试,不仅关注输出和输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。例如代码覆盖率。
目前,在灰盒测试中,可通过改变输入的种子来生成新的测试用例,例如,灰盒测试使用程序插桩的方式来跟踪输入在目标系统执行过程中产生的代码覆盖率,模糊管理器使用产生的代码覆盖率来决定要添加到输入序列中的输入,以使得代码覆盖率得到提升。例如,如果一个输入能产生新的执行路径,则会保留该输入,否则,丢弃该输入。通过这种连续循环的方式进行模糊处理,可以贡献更多的输入用例。
然而,高代码覆盖率并不意味能够发现真正的漏洞。实际上,大多数路径都与安全性问题无关,并且软件漏洞通常是由不正确使用对安全性敏感的函数(例如类似于内存操作的strcpy())引起的。换句话说,真正的漏洞实际上隐藏在一些包含strcpy()等内存操作函数的执行路径,然而,实际上会有数千种可能的输入组合可以到达执行路径。但是,现有的代码覆盖率所指导的灰盒测试到达指定的执行路径时,将丢弃其他可以到达该路径的输入,因此,现有的灰盒测试会因此丢失了隐藏在该路径中的漏洞或者退化为黑盒测试。
以图1为例,假设种子变异算法的规则是每次对输入扩展指定的长度,例如100。当输入为5个字符时,图1中的代码都将会执行。当下次输入为105个字符时,基于代码覆盖率的模糊测试(即,灰盒测试)会认为此次执行没有产生新的代码覆盖,将会停止对输入的扩展。然而,事实上,只有当输入为大于1000个字符的字符时,图1中的代码中才存在缓冲区溢出。因此,此时的代码覆盖率引导的模糊测试将会失效并退化为黑盒测试。
发明内容
本发明的示例性实施例在于提供一种模糊测试方法和设备,以克服现有的基于代码覆盖率的模糊测试可能会丢失了隐藏在某个路径中的漏洞或者退化为黑盒测试的缺陷。
根据本发明的示例性实施例的一方面,提供一种模糊测试方法,包括:向被测对象测试入口注入测试输入;获取基于所述测试输入所述被测对象被执行过程中的资源访问反馈,其中,所述资源访问反馈指示所述被测对象对资源的访问情况;根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试。通过这种方式,可以通过利用资源访问反馈来引导模糊测试的方式,获取可用输入用例,从而基于获取的可用输入用例来对同一执行路径进行深入测试,来达到发现更多的深层次漏洞的技术效果。
可选地,所述模糊测试方法还包括:确定基于所述测试输入所述被测对象所执行的代码行;所述根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列具体包括:如果所述被测对象所执行的代码行未产生新的代码行,则根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列。通过这种方式,可在代码覆盖方式的基础上结合资源访问反馈方法来确定测试输入是否是可用的测试用例,能够增加测试输入判断的准确性。
可选地,所述获取资源访问反馈的步骤包括:获取所述被测对象为处理所述测试输入所申请的资源组,其中,所述资源组包括至少一个资源;获取与所述资源组对应的资源标识码;获取与所述资源标识码对应的访问标识码;将获取的访问标识码与对应的资源标识码确定为一个标识对;确定与所述标识对相应的资源中是否存在被首次访问的资源;如果存在被首次访问的资源,则产生指示已访问新资源的资源访问反馈;如果不存在被首次访问的资源,则产生指示未访问新资源的资源访问反馈;其中,所述资源标识码是指用于标识资源申请程序指令所在位置的符号,所述访问标识码是指用于标识资源访问程序指令所在位置的符号。通过这种确定标识对所对应的资源是否被访问的方式,消除了实际地址和分配长度在实际执行时可变所导致的访问确认不准确的缺陷。
可选地,所述根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列的步骤包括:确定所述资源访问反馈是否指示已访问新资源;如果所述资源访问反馈指示已访问新资源,则将所述测试输入添加到测试输入队列;如果所述资源访问反馈指示未访问新资源,则丢弃所述测试输入。
可选地,所述模糊测试方法还包括:若所述资源访问反馈指示已访问新资源,确定与所述标识对相应的访问标识码所标识的资源访问的程序指令执行时所访问的地址区间;如果确定的地址区间未位于与所述标识对相应的资源的起始地址和结束地址之间,则发出指示所述被测对象异常的报警信号。通过这种方式,可以及时发现因溢出导致的被测对象异常的问题。
可选地,所述资源包括以下项中的至少一项:内存、网络连接池中的连接、图像中的像素、图的节点和图的边。
根据本发明的示例性实施例的另一方面,提供一种模糊测试设备,包括:注入单元,用于向被测对象测试入口注入测试输入;获取单元,用于获取基于所述测试输入所述被测对象被执行过程中的资源访问反馈,其中,所述资源访问反馈指示所述被测对象对资源的访问情况;确定单元,用于根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试。通过这种方式,可以通过利用资源访问反馈来引导模糊测试的方式,获取可用输入用例,从而基于获取的可用输入用例来对同一执行路径进行深入测试,来达到发现更多的深层次漏洞的技术效果。
可选地,所述模糊测试设备还包括:代码行确定单元,用于确定基于所述测试输入所述被测对象所执行的代码行;所述确定单元,用于若所述代码行确定单元确定所述被测对象所执行的代码行未产生新的代码行,根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列。通过这种方式,可在代码覆盖方式的基础上结合资源访问反馈方法来确定测试输入是否是可用的测试用例,能够增加测试输入判断的准确性。
可选地,所述获取单元包括:资源组获取子单元,用于获取所述被测对象为处理所述测试输入所申请的资源组,其中,所述资源组包括至少一个资源;资源标识码获取子单元,用于获取与所述资源组对应的资源标识码;访问标识码获取子单元,用于获取与所述资源标识码对应的访问标识码;标识对确定子单元,用于将获取的访问标识码与对应的资源标识码确定为一个标识对;资源访问确定子单元,用于确定与所述标识对相应的资源中是否存在被首次访问的资源,如果存在被首次访问的资源,则产生指示已访问新资源的资源访问反馈,如果不存在被首次访问的资源,则产生指示未访问新资源的资源访问反馈;其中,所述资源标识码是指用于标识资源申请程序指令所在位置的符号,所述访问标识码是指用于标识资源访问程序指令所在位置的符号。通过这种确定标识对所对应的资源是否被访问的方式,消除了实际地址和分配长度在实际执行时可变所导致的访问确认不准确的缺陷。
可选地,所述确定单元用于,确定所述资源访问确定子单元产生的所述资源访问反馈是否指示已访问新资源,如果所述资源访问反馈指示已访问新资源,则确定所述测试输入添加到测试输入队列,如果所述资源访问反馈指示指示未访问新资源,则确定丢弃所述测试输入。
可选地,所述模糊测试设备还包括:区间确定单元和报警单元,其中,区间确定单元用于若所述资源访问确定子单元产生的资源访问反馈指示已访问新资源,确定与所述标识对相应的访问标识码所标识的资源访问的程序指令执行时所访问的地址区间;所述报警单元,用于如果确定的地址区间未位于与所述标识对相应的资源的起始地址和结束地址之间,发出指示所述被测对象异常的报警信号。通过这种方式,可以及时发现因溢出导致的被测对象异常的问题。
可选地,所述资源包括以下项中的至少一项:内存、网络连接池中的连接、图像中的像素、图的节点和图的边。
根据本发明的示例性实施例的另一方面,提供一种存储有计算机程序的计算机可读存储介质,其中,当所述计算机程序被处理器执行时实现如上所述的模糊测试方法。
根据本发明示例性实施例的另一方面,提供一种电子设备,其中,所述电子设备包括:处理器;存储器,存储有计算机程序,当所述计算机程序被处理器执行时,实现根据本发明所述的模糊测试方法。
根据本发明示例性实施例的确定应用的模糊测试方法和设备,能够通过利用资源访问反馈来引导模糊测试的方式,获取可用输入用例,从而基于获取的可用输入用例来对同一执行路径进行深入测试,来达到发现更多的深层次漏洞的技术效果。
将在接下来的描述中部分阐述本发明总体构思另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本发明总体构思的实施而得知。
附图说明
通过下面结合示例性地示出实施例的附图进行的详细描述,本发明示例性实施例的上述和其他目的将会变得更加清楚,其中:
图1示出现有技术中基于代码覆盖率的模糊测试失效的代码示意图;
图2示出根据本发明示例性实施例的模糊测试方法的流程图;
图3示出根据本发明示例性实施例的获取资源访问反馈的步骤的流程图;
图4示出根据本发明示例性实施例的资源组的示例;
图5示出根据本发明示例性实施例的确定与任一标识对相应的资源中是否存在被所述被测对象首次访问的资源的示例;
图6示出根据本发明示例性实施例的模糊测试设备的框图;
图7示出根据本发明示例性实施例的获取单元的框图。
具体实施方式
现将详细参照本发明的示例性实施例,所述实施例的示例在附图中示出,其中,相同的标号始终指的是相同的部件。以下将通过参照附图来说明所述实施例,以便解释本发明。
图2示出根据本发明示例性实施例的模糊测试方法的流程图。
在步骤S100,向被测对象测试入口注入测试输入。
这里,被测对象是指可以通过进行模糊测试来发现软件漏洞的目标系统,测试输入可以是无效数据,意料之外的数据或随机数据中的一个或多个的组合。
在步骤S200,获取基于所述测试输入所述被测对象被执行过程中的资源访问反馈,其中,所述资源访问反馈指示所述被测对象对资源的访问情况。
在本发明的示例性实施例中,基于所述测试输入所述被测对象被执行的过程可以被理解为灰盒测试的过程。但应理解,本发明示例性实施例中被执行的过程不仅限于灰盒测试,也可以是其他类型的模糊测试,本发明在此不做任何限定。
作为示例,资源可以是指计算机程序运行时可访问的计算资源或外部资源,例如可以包括但不限于内存(例如,全局变量、堆和栈中的一个或者多个的组合)、网络连接池中的连接、图像中的像素、图的节点或者图的边等。
此外,作为示例,资源访问反馈可以是用来表示所述被测对象执行过程中对资源的访问是否存在被首次访问的资源的结果,例如,资源访问反馈为一个反馈指示符。例如,反馈指示符为“1”或者“0”,其中,反馈指示符为“1”时,指示存在被首次访问的资源,反馈指示符为“0”时,指示不存在被首次访问的资源。
下面,将结合图3对获取资源访问反馈的步骤进行详细说明。
图3示出根据本发明示例性实施例的获取资源访问反馈的步骤的流程图。
如图3所示,在步骤S301,获取所述被测对象为处理所述测试输入所申请的资源组,其中,所述资源组包括至少一个资源。
具体说来,所述被测对象处理所述测试输入过程中可以包括多条资源申请程序指令,其中,任一条资源申请程序指令可申请一个资源组。一个资源组可以是指一条资源申请程序指令所申请的资源的集合,其中,该资源组所包括的每个资源对应有一个实际地址(即,绝对地址),例如,资源组W可以包括起始地址为9010至终止地址为9020区间的资源(如图4所示)。
此外,应理解,所述被测对象处理所述测试输入过程中所包括的不同资源申请程序指令所申请的资源可以是不同类型的资源,但是一条资源申请程序指令申请的资源组所包括的资源为同一类型。
在步骤S302,获取与所述资源组对应的资源标识码。
这里,所述资源标识码是指用于标识资源申请程序指令所在位置的符号。例如,资源申请程序指令为“第10行:char*p1=(char*)malloc(10*sizeof(char));”时,用于标识资源申请程序指令“第10行:char*p1=(char*)malloc(10*sizeof(char))”所在位置的符号可以标记为5023;再例如,资源申请程序指令为“第11行:char p2[10];”时,用于标识资源申请程序指令“第11行:char p2[10];”所在位置的符号可以标记为5024。
此外,在一个示例中,申请的包括起始地址为9010至终止地址为9020区间的资源的资源组的程序指令所在位置标记有一个符号8088,申请的包括起始地址为9030至终止地址为9040区间的资源的资源组的程序指令所在位置可以标记有一个符号8098。8088即是与申请的包括起始地址为9010至终止地址为9020区间的资源的资源组对应的资源标识码。8098即是与申请的包括起始地址为9030至终止地址为9040区间的资源的资源组对应的资源标识码。
在步骤S303,获取与所述资源标识码对应的访问标识码。
这里,所述访问标识码是指用于标识资源访问程序指令所在位置的符号。例如,资源访问程序指令为“第22行:memset(dest,0,10)”时,用于标识资源访问程序指令“第22行:memset(dest,0,10)”所在位置的符号可以标记为507;资源访问程序指令为“第23行:memset(dest,0,10)”时,用于标识资源访问的程序指令“第23行:memset(dest,0,10)”所在位置的符号可以标记为508;资源访问程序指令为“第24行:strcpy(dest,src)”时,用于标识资源访问程序指令“第24行:strcpy(dest,src)”所在位置的符号可以标记为509。
此外,在上面的例子中,起始地址为9010至终止地址为9014区间的资源包括在包括起始地址为9010至终止地址为9020区间的资源的资源组中,如果存在一个用于访问起始地址为9010至终止地址9014区间的资源的程序指令,则访问起始地址为9010至终止地址为9014区间的资源的程序指令所在位置可以标记有一个符号214,则214即是与资源标识码8088对应的一个访问标识码。
再例如,起始地址为9035至终止地址为9037区间的资源包括在包括起始地址为9030至终止地址为9040区间的资源的资源组中,如果存在一个用于访问起始地址为9035至终止地址9037区间的资源的程序指令,则访问起始地址为9035至终止地址9037区间的资源的程序指令所在位置可以标记有一个符号215。215即是与资源标识码8098对应的一个访问标识码。
通过与上述方法类似的方法,可以在模糊测试的过程中获取到与每个资源标识码对应的访问标识码。
在获取到资源标识码以及与该资源标识码对应的访问标识码之后,可在步骤S304,将获取的访问标识码与对应的资源标识码确定为一个标识对。
在上面的例子中,资源标识码8088与访问标识码214为一个标识对,在本发明中可被记为(8088,214),资源标识码8098和访问标识码215为一个标识对,在本发明中可被记为(8098,215)。
这里,应理解,尽管上述示例中的资源标识码和访问标识码为数字字符,但是本发明中的资源标识码和访问标识码不限于此,还可以是英文字符、数字、预定标点符号中的一个或多个的组合。本发明在此不做任何限定。
在步骤S305,确定与所述标识对相应的资源中是否存在被首次访问的资源。如果存在被首次访问的资源,则在步骤S306,产生指示已访问新资源的资源访问反馈;如果不存在被首次访问的资源,则在步骤S307,产生指示未访问新资源的资源访问反馈。
具体说来,在确定出标识对后,可创建并追踪与每个标识对相对应的资源组的访问记录。例如,假设被测对象执行过程中有两条资源申请程序指令a和b,有三条资源访问程序指令x、y和z。标识资源申请程序指令a所在位置的资源标识码为A,标识资源申请程序指令b所在位置的资源标识码为B,标识资源访问程序指令x所在位置的资源标识码为X,标识资源访问程序指令y所在位置的资源标识码为Y,标识资源访问程序指令z所在位置的资源标识码为Z。
如果资源访问程序指令y访问资源申请程序指令a所申请的资源组,资源访问程序指令x、y和z分别访问资源申请程序指令b所申请的资源组,则需要追踪申请的资源组的访问记录。例如,需要追踪如下表1所示的标识对所对应的资源访问指令对相应的资源组的访问记录:
表1
访问标识码X 访问标识码Y 访问标识码Z
资源标识码A
资源标识码B
具体说来,针对同一标识对,可将该同一标识对的多次执行映射到同一资源组的访问记录中。例如,在实际中,当被测对象处理测试输入时,根据不同的程序设计和实现,资源标识符对应的资源申请程序指令和访问标识码对应的资源访问程序指令会被执行多次,甚至数百万次。例如,在处理某一个测试输入时可被执行多次,或者在处理多个测试输入的过程中被执行多次。基于上述原因,同一标识对在本次执行时申请的资源的实际地址和访问的资源的实际地址与之前执行或者之后执行时申请的资源的实际地址和访问的资源的实际地址并不完全相同。但是,即使执行多次,但是由于是同一个标识对,因此,只需要创建或追踪一条资源组的访问记录,即可确定与该标识对相应的资源中是否存在被所述被测对象首次访问的资源。
为了追踪到标识对相应的资源组的访问记录,可将资源组所包括的资源的绝对地址(即,实际地址)转换为相对地址,即将资源组中的资源从按顺序进行编号,例如,将资源组中的资源按照长度从1开始编号。这里,由于资源申请程序指令所申请的资源的大小是可变的,因此资源组被访问记录的长度可以以历史最大长度为限。
下面,将结合具体的示例描述如何确定与任一标识对相应的资源中是否存在被所述被测对象首次访问的资源。
图5示出根据本发明示例性实施例的确定与任一标识对相应的资源中是否存在被所述被测对象首次访问的资源的示例。
如图5所示,假设标识对为(A,X),其中,标识资源申请程序指令a所在位置的资源标识码为A,标识资源访问程序指令x所在位置的资源标识码为X。资源申请程序指令a申请了资源组P,其中,用“0”表示资源未被访问,“1”表示资源已被访问,资源申请程序指令a在第一次执行时,申请了4个资源,实际地址区间为0x8040~0x8043。
资源访问程序指令x在第一次执行时,访问了编号2的资源和编号3的资源,由于是第一次访问,因此,触发了编号2的资源和编号3的资源的访问。此时,资源组P中存在被首次访问的资源,因此,可产生指示已访问新资源的资源访问反馈。
资源访问程序指令x在第二次执行时,也访问了编号2的资源和编号3的资源,但这两个资源在资源访问程序指令x第一次执行时就被访问过了,所以未触发新编号的资源访问。换言之,在资源访问程序指令x在第二次执行时,资源组P中不存在被首次访问的资源,因此,可产生指示未访问新资源的资源访问反馈。
资源申请程序指令a在第二次执行时,申请了8个资源,实际地址区间为0x8080~0x8087。这里应注意,虽然资源申请程序指令a在第一执行时和第二次执行时所申请的资源的实际地址不同,但是由于属于同一个资源组P,因为可将之前的资源的长度为4扩展为长度为8。即资源组P包括编号为1至8的资源,资源访问程序指令x在第三次执行时,访问了编号为1的资源,由于编号为1的资源从被未访问过,所以,触发了新编号的资源访问。此时,资源组P中存在被首次访问的资源,因此,可产生指示已访问新资源的资源访问反馈。
通过这种确定标识对所对应的资源是否被访问的方式,消除了实际地址和分配长度在实际执行时可变所导致的访问确认不准确的缺陷。
返回参照图2,在步骤S400,根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试。
例如,假设资源访问反馈为反馈指示符,具体地可以通过检查该反馈指示符来确定是否将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试。例如,如果该反馈指示符为“1”,指示存在被首次访问的资源)时,说明该测试输入是可用的,因此可将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试;如果该反馈指示符为“0”,指示不存在被首次访问的资源,说明该测试输入不可用,因此可将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试。
这里,关于根据所述资源访问反馈确定是否基于所述测试输入对所述被测对象进行下一次的模糊测试的步骤,作为示例,可确定所述资源访问反馈是否指示已访问新资源,如果所述资源访问反馈指示已访问新资源,则将所述测试输入添加到测试输入队列,以用于对所述被测对象进行下一次的模糊测试。如果所述资源访问反馈指示未访问新资源,则丢弃所述测试输入。
实际上,由于在现有技术中栈内存和堆内存是动态分配的(前者由编译器分配,后者由程序员分配)。因此,当程序中存在其他操作时,就有可能更改实际得到的地址范围,而通过记录标识对和对应资源的访问情况的方式,可以在重复访问和/或多轮测试的情况下消除地址的变化。
由此可见,通过上述方式,可以筛选出可用输入用例,从而基于筛选出的可用输入用例来对同一执行路径进行深入测试,来达到发现更多的深层次漏洞的技术效果。
此外,优选地,所述模糊测试方法可附加地还包括监测被测对象是否异常的步骤(图2中未示出)。
具体说来,若所述资源访问反馈指示已访问新资源,确定与所述任一标识对相应的访问标识码所标识的资源访问的程序指令执行时所访问的地址区间,如果确定的地址区间未位于与所述任一标识对相应的资源的起始地址和结束地址之间,则发出指示所述被测对象异常的报警信号。
例如,假设标识对(6900,230)中的资源标识码6900对应的资源组包括起始地址为0x6542至终止地址为0x6548区间的资源,访问标识码230对应访问起始地址为0x6546至终止地址为0x6549区间的资源,其中,用“0”表示资源未被访问,“1”表示资源已被访问,可以看出,资源标识码6900对应的资源组所包括的资源在申请时均未被访问过(所有资源均是“0”),在操作后地址为0x6546和地址为0x6547的资源被首次访问了(由“0”变为“1”)。此外,资源标识码6900对应的资源中地址为0x6548和地址为0x6549的资源被访问了,相当于标识对(6900,230)相应的地址区间0x6546-0x6549未位于资源标识码6900对应的资源组的地址区间0x6542-0x6548内,相当于在访问标识码对应的资源的访问过程中发生了溢出问题(上溢或者下溢)。该溢出会导致被测对象异常,因此,可发出指示所述被测对象异常的报警信号。
此外,虽然在访问标识码对应的资源的访问过程中发生了溢出问题,但是由于资源访问反馈指示已产生访问新资源,因此也将所述测试输入添加到测试输入队列。
此外,优选地,所述模糊测试方法可附加地还包括释放资源组的步骤(图2中未示出)。
具体说来,可响应于对所述至少一个资源组中的一个或多个资源组的资源释放操作释放对应的资源组。可选择地,也可删除标识对所对应的资源访问指令对相应的资源组的访问记录。通过这种方式,可以保证内存的重复使用。
此外,优选地,所述模糊测试方法可附加地还包括利用代码覆盖率对测试输入进行初筛的步骤(在图2中未示出)。
具体说来,确定基于所述测试输入所述被测对象被执行过程中的所述被测对象所执行的代码行,如果产生新的代码行,则将所述测试输入添加到测试输入队列;如果未产生新的代码行,则根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列。通过这种方式,可在代码覆盖方式的基础上结合资源访问反馈方法来确定测试输入是否是可用的测试用例,能够增加测试输入判断的准确性。
需要说明的是,在所述被测对象被执行过程中,获取所述资源访问反馈的步骤和确定所述被测对象所执行的代码行是否产生新的代码行的步骤,可以理解的是两个步骤的先后顺序不固定,若先获得了所述被测对象所执行的代码行产生新的代码行,则可以据此将所述测试输入添加到测试输入队列;若首先获取所述资源访问反馈,且所述资源访问反馈指示已访问新资源,则可以将所述测试输入添加到测试输入队列;而若先确定了所述被测对象所执行的代码行未产生新的代码行,则继续获取资源访问反馈,然后再根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列。
综上,在根据本发明示例性实施例的模糊测试方法中,可以通过利用资源访问反馈来引导模糊测试的方式,获取可用输入用例,从而基于获取的可用输入用例来对同一执行路径进行深入测试,来达到发现更多的深层次漏洞的技术效果。
图6示出根据本发明示例性实施例的模糊测试设备的框图。
如图6所示,根据本发明示例性实施例的模糊测试设备包括注入单元100、获取单元200和确定单元300。
注入单元100用于向被测对象测试入口注入测试输入。
这里,被测对象是指可以通过进行模糊测试来发现软件漏洞的目标系统,测试输入可以是无效数据,意料之外的数据或随机数据中的一个或多个的组合。
获取单元200,用于基于所述测试输入所述被测对象被执行过程中的获取资源访问反馈,其中,所述资源访问反馈指示所述被测对象对资源的访问情况。
在本发明的示例性实施例中,基于所述测试输入所述被测对象被执行的过程可以被理解为模糊测试的过程。但应理解,本发明示例性实施例中被执行的过程不仅限于灰盒测试,也可以是其他类型的模糊测试,本发明在此不做任何限定。
作为示例,资源可以是指计算机程序运行时可访问的计算资源或外部资源,例如可以包括但不限于内存(例如,全局变量、堆和栈中的一个或者多个的组合)、网络连接池中的连接、图像中的像素、图的节点或者图的边等。
此外,作为示例,资源访问反馈可以是用来表示所述被测对象执行过程中对资源的访问是否存在被首次访问的资源的结果,例如,资源访问反馈为一个反馈指示符。例如,反馈指示符为“1”或者“0”,其中,反馈指示符为“1”时,指示存在被首次访问的资源,反馈指示符为“0”时,指示不存在被首次访问的资源。
作为示例,如图7所示,获取单元200可包括:资源组获取子单元210、资源标识码获取子单元220、访问标识码获取子单元230、标识对确定子单元240和资源访问确定子单元250。
具体说来,资源组获取子单元210用于获取所述被测对象为处理所述测试输入所申请的资源组,其中,所述资源组包括至少一个资源。
具体说来,所述被测对象处理所述测试输入过程中可以包括多条资源申请程序指令,其中,任一条资源申请程序指令可申请一个资源组。一个资源组可以是指一条资源申请程序指令所申请的资源的集合,其中,该资源组所包括的每个资源对应有一个实际地址(即,绝对地址)。
此外,应理解,所述被测对象处理所述测试输入过程中所包括的不同资源申请程序指令所申请的资源可以是不同类型的资源,但是一条资源申请程序指令申请的资源组所包括的资源为同一类型。
资源标识码获取子单元220获取与所述资源组对应的资源标识码。
这里,所述资源标识码是指用于标识资源申请程序指令所在位置的符号。例如,资源申请程序指令为“第10行:char*p1=(char*)malloc(10*sizeof(char));”时,用于标识资源申请程序指令“第10行:char*p1=(char*)malloc(10*sizeof(char))”所在位置的符号可以标记为5023;再例如,资源申请程序指令为“第11行:char p2[10];”时,用于标识资源申请程序指令“第11行:char p2[10];”所在位置的符号可以标记为5024。
此外,在一个示例中,申请的包括起始地址为9010至终止地址为9020区间的资源的资源组的程序指令所在位置标记有一个符号8088,申请的包括起始地址为9030至终止地址为9040区间的资源的资源组的程序指令所在位置可以标记有一个符号8098。8088即是与申请的包括起始地址为9010至终止地址为9020区间的资源的资源组对应的资源标识码。8098即是与申请的包括起始地址为9030至终止地址为9040区间的资源的资源组对应的资源标识码。
访问标识码获取子单元230,用于获取与所述资源标识码对应的访问标识码。
这里,所述访问标识码是指用于标识资源访问程序指令所在位置的符号。例如,资源访问程序指令为“第22行:memset(dest,0,10)”时,用于标识资源访问程序指令“第22行:memset(dest,0,10)”所在位置的符号可以标记为507;资源访问程序指令为“第23行:memset(dest,0,10)”时,用于标识资源访问的程序指令“第23行:memset(dest,0,10)”所在位置的符号可以标记为508;资源访问程序指令为“第24行:strcpy(dest,src)”时,用于标识资源访问程序指令“第24行:strcpy(dest,src)”所在位置的符号可以标记为509。
此外,在上面的例子中,起始地址为9010至终止地址为9014区间的资源包括在包括起始地址为9010至终止地址为9020区间的资源的资源组中,如果存在一个用于访问起始地址为9010至终止地址9014区间的资源的程序指令,则访问起始地址为9010至终止地址为9014区间的资源的程序指令所在位置可以标记有一个符号214,则214即是与资源标识码8088对应的一个访问标识码。
再例如,起始地址为9035至终止地址为9037区间的资源包括在包括起始地址为9030至终止地址为9040区间的资源的资源组中,如果存在一个用于访问起始地址为9035至终止地址9037区间的资源的程序指令,则访问起始地址为9035至终止地址9037区间的资源的程序指令所在位置可以标记有一个符号215。215即是与资源标识码8098对应的一个访问标识码。
通过与上述方法类似的方法,可以在模糊测试的过程中获取到与每个资源标识码对应的访问标识码。
在获取到资源标识码以及与该资源标识码对应的访问标识码之后,标识对确定子单元240将获取的访问标识码与对应的资源标识码确定为一个标识对。
在上面的例子中,资源标识码8088与访问标识码214为一个标识对,在本发明中可被记为(8088,214),资源标识码8098和访问标识码215为一个标识对,在本发明中可被记为(8098,215)。
这里,应理解,尽管上述示例中的资源标识码和访问标识码为数字字符,但是本发明中的资源标识码和访问标识码不限于此,还可以是英文字符、数字、预定标点符号中的一个或多个的组合。本发明在此不做任何限定。
资源访问确定子单元250,用于确定与所述标识对相应的资源中是否存在被首次访问的资源,如果存在被首次访问的资源,则产生指示已访问新资源的资源访问反馈,如果不存在被首次访问的资源,则产生指示未访问新资源的资源访问反馈。
通过这种确定标识对所对应的资源是否被访问的方式,消除了实际地址和分配长度在实际执行时可变所导致的访问确认不准确的缺陷。
返回参照图6,确定单元300用于,根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试。
例如,假设资源访问反馈为反馈指示符,具体地确定单元300可以通过检查该反馈指示符来确定是否将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试。例如,如果该反馈指示符为“1”,指示存在被首次访问的资源时,说明该测试输入是可用的,因此可将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试;如果该反馈指示符为“0”,指示不存在被首次访问的资源,说明该测试输入不可用,因此可将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试。
作为示例,确定单元300确定所述资源访问确定子单元250产生的所述资源访问反馈是否指示已访问新资源,如果所述资源访问反馈指示已访问新资源,则确定单元300将所述测试输入添加到测试输入队列;如果所述资源访问反馈指示已访问新资源,则确定单元300丢弃所述测试输入。
实际上,由于在现有技术中栈内存和堆内存是动态分配的(前者由编译器分配,后者由程序员分配)。因此,当程序中存在其他操作时,就有可能更改实际得到的地址范围,而通过记录标识对和对应资源的访问情况的方式,可以在重复访问和/或多轮测试的情况下消除地址的变化。
由此可见,通过上述方式,可以筛选出可用输入用例,从而基于筛选出的可用输入用例来对同一执行路径进行深入测试,来达到发现更多的深层次漏洞的技术效果。
此外,所述模糊测试设备还包括:区间确定单元和报警单元(图6中未示出),其中,区间确定单元用于若所述资源访问确定子单元250产生的资源访问反馈指示已访问新资源,确定与所述标识对相应的访问标识码所标识的资源访问的程序指令执行时所访问的地址区间,报警单元用于如果确定的地址区间未位于与所述标识对相应的资源的起始地址和结束地址之间,则发出指示所述被测对象异常的报警信号。
此外,优选地,所述模糊测试设备可还包括:代码行确定单元(图6中未示出),用于确定基于所述测试输入所述被测对象所执行的代码行;所述确定单元300,具体用于如果所述代码行确定单元确定所述被测对象所执行的代码行未产生新的代码行,则根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列。通过这种方式,可在代码覆盖方式的基础上结合资源访问反馈方法来确定测试输入是否是可用的测试用例,能够增加测试输入判断的准确性。
此外,应该理解,根据本发明示例性实施例的模糊测试设备中的各个单元可被实现硬件组件和/或软件组件。本领域技术人员根据限定的各个单元所执行的处理,可以例如使用现场可编程门阵列(FPGA)或专用集成电路(ASIC)来实现各个单元。
根据本发明的示例性实施例的计算机可读存储介质,存储有当被处理器执行时使得处理器执行上述示例性实施例的模糊测试方法的计算机程序。该计算机可读存储介质是可存储由计算机系统读出的数据的任意数据存储装置。计算机可读存储介质的示例包括:只读存储器、随机存取存储器、只读光盘、磁带、软盘、光数据存储装置和载波(诸如经有线或无线传输路径通过互联网的数据传输)。
根据本发明的示例性实施例的电子设备包括:处理器(未示出)和存储器(未示出),其中,存储器存储有计算机程序,当所述计算机程序被处理器执行时,实现如上述示例性实施例的模糊测试方法。
综上所述,在根据本发明示例性实施例的模糊测试方法和设备中,能够通过利用资源访问反馈来引导模糊测试的方式,获取可用输入用例,从而基于获取的可用输入用例来对同一执行路径进行深入测试,来达到发现更多的深层次漏洞的技术效果。
尽管已经参照其示例性实施例具体显示和描述了本发明,但是本领域的技术人员应该理解,在不脱离权利要求所限定的本发明的精神和范围的情况下,可以对其进行形式和细节上的各种改变。

Claims (12)

1.一种模糊测试方法,包括:
向被测对象测试入口注入测试输入;
获取基于所述测试输入所述被测对象被执行过程中的资源访问反馈,其中,所述资源访问反馈指示所述被测对象对资源的访问情况;
根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试;
其中,所述获取资源访问反馈的步骤包括:
获取所述被测对象为处理所述测试输入所申请的资源组,其中,所述资源组包括至少一个资源;
获取与所述资源组对应的资源标识码;
获取与所述资源标识码对应的访问标识码;
将获取的访问标识码与对应的资源标识码确定为一个标识对;
确定与所述标识对相应的资源中是否存在被首次访问的资源;
如果存在被首次访问的资源,则产生指示已访问新资源的资源访问反馈;
如果不存在被首次访问的资源,则产生指示未访问新资源的资源访问反馈;
其中,所述资源标识码是指用于标识资源申请程序指令所在位置的符号,所述访问标识码是指用于标识资源访问程序指令所在位置的符号。
2.如权利要求1所述的模糊测试方法,其中,所述模糊测试方法还包括:
确定基于所述测试输入所述被测对象所执行的代码行;
所述根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列具体包括:
如果所述被测对象所执行的代码行未产生新的代码行,则根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列。
3.如权利要求1所述的模糊测试方法,其中,所述根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列的步骤包括:
确定所述资源访问反馈是否指示已访问新资源;
如果所述资源访问反馈指示已访问新资源,则将所述测试输入添加到测试输入队列;
如果所述资源访问反馈指示未访问新资源,则丢弃所述测试输入。
4.如权利要求3所述的模糊测试方法,其中,所述模糊测试方法还包括:
若所述资源访问反馈指示已访问新资源,确定与所述标识对相应的访问标识码所标识的资源访问的程序指令执行时所访问的地址区间;
如果确定的地址区间未位于与所述标识对相应的资源的起始地址和结束地址之间,则发出指示所述被测对象异常的报警信号。
5.如权利要求1所述的模糊测试方法,其中,所述资源包括以下项中的至少一项:内存、网络连接池中的连接、图像中的像素、图的节点和图的边。
6.一种模糊测试设备,包括:
注入单元,用于向被测对象测试入口注入测试输入;
获取单元,用于获取基于所述测试输入所述被测对象被执行过程中的资源访问反馈,其中,所述资源访问反馈指示所述被测对象对资源的访问情况;
确定单元,用于根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列以用于对所述被测对象进行下一次的模糊测试;
其中,所述获取单元包括:
资源组获取子单元,用于获取所述被测对象为处理所述测试输入所申请的资源组,其中,所述资源组包括至少一个资源;
资源标识码获取子单元,用于获取与所述资源组对应的资源标识码;
访问标识码获取子单元,用于获取与所述资源标识码对应的访问标识码;
标识对确定子单元,用于将获取的访问标识码与对应的资源标识码确定为一个标识对;
资源访问确定子单元,确定与所述标识对相应的资源中是否存在被首次访问的资源,如果存在被首次访问的资源,则产生指示已访问新资源的资源访问反馈,如果不存在被首次访问的资源,则产生指示未访问新资源的资源访问反馈;
其中,所述资源标识码是指用于标识资源申请程序指令所在位置的符号,所述访问标识码是指用于标识资源访问程序指令所在位置的符号。
7.如权利要求6所述的模糊测试设备,其中,所述模糊测试设备还包括:
代码行确定单元,用于确定基于所述测试输入所述被测对象所执行的代码行;
所述确定单元,用于若所述代码行确定单元确定所述被测对象所执行的代码行未产生新的代码行,根据所述资源访问反馈确定是否将所述测试输入添加到测试输入队列。
8.如权利要求6所述的模糊测试设备,其中,所述确定单元用于,
确定所述资源访问确定子单元产生的所述资源访问反馈是否指示已访问新资源,
如果所述资源访问反馈指示已访问新资源,则确定将所述测试输入添加到测试输入队列;
如果所述资源访问反馈指示未访问新资源,则确定丢弃所述测试输入。
9.如权利要求8所述的模糊测试设备,其中,所述模糊测试设备还包括:区间确定单元和报警单元,
其中,区间确定单元,用于若所述资源访问确定子单元产生的资源访问反馈指示已访问新资源,确定与所述标识对相应的访问标识码所标识的资源访问的程序指令执行时所访问的地址区间;
所述报警单元,用于如果确定的地址区间未位于与所述标识对相应的资源的起始地址和结束地址之间,则发出指示所述被测对象异常的报警信号。
10.如权利要求6所述的模糊测试设备,其中,所述资源包括以下项中的至少一项:内存、网络连接池中的连接、图像中的像素、图的节点和图的边。
11.一种存储有计算机程序的计算机可读存储介质,其中,当所述计算机程序被处理器执行时实现如权利要求1至5中的任一权利要求所述的模糊测试方法。
12.一种电子设备,其中,所述电子设备包括:
处理器;
存储器,存储有计算机程序,当所述计算机程序被处理器执行时,实现如权利要求1至5中的任意一项所述的模糊测试方法。
CN202010558216.5A 2020-06-18 2020-06-18 模糊测试方法和设备 Active CN111858307B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010558216.5A CN111858307B (zh) 2020-06-18 2020-06-18 模糊测试方法和设备
KR1020210033539A KR20210156728A (ko) 2020-06-18 2021-03-15 퍼징 테스트 방법 및 장치
US17/336,360 US11868238B2 (en) 2020-06-18 2021-06-02 Method and apparatus for fuzz testing based on resource access feedback

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010558216.5A CN111858307B (zh) 2020-06-18 2020-06-18 模糊测试方法和设备

Publications (2)

Publication Number Publication Date
CN111858307A CN111858307A (zh) 2020-10-30
CN111858307B true CN111858307B (zh) 2024-04-19

Family

ID=72986269

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010558216.5A Active CN111858307B (zh) 2020-06-18 2020-06-18 模糊测试方法和设备

Country Status (2)

Country Link
KR (1) KR20210156728A (zh)
CN (1) CN111858307B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112835796A (zh) * 2021-02-01 2021-05-25 中汽数据(天津)有限公司 一种模糊测试方法、装置及计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110044A (zh) * 2007-08-28 2008-01-23 中兴通讯股份有限公司 一种内存监控管理的方法及系统
CN104636256A (zh) * 2015-02-17 2015-05-20 中国农业银行股份有限公司 一种内存访问异常的检测方法及装置
CN106557412A (zh) * 2015-09-25 2017-04-05 腾讯科技(深圳)有限公司 一种模糊测试的方法及装置
CN108647145A (zh) * 2018-05-10 2018-10-12 清华大学 软件内存安全检测方法及系统
CN111124926A (zh) * 2019-12-25 2020-05-08 支付宝(杭州)信息技术有限公司 模糊测试方法、装置、电子设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628281B2 (en) * 2018-05-24 2020-04-21 Fujitsu Limited Concurrency vulnerability detection
US10635576B2 (en) * 2018-06-18 2020-04-28 Fujitsu Limited Branch coverage guided symbolic execution for hybrid fuzz testing of software binaries

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110044A (zh) * 2007-08-28 2008-01-23 中兴通讯股份有限公司 一种内存监控管理的方法及系统
CN104636256A (zh) * 2015-02-17 2015-05-20 中国农业银行股份有限公司 一种内存访问异常的检测方法及装置
CN106557412A (zh) * 2015-09-25 2017-04-05 腾讯科技(深圳)有限公司 一种模糊测试的方法及装置
CN108647145A (zh) * 2018-05-10 2018-10-12 清华大学 软件内存安全检测方法及系统
CN111124926A (zh) * 2019-12-25 2020-05-08 支付宝(杭州)信息技术有限公司 模糊测试方法、装置、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MemFuzz: Using Memory Accesses to Guide Fuzzing;Nicolas Coppik;《2019 12th IEEE Conference on Software Testing, Validation and Verification (ICST)》;全文 *
基于XML的面向二进制漏洞模式形式化描述研究;康凯;郭颖;崔宝江;;信息网络安全(第12期);全文 *

Also Published As

Publication number Publication date
CN111858307A (zh) 2020-10-30
KR20210156728A (ko) 2021-12-27

Similar Documents

Publication Publication Date Title
JP5430570B2 (ja) システムコールカバレッジ基準による試験スイート削減のための方法
US9158514B2 (en) Method and apparatus for providing change-related information
US9311217B2 (en) Analyzing computer programs to identify errors
US20080244536A1 (en) Evaluating static analysis results using code instrumentation
Sun et al. Healer: Relation learning guided kernel fuzzing
US10599558B1 (en) System and method for identifying inputs to trigger software bugs
JPWO2006087780A1 (ja) 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法
US20130212682A1 (en) Automatic discovery of system integrity exposures in system code
US10515220B2 (en) Determine whether an appropriate defensive response was made by an application under test
KR20200080541A (ko) 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치 및 방법
CN110704306A (zh) 测试中的断言处理方法、装置、设备及存储介质
CN112035314B (zh) 内存泄漏的监控方法、装置及电子设备
CN112925524A (zh) 一种检测驱动程序中不安全直接存储器访问的方法及装置
CN111919214A (zh) 针对安全性违反的补丁的自动生成
US20210157924A1 (en) Coverage of web appliction analysis
CN111858307B (zh) 模糊测试方法和设备
CN109522207B (zh) 一种基于约束求解的原子集合序列化违背探测方法
He et al. IFDS-based context debloating for object-sensitive pointer analysis
JP5077455B2 (ja) 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法
US11880470B2 (en) System and method for vulnerability detection in computer code
US20220335135A1 (en) Vulnerability analysis and reporting for embedded systems
WO2019134771A1 (en) Binary image stack cookie protection
CN116414722B (zh) 模糊测试处理方法、装置、模糊测试系统及存储介质
Zhang et al. Poster: Finding JavaScript Name Conflicts on the Web
CN109885402B (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