CN109460662A - 一种基于路径反馈的Javascript引擎模糊测试方法和装置 - Google Patents
一种基于路径反馈的Javascript引擎模糊测试方法和装置 Download PDFInfo
- Publication number
- CN109460662A CN109460662A CN201811309430.6A CN201811309430A CN109460662A CN 109460662 A CN109460662 A CN 109460662A CN 201811309430 A CN201811309430 A CN 201811309430A CN 109460662 A CN109460662 A CN 109460662A
- Authority
- CN
- China
- Prior art keywords
- sample
- sudden change
- javascript engine
- fuzz testing
- mutated
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种基于路径反馈的Javascript引擎模糊测试方法和装置,涉及网络安全的技术领域,包括:获取Javascript引擎的测试样本集;对测试样本集中的各个待突变测试样本进行突变,得到突变样本,并将突变样本发送给Javascript引擎,以使Javascript引擎基于突变样本进行模糊测试;获取突变样本在模糊测试过程中的执行路径位图;若监测到Javascript引擎基于突变样本进行模糊测试的过程中,Javascript引擎未崩溃,则基于执行路径位图判断突变样本是否为突变有效样本;若是,则将突变有效样本添加至所述测试样本集,利用添加之后的测试样本集对Javascript引擎进行模糊测试,解决了现有Javascript引擎模糊测试方法中无法确定出突变有效样本,导致基于突变有效样本进行Javascript引擎模糊测试的效率较低技术问题。
Description
技术领域
本发明涉及网络安全技术领域,尤其是涉及一种基于路径反馈的Javascript引擎模糊测试方法和装置。
背景技术
目前浏览器作为通向网络的门径,其安全性受到越来越的关注。而作为浏览器的主要部件,Javascript引擎的安全性也备受关注。由于Javascript引擎的特性,基于Javascript引擎的漏洞开发漏洞利用工具相对会简单,带来的危害也会较其他漏洞严重。
Chrome、firefox、Edge、IE等主流浏览器都实现了各自的Javascript引擎,不同的实现使得不同的Javascript引擎的脆弱点各不相同。不同的脆弱点要求在进行模糊测试时,需要根据不同的浏览器引擎针对性的开发模糊测试工具。
同时,如何高效率的对Javascript引擎进行模糊测试,提高发现Javascript引擎漏洞的可能性,成为当下的重点问题。
针对上述问题,还未提出有效的解决方案。
发明内容
有鉴于此,本发明的目的在于提供一种基于路径反馈的Javascript引擎模糊测试方法和装置,以缓解了现有Javascript引擎模糊测试方法获取到突变有效样本的数量少,导致基于突变有效样本进行Javascript引擎模糊测试时,测试出Javascript引擎漏洞的可能性较低的技术问题。
第一方面,本发明实施例提供了一种基于路径反馈的Javascript引擎模糊测试方法,该方法包括:获取Javascript引擎的测试样本集;对所述测试样本集中的各个待突变测试样本进行突变,得到突变样本,并将所述突变样本发送给所述Javascript引擎,以使所述Javascript引擎基于所述突变样本进行模糊测试;获取所述突变样本在所述模糊测试过程中的执行路径位图;若监测到所述Javascript引擎基于所述突变样本进行模糊测试的过程中,所述Javascript引擎未崩溃,则基于所述执行路径位图判断所述突变样本是否为突变有效样本;若是,则将所述突变有效样本添加至所述测试样本集,并利用添加之后的所述测试样本集对所述Javascript引擎进行模糊测试。
进一步地,对所述测试样本集中的各个待突变测试样本进行突变,得到突变样本包括:获取所述待突变测试样本的数据格式;基于所述数据格式和Javascript语法的Protobuf转化技术,对所述待突变测试样本执行反序列化操作,得到所述待突变测试样本的反序列化数据;对所述反序列化数据执行突变操作,得到所述突变样本。
进一步地,所述反序列化数据中包含多个节点,多个节点中的部分节点或全部节点包含子节点;对所述反序列化数据执行突变操作,得到所述突变样本包括:确定所述反序列化数据中的目标节点,其中,所述目标节点为所述多个节点中不包含子节点的节点;对各个所述目标节点中的节点数据执行突变操作,得到所述突变样本。
进一步地,所述方法还包括:若所述突变样本在进行模糊测试之后得到测试结果,则基于所述执行路径位图判断所述突变样本是否为新崩溃样本,其中,所述新的崩溃样本;若所述突变样本不是新崩溃样本,则丢弃所述突变样本。
进一步地,所述方法还包括:若所述突变样本是所述新崩溃样本,则保存所述突变样本。
进一步地,所述方法还包括:若所述突变样本不是所述突变有效样本,则丢弃所述突变样本。
第二方面,本发明实施例提供了一种基于路径反馈的Javascript引擎模糊测试装置,该装置包括:获取单元,样本生成单元,路径反馈单元,崩溃监测单元和执行单元,其中,所述获取单元用于获取Javascript引擎的测试样本集;所述样本生成单元用于对所述测试样本集中的各个待突变测试样本进行突变,得到突变样本,并将所述突变样本发送给所述Javascript引擎,以使所述Javascript引擎基于所述突变样本进行模糊测试;所述路径反馈单元用于获取所述突变样本在所述模糊测试过程中的执行路径位图;所述崩溃监测单元用于若监测到所述Javascript引擎基于所述突变样本进行模糊测试的过程中,所述Javascript引擎未崩溃,则基于所述执行路径位图判断所述突变样本是否为突变有效样本;;所述执行单元用于若所述突变样本为突变有效样本,则将所述突变有效样本添加至所述测试样本集,并利用添加之后的所述测试样本集对所述Javascript引擎进行模糊测试。
进一步地,所述样本生成单元还用于:基于所述数据格式和Javascript语法的Protobuf转化技术,对所述待突变测试样本执行反序列化操作,得到所述待突变测试样本的反序列化数据;对所述反序列化数据执行突变操作,得到所述突变样本。
进一步地,所述样本生成单元还用于:对所述反序列化数据执行突变操作,得到所述突变样本包括:确定所述反序列化数据中的目标节点,其中,所述目标节点为所述多个节点中不包含子节点的节点;对各个所述目标节点中的节点数据执行突变操作,得到所述突变样本,其中,所述突变操作包括以下至少一种:随机删除,随机添加,随机修改。
进一步地,所述执行单元还用于:若监测到所述Javascript引擎基于所述突变样本进行模糊测试的过程中,所述Javascript引擎崩溃,则基于所述执行路径位图判断所述突变样本是否为新的崩溃样本,其中,所述崩溃样本为在所述Javascript引擎基于突变样本进行模糊测试的过程中,引发所述Javascript引擎崩溃的突变样本;若所述突变样本不是新的崩溃样本,则丢弃所述突变样本。
在本发明实施例中,首先,获取Javascript引擎的测试样本集,并对测试样本集中的各个待突变测试样本进行突变,得到突变样本,然后,将突变样本发送给Javascript引擎,以使Javascript引擎基于突变样本进行模糊测试;接着,获取突变样本在模糊测试过程中的执行路径位图;最后,若监测到Javascript引擎基于突变样本进行模糊测试的过程中,Javascript引擎未崩溃,则基于执行路径位图判断突变样本是否为突变有效样本,并将所述突变有效样本添加至所述测试样本集,并利用添加之后的所述测试样本集对Javascript引擎进行模糊测试。
本发明通过对测试样本集中的待突变测试样本进行突变,得到突变样本,并通过突变样本在模糊测试过程中的执行路径位图,确定出突变样本突变有效样本添加到测试样本集中,并通过测试样本集对Javascript引擎进行模糊测试,进而解决了现有Javascript引擎模糊测试方法中无法确定出突变有效样本,导致基于突变有效样本进行Javascript引擎模糊测试的效率较低,进而导致测试出Javascript引擎漏洞的可能性较低的技术问题。从而实现了提高了Javascript引擎模糊测试的效率,进而提高了发现Javascript引擎漏洞的可能性技术效果。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于路径反馈的Javascript引擎模糊测试方法的流程图;
图2为本发明实施例提供的另一种基于路径反馈的Javascript引擎模糊测试方法的流程图;
图3为本发明实施例提供的一种基于路径反馈的Javascript引擎模糊测试装置的示意图;
图4为本发明实施例提供的一种服务器的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
根据本发明实施例,提供了种基于路径反馈的Javascript引擎模糊测试方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的种基于路径反馈的Javascript引擎模糊测试方法,如图1所示,该方法包括如下步骤:
步骤S102,获取Javascript引擎的测试样本集;
步骤S104,对所述测试样本集中的各个待突变测试样本进行突变,得到突变样本,并将所述突变样本发送给所述Javascript引擎,以使所述Javascript引擎基于所述突变样本进行模糊测试;
步骤S106,获取所述突变样本在所述模糊测试过程中的执行路径位图;
步骤S108,若监测到所述Javascript引擎基于所述突变样本进行模糊测试的过程中,所述Javascript引擎未崩溃,则基于所述执行路径位图判断所述突变样本是否为突变有效样本;
步骤S110,若是,则将所述突变有效样本添加至所述测试样本集,并利用添加之后的所述测试样本集对所述Javascript引擎进行模糊测试。
本发明通过对测试样本集中的待突变测试样本进行突变,得到突变样本,并通过突变样本在模糊测试过程中的执行路径位图,确定出突变样本突变有效样本添加到测试样本集中,并通过测试样本集对Javascript引擎进行模糊测试,进而解决了现有Javascript引擎模糊测试方法中无法确定出突变有效样本,导致基于突变有效样本进行Javascript引擎模糊测试的效率较低,进而导致测试出Javascript引擎漏洞的可能性较低的技术问题。从而实现了提高了Javascript引擎模糊测试的效率,进而提高了发现Javascript引擎漏洞的可能性技术效果。
本发明通过对测试样本集中的待突变测试样本进行突变,得到突变样本,并通过突变样本在模糊测试过程中的执行路径位图,确定出突变样本突变有效样本添加到测试样本集中,并通过测试样本集对Javascript引擎进行模糊测试,进而解决了现有Javascript引擎模糊测试方法中无法确定出突变有效样本,导致基于突变有效样本进行Javascript引擎模糊测试的效率较低,进而导致测试出Javascript引擎漏洞的可能性较低的技术问题。从而实现了提高了Javascript引擎模糊测试的效率,进而提高了发现Javascript引擎漏洞的可能性技术效果。
需要说明的是,获取突变样本在模糊测试过程中的执行路径位图时,主要采用基于libfuzzer的插桩来获取执行路径位图,与直接插桩不同的是,基于libfuzzer的插桩是有选择性的插桩。由于Javascript引擎的JIT模块的存在,有些代码是直接在内存中生成执行的,直接插桩并不能起到很好的效果,所以此发明中的插桩模块只针对有特定意义的模块进行插桩,例如Javascript的语法解析模块等。
另外,还需要说明的是,监测Javascript引擎基于突变样本进行模糊测试的过程中,Javascript引擎是否崩溃时,可以使用clang编译器中的sanitize选项进行崩溃的检测,clang编译器的sanitize模块能够有效的监控Javascript引擎中UAF、缓冲区溢出等内存错误,保证一旦触发漏洞便可以有效的铺货样本。
在本发明实施例中,步骤S104还包括如下步骤:
步骤S1041,获取所述待突变测试样本的数据格式;
步骤S1042,基于所述数据格式和Javascript语法的Protobuf转化技术,对所述待突变测试样本执行反序列化操作,得到所述待突变测试样本的反序列化数据;
步骤S1043,对所述反序列化数据执行突变操作,得到所述突变样本。
在本发明实施例中,在对待突变测试样本进行突变时,首先,获取待突变样本的的数据格式。
然后,根据Javascript语法的Protobuf转化技术,对待突变测试样本执行反序列化操作,得到待突变测试样本的反序列化数据。
最后,对反序列化数据进行突变,从而得到突变样本。
需要说明的是,在对待突变测试样本进行突变时,可以采用Protobuf序列化平台对待突变测试样本进行突变。Protobuf序列化平台可以扩展的序列化结构数据格式,由于Protobuf支持各种语言,且非常高效,所以使用Protobuf数据格式来序列化待突变测试样本样本具有非常高的效率和可扩展性。
在本发明实施例中,步骤S1043还包括如下步骤:
步骤S11,对所述反序列化数据执行突变操作,得到所述突变样本包括:
步骤S12,确定所述反序列化数据中的目标节点,其中,所述目标节点为所述多个节点中不包含子节点的节点;
步骤S13,对各个所述目标节点中的节点数据执行突变操作,得到所述突变样本,其中,所述突变操作包括以下至少一种:随机删除,随机添加,随机修改。
在本发明实施例中,由于反序列化数据中包含多个节点,因此,需要将反序列化数据中不包含子节点的节点作为目标节点。
对各个目标节点中的节点数据执行随机删除,随机添加,随机修改等突变操作,得到突变样本,从而确保了在对待测试样本进行突变时,是对待测试样本的最小单位进行突变的。
在本发明实施例中,如图2所示,所述方法还包括如下步骤:
步骤S112,若监测到所述Javascript引擎基于所述突变样本进行模糊测试的过程中,所述Javascript引擎崩溃,则基于所述执行路径位图判断所述突变样本是否为新的崩溃样本,其中,所述崩溃样本为在所述Javascript引擎基于突变样本进行模糊测试的过程中,引发所述Javascript引擎崩溃的突变样本;
步骤S114,若所述突变样本不是新的崩溃样本,则丢弃所述突变样本。
在本发明实施例中,在检测到Javascript引擎基于突变样本进行模糊测试的过程中,Javascript引擎崩溃,那么执行路径位图判断该突变样本是否为新的崩溃样本。
如果该突变样本是新的崩溃样本,则丢弃该突变样本。
通过将非新的崩溃样本(即,Javascript引擎已经基于该突变样本进行模糊测试,且Javascript引擎基于该突变样本进行模糊检测时,出现崩溃,则该突变样本确定为非新的崩溃样本)丢弃,从而保证了Javascript引擎在进行模糊测试时,采用的突变样本的有效性。
在本发明实施例中,如图2所示,所述方法还包括如下步骤:
步骤S116,若所述突变若所述突变样本不是所述突变有效样本,则丢弃所述突变样本。样本是所述新的崩溃样本,则保存所述突变样本。
在本发明实施例中,当判断出突变样本是新的崩溃样本,则保存该突变样本,可以将该突变样本用于其他Javascript引擎的模糊测试。
在本发明实施例中,如图2所示,所述方法还包括如下步骤:
步骤S118,若所述突变样本不是所述突变有效样本,则丢弃所述突变样本。
在本发明实施例中,根据突变样本在Javascript引擎的模糊测试的执行路径位图判断出该突变样本不是突变有效样本,则将该突变有效样本丢弃。
实施例二
本发明还提供了一种基于路径反馈的Javascript引擎模糊测试装置,该系统用于执行本发明实施例上述内容所提供的基于路径反馈的Javascript引擎模糊测试方法,以下是本发明实施例提供的基于路径反馈的Javascript引擎模糊测试装置的具体介绍
如图3所示,该装置包括:获取单元10,样本生成单元20,路径反馈单元30,崩溃监测单元40和执行单元50,其中,
所述获取单元10用于获取Javascript引擎的测试样本集;
所述样本生成单元20用于对所述测试样本集中的各个待突变测试样本进行突变,得到突变样本,并将所述突变样本发送给所述Javascript引擎,以使所述Javascript引擎基于所述突变样本进行模糊测试;
所述路径反馈单元30用于获取所述突变样本在所述模糊测试过程中的执行路径位图;
所述崩溃监测单元40用于若所述突变样本在进行模糊测试之后得到测试结果,则基于所述执行路径位图判断所述突变样本是否为突变有效样本;
所述执行单元50用于若所述突变样本为突变有效样本,则将所述突变有效样本添加至所述测试样本集,并利用添加之后的所述测试样本集对所述Javascript引擎进行模糊测试。
本发明通过对测试样本集中的待突变测试样本进行突变,得到突变样本,并通过突变样本在模糊测试过程中的执行路径位图,确定出突变样本突变有效样本添加到测试样本集中,并通过测试样本集对Javascript引擎进行模糊测试,进而解决了现有Javascript引擎模糊测试方法中无法确定出突变有效样本,导致基于突变有效样本进行Javascript引擎模糊测试的效率较低,进而导致测试出Javascript引擎漏洞的可能性较低的技术问题。从而实现了提高了Javascript引擎模糊测试的效率,进而提高了发现Javascript引擎漏洞的可能性技术效果。
可选地,所述样本生成单元还用于:获取所述待突变测试样本的数据格式;基于所述数据格式对所述待突变测试样本执行反序列化操作,得到所述待突变测试样本的反序列化数据;对所述反序列化数据执行突变操作,得到所述突变样本。
可选地,所述样本生成单元还用于:获取所述待突变测试样本的数据格式;基于所述数据格式和Javascript语法的Protobuf转化技术,对所述待突变测试样本执行反序列化操作,得到所述待突变测试样本的反序列化数据;对所述反序列化数据执行突变操作,得到所述突变样本,其中,所述突变操作包括以下至少一种:随机删除,随机添加,随机修改。
可选地,所述执行单元还用于:若监测到所述Javascript引擎基于所述突变样本进行模糊测试的过程中,所述Javascript引擎崩溃,则基于所述执行路径位图判断所述突变样本是否为新的崩溃样本,其中,所述崩溃样本为在所述Javascript引擎基于突变样本进行模糊测试的过程中,引发所述Javascript引擎崩溃的突变样本;若所述突变样本不是新的崩溃样本,则丢弃所述突变样本。
可选地,所述执行单元还用于:若所述突变样本是所述新的崩溃样本,则保存所述突变样本。
可选地,所述执行单元还用于:若所述突变样本不是所述突变有效样本,则丢弃所述突变样本。
参见图4,本发明实施例还提供一种服务器100,包括:处理器60,存储器61,总线62和通信接口63,所述处理器60、通信接口63和存储器61通过总线62连接;处理器60用于执行存储器61中存储的可执行模块,例如计算机程序。
其中,存储器61可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口63(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线62可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器61用于存储程序,所述处理器60在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器60中,或者由处理器60实现。
处理器60可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器60中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器60可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器61,处理器60读取存储器61中的信息,结合其硬件完成上述方法的步骤。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种基于路径反馈的Javascript引擎模糊测试方法,其特征在于,包括:
获取Javascript引擎的测试样本集;
对所述测试样本集中的各个待突变测试样本进行突变,得到突变样本,并将所述突变样本发送给所述Javascript引擎,以使所述Javascript引擎基于所述突变样本进行模糊测试;
获取所述突变样本在所述模糊测试过程中的执行路径位图;
若监测到所述Javascript引擎基于所述突变样本进行模糊测试的过程中,所述Javascript引擎未崩溃,则基于所述执行路径位图判断所述突变样本是否为突变有效样本;
若是,则将所述突变有效样本添加至所述测试样本集,并利用添加之后的所述测试样本集对所述Javascript引擎进行模糊测试。
2.根据权利要求1所述的方法,其特征在于,对所述测试样本集中的各个待突变测试样本进行突变,得到突变样本包括:
获取所述待突变测试样本的数据格式;
基于所述数据格式和Javascript语法的Protobuf转化技术,对所述待突变测试样本执行反序列化操作,得到所述待突变测试样本的反序列化数据;
对所述反序列化数据执行突变操作,得到所述突变样本。
3.根据权利要求2所述的方法,其特征在于,所述反序列化数据中包含多个节点,多个节点中的部分节点或全部节点包含子节点;
对所述反序列化数据执行突变操作,得到所述突变样本包括:
确定所述反序列化数据中的目标节点,其中,所述目标节点为所述多个节点中不包含子节点的节点;
对各个所述目标节点中的节点数据执行突变操作,得到所述突变样本,其中,所述突变操作包括以下至少一种:随机删除,随机添加,随机修改。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若监测到所述Javascript引擎基于所述突变样本进行模糊测试的过程中,所述Javascript引擎崩溃,则基于所述执行路径位图判断所述突变样本是否为新的崩溃样本,其中,所述崩溃样本为在所述Javascript引擎基于突变样本进行模糊测试的过程中,引发所述Javascript引擎崩溃的突变样本;
若所述突变样本不是新的崩溃样本,则丢弃所述突变样本。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述突变样本是所述新的崩溃样本,则保存所述突变样本。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述突变样本不是所述突变有效样本,则丢弃所述突变样本。
7.一种基于路径反馈的Javascript引擎模糊测试装置,其特征在于,所述装置包括:获取单元,样本生成单元,路径反馈单元,崩溃监测单元和执行单元,其中,
所述获取单元用于获取Javascript引擎的测试样本集;
所述样本生成单元用于对所述测试样本集中的各个待突变测试样本进行突变,得到突变样本,并将所述突变样本发送给所述Javascript引擎,以使所述Javascript引擎基于所述突变样本进行模糊测试;
所述路径反馈单元用于获取所述突变样本在所述模糊测试过程中的执行路径位图;
所述崩溃监测单元用于若监测到所述Javascript引擎基于所述突变样本进行模糊测试的过程中,所述Javascript引擎未崩溃,则基于所述执行路径位图判断所述突变样本是否为突变有效样本;
所述执行单元用于若所述突变样本为突变有效样本,则将所述突变有效样本添加至所述测试样本集,并利用添加之后的所述测试样本集对所述Javascript引擎进行模糊测试。
8.根据权利要求7所述的装置,其特征在于,所述样本生成单元还用于:
获取所述待突变测试样本的数据格式;
基于所述数据格式对所述待突变测试样本执行反序列化操作,得到所述待突变测试样本的反序列化数据;
对所述反序列化数据执行突变操作,得到所述突变样本。
9.根据权利要求8所述的装置,其特征在于,所述样本生成单元还用于:
确定所述反序列化数据中的目标节点,其中,所述目标节点为所述多个节点中不包含子节点的节点;
对各个所述目标节点中的节点数据执行突变操作,得到所述突变样本,其中,所述突变操作包括以下至少一种:随机删除,随机添加,随机修改。
10.根据权利要求9所述的装置,其特征在于,所述执行单元还用于:
若监测到所述Javascript引擎基于所述突变样本进行模糊测试的过程中,所述Javascript引擎崩溃,则基于所述执行路径位图判断所述突变样本是否为新的崩溃样本,其中,所述崩溃样本为在所述Javascript引擎基于突变样本进行模糊测试的过程中,引发所述Javascript引擎崩溃的突变样本;
若所述突变样本不是新的崩溃样本,则丢弃所述突变样本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811309430.6A CN109460662B (zh) | 2018-11-05 | 2018-11-05 | 一种基于路径反馈的Javascript引擎模糊测试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811309430.6A CN109460662B (zh) | 2018-11-05 | 2018-11-05 | 一种基于路径反馈的Javascript引擎模糊测试方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109460662A true CN109460662A (zh) | 2019-03-12 |
CN109460662B CN109460662B (zh) | 2020-12-18 |
Family
ID=65609443
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811309430.6A Active CN109460662B (zh) | 2018-11-05 | 2018-11-05 | 一种基于路径反馈的Javascript引擎模糊测试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109460662B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362485A (zh) * | 2019-07-03 | 2019-10-22 | 杭州安恒信息技术股份有限公司 | 一种挖掘Windows内核API漏洞的模糊测试方法 |
CN111176992A (zh) * | 2019-12-24 | 2020-05-19 | 平安国际智慧城市科技股份有限公司 | 流程引擎的测试方法、装置、计算机设备及存储介质 |
CN113157565A (zh) * | 2021-03-23 | 2021-07-23 | 西北大学 | 一种基于种子用例突变的反馈式js引擎模糊测试方法及装置 |
CN113284039A (zh) * | 2021-07-16 | 2021-08-20 | 杭州安恒信息技术股份有限公司 | 一种位图管理方法、装置、设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130318503A1 (en) * | 2012-05-25 | 2013-11-28 | Fujitsu Limited | Symbolic execution and automatic test case generation for javascript programs |
CN107153605A (zh) * | 2016-03-02 | 2017-09-12 | 阿里巴巴集团控股有限公司 | 测试样本的生成方法及装置 |
CN108647145A (zh) * | 2018-05-10 | 2018-10-12 | 清华大学 | 软件内存安全检测方法及系统 |
-
2018
- 2018-11-05 CN CN201811309430.6A patent/CN109460662B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130318503A1 (en) * | 2012-05-25 | 2013-11-28 | Fujitsu Limited | Symbolic execution and automatic test case generation for javascript programs |
CN107153605A (zh) * | 2016-03-02 | 2017-09-12 | 阿里巴巴集团控股有限公司 | 测试样本的生成方法及装置 |
CN108647145A (zh) * | 2018-05-10 | 2018-10-12 | 清华大学 | 软件内存安全检测方法及系统 |
Non-Patent Citations (2)
Title |
---|
倪涛等: "基于语料库及语法变异的浏览器Fuzzing安全测试", 《信息工程大学学报》 * |
韩鹍等: "一种动静结合的高代码覆盖率模糊测试方法", 《信息安全研究》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362485A (zh) * | 2019-07-03 | 2019-10-22 | 杭州安恒信息技术股份有限公司 | 一种挖掘Windows内核API漏洞的模糊测试方法 |
CN110362485B (zh) * | 2019-07-03 | 2022-12-06 | 杭州安恒信息技术股份有限公司 | 一种挖掘Windows内核API漏洞的模糊测试方法 |
CN111176992A (zh) * | 2019-12-24 | 2020-05-19 | 平安国际智慧城市科技股份有限公司 | 流程引擎的测试方法、装置、计算机设备及存储介质 |
CN111176992B (zh) * | 2019-12-24 | 2023-06-06 | 平安国际智慧城市科技股份有限公司 | 流程引擎的测试方法、装置、计算机设备及存储介质 |
CN113157565A (zh) * | 2021-03-23 | 2021-07-23 | 西北大学 | 一种基于种子用例突变的反馈式js引擎模糊测试方法及装置 |
CN113157565B (zh) * | 2021-03-23 | 2023-02-07 | 西北大学 | 一种基于种子用例突变的反馈式js引擎模糊测试方法及装置 |
CN113284039A (zh) * | 2021-07-16 | 2021-08-20 | 杭州安恒信息技术股份有限公司 | 一种位图管理方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109460662B (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109460662A (zh) | 一种基于路径反馈的Javascript引擎模糊测试方法和装置 | |
US9825841B2 (en) | Method of and network server for detecting data patterns in an input data stream | |
US20200358661A1 (en) | Cyber-physical system evaluation | |
US9135152B2 (en) | Optimizing test data payload selection for testing computer software applications via computer networks | |
KR20210029150A (ko) | 효율적인 레이블 전파를 위한 앙상블 기반 데이터 큐레이션 파이프라인 | |
CN109766694A (zh) | 一种工控主机的程序协议白名单联动方法及装置 | |
CN110535727A (zh) | 资产识别方法和装置 | |
CN108763071A (zh) | 一种网页测试方法及终端设备 | |
CN111447224A (zh) | web漏洞扫描方法及漏洞扫描器 | |
CN115269444B (zh) | 代码静态检测方法、装置及服务器 | |
US20180225063A1 (en) | Device, system and method to provide categorized trace information | |
CN111030887B (zh) | web服务器发现方法、装置和电子设备 | |
CN109670316A (zh) | 一种基于Java异常的漏洞检测方法和装置 | |
CN109359467A (zh) | 针对未知勒索病毒的精准识别与全网联动防御方法和系统 | |
CN110874475A (zh) | 漏洞挖掘方法、漏洞挖掘平台及计算机可读存储介质 | |
CN109361674A (zh) | 旁路接入的流式数据检测方法、装置以及电子设备 | |
CN116633800A (zh) | 一种网络拓扑的构建方法、装置、设备及介质 | |
WO2014059854A1 (en) | Method and apparatus for repairing files | |
US11755665B2 (en) | Identification of a computer processing unit | |
CN109492146A (zh) | 一种防web爬虫的方法和装置 | |
CN112333206A (zh) | 安全测试方法、装置及电子设备 | |
CN110417800A (zh) | Ldap注入漏洞的检测方法和装置 | |
US20160156643A1 (en) | Apparatus and method for generating process activity profile | |
CN109788001B (zh) | 可疑互联网协议地址发现方法、用户设备、存储介质及装置 | |
CN110708207B (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 | ||
CB02 | Change of applicant information |
Address after: 310000 No. 188 Lianhui Street, Xixing Street, Binjiang District, Hangzhou City, Zhejiang Province Applicant after: Hangzhou Anheng Information Technology Co.,Ltd. Address before: Zhejiang Zhongcai Building No. 68 Binjiang District road Hangzhou City, Zhejiang Province, the 310000 and 15 layer Applicant before: Hangzhou Anheng Information Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |