CN113590281A - 基于动态集中式调度的分布式并行模糊测试方法及*** - Google Patents
基于动态集中式调度的分布式并行模糊测试方法及*** Download PDFInfo
- Publication number
- CN113590281A CN113590281A CN202110807136.3A CN202110807136A CN113590281A CN 113590281 A CN113590281 A CN 113590281A CN 202110807136 A CN202110807136 A CN 202110807136A CN 113590281 A CN113590281 A CN 113590281A
- Authority
- CN
- China
- Prior art keywords
- seed
- priority
- fuzzy test
- scheduler
- task
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种基于动态集中式调度的分布式并行模糊测试方法及***,本发明包括调度器从数据库中读取初始的种子及其状态信息,将所有种子依次执行模糊测试前的优先级评估以及能量分配,并排序生成种子队列;调度器检测任意子节点发起的请求,若收到的请求为任务请求,则按照种子的优先级为发起请求的子节点分配种子对应的模糊测试任务;若收到的请求为子节点执行完模糊测试任务后的更新请求,调度器从数据库中读取执行完模糊测试任务的子节点生成的新种子,将所有的种子执行去重后,继续进行优先级评估以及能量分配以维护种子队列。本发明能够有效提升模糊测试效率,可充分利用不同算力差异的子节点,并具有高可扩展性,灵活度高等优点。
Description
技术领域
本发明涉及计算机安全领域的漏洞挖掘技术,具体涉及一种基于动态集中式调度的分布式并行模糊测试方法及***。
背景技术
目前国内外对模糊测试(Fuzzing)技术的研究已趋向成熟,以提升fuzzing效率为主要目标的研究主要从两个维度展开:算法优化和并行优化。其中算法优化涉及调度算法、变异策略、覆盖率反馈等方面,并行优化的研究聚焦在多机互联、信息同步等关键环节。
近年来随着硬件资源的发展进步以及对漏洞挖掘效率,模糊测试并行化逐渐成为研究新焦点。比如AFL的并行模式,在单机***上开启多进程提高fuzzing速率,并通过文件***实现信息同步,但无法扩展至多机且工作重复率高。PAFL将测试任务根据bitmap划分多个子任务从而减少了重复工作,但并不支持分布式并行,信息共享机制与其算法耦合性高,难以扩展。Enfuzz实现了一个集合多个代表性测试工具的全面可扩展平台,但受限于文件共享***,不能扩展至大规模计算平台。在工业应用中谷歌提出的Clusterfuzz框架利支持AFL和LibFuzzer两种以覆盖率驱动的fuzzing工具,依托于谷歌云平台的海量计算资源在漏洞挖掘效果上成绩显著,另一方面因其信息同步机制中存在必要信息的缺失,导致各个节点在信息同步上工作量增加,而且在各个计算节点上运行相同的fuzzer,缺乏算法多样性。
综上所述,现有fuzzing并行优化方面的工作主要存在以下几个方面的问题:(1)无法扩展至分布式环境;(2)未解决并行fuzzing中的全局能量调度优化问题,造成任务冲突与资源浪费;(3)静态分配任务导致算力分配不均、无法应对计算资源规模的变化而造成开销大、负载不均衡等问题;(4)单机多核的fuzz主要通过本地文件***等方式进行多线程同步,而且他们的任务分配方式是一刀切的,在程序启动前就确定好x个核,将任务划分成x部分给这几个核去执行。在这个过程中不能增加核的数量(因为任务的划分已经确定了),如果某一个核意外停止也会影响整体测试。因此,针对并行优化层面的研究在解决任务冲突、负载均衡、信息同步、多机互联等关键环节还有较大探索空间。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于动态集中式调度的分布式并行模糊测试方法及***,本发明能够有效提升模糊测试效率,可充分利用不同算力差异的子节点,并具有高可扩展性,灵活度高等优点。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于动态集中式调度的分布式并行模糊测试方法,包括:
1)调度器从数据库中读取初始的种子及其状态信息;
2)调度器将读取的所有种子,依次执行模糊测试前的优先级评估以及能量分配,并将所有种子基于评估得到的优先级进行排序生成种子队列;
3)调度器检测任意子节点发起的请求,若收到的请求为任务请求,则按照种子的优先级为发起请求的子节点分配种子对应的模糊测试任务;若收到的请求为子节点执行完模糊测试任务后的更新请求,调度器从数据库中读取执行完模糊测试任务的子节点生成的新种子,将所有的种子执行去重后,跳转执行步骤2)。
可选地,步骤2)中执行模糊测试前的评估优先级的步骤包括:
2.1)调度器根据需要优先级评估的种子数量、调度器完成一个种子的优先级评估所需时间计算出调度器自身完成所有需要优先级评估的种子优先级评估的总时间N;
2.2)调度器判断总时间N是否超过预设阈值,若总时间N未超过预设阈值,则调度器直接完成所有需要优先级评估的种子优先级评估,跳转执行步骤2.4);否则跳转执行下一步;
2.3)调度器检测任意子节点发起的请求,若收到的请求为任务请求,则按照种子的优先级为发起请求的子节点分配种子对应的优先级评估任务;若收到的请求为子节点执行完优先级评估任务后的结果处理请求,则调度器判断是否完成所有需要优先级评估的种子优先级评估,若已经完成所有需要优先级评估的种子优先级评估,则跳转执行步骤2.4);
2.4)判定执行模糊测试前的评估优先级完成,继续往下执行。
可选地,步骤2.3)中按照种子的优先级为发起请求的子节点分配种子对应的优先级评估任务时,还包括记录分配时间并进行计时,若超过预设时长仍未收到对应子节点执行完优先级评估任务后的结果处理请求,则重新分配或本地直接执行该种子对应的优先级评估任务。
可选地,步骤2.3)中调度器检测任意子节点发起的请求时,还包括调度器自己与子节点共同执行需要优先级评估的种子的优先级评估任务。
可选地,步骤3)中调度器检测任意子节点发起的请求时,还包括判断是否满足结束条件的步骤,若满足结束条件则结束并退出;所述结束条件是指收到终止命令、或当前时间与步骤1)开始执行的起始时间之间的时间差超过预设阈值、或步骤3)重复执行的次数超过预设阈值。
可选地,步骤3)中按照种子的优先级为发起请求的子节点分配种子对应的模糊测试任务时,还包括记录分配时间并进行计时,若超过预设时长分配种子在数据库中的状态仍为未完成模糊测试任务,则重新分配或本地直接执行该种子对应的模糊测试任务。
可选地,所述子节点的执行步骤包括:
S1)子节点向调度器发起任务请求,等待调度器分配优先级评估任务或者模糊测试任务,若收到优先级评估任务则跳转执行步骤S2);若收到模糊测试任务则跳转执行步骤S3);
S2)子节点从数据库下载被分配的优先级评估任务对应的种子及其状态信息,执行优先级评估任务,然后将结果生成结果处理请求并发送给调度器;跳转执行步骤S1);
S3)子节点从数据库下载包含被分配的模糊测试任务对应的种子在内的所有种子及其状态信息,执行被分配的模糊测试任务,并将从数据库下载的所有种子使用恢复模式试运行获得种子的覆盖率信息位图bitmap;
S4)基于被分配的优先级评估任务对应的种子的能量分配结果确定变异次数n;
S5)判断变异次数n是否为0,若为0,则判定模糊测试任务完成,跳转执行步骤S1);否则,跳转执行下一步;
S6)对被分配的优先级评估任务对应的种子进行变异产生n个新种子,且判断每一个新种子是否命中覆盖率信息位图bitmap中的边,如果命中覆盖率信息位图bitmap中的边则判定该新种子为有效的新种子;最终将所有有效的新种子及其状态信息上传到数据库,若有效的新种子大于1,则向调度器并发送更新请求;
S7)判断是否收到中断指令,若收到中断指令则结束并退出;否则跳转执行步骤S1)。
可选地,步骤S1)之前还包括子节点判断是否已经获取模糊测试的目标二进制程序,如果尚未获取模糊测试的目标二进制程序,则从数据库中获取模糊测试的目标二进制程序。
此外,本发明还提供一种基于动态集中式调度的分布式并行模糊测试***,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行所述基于动态集中式调度的分布式并行模糊测试方法的步骤。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行所述基于动态集中式调度的分布式并行模糊测试方法的计算机程序。
和现有技术相比,本发明具有下述优点:
1、本发明构建了以数据库为中心的细粒度并行框架,调度器(中心服务器、主节点)和子节点集群(计算集群)两部分组成了上述框架结构,计算集群中节点间互相独立,相关性低,允许集群规模的动态增减,提高了整体框架的容错率和可扩展性。
2、本发明包括调度器基于请求-响应模式为发起任务请求的子节点从当前的种子队列中分配测试任务,并收集子节点完成测试任务后的更新请求,基于上述动态集中式调度策略,主节点与测试节点通过包括socket机制在内的各类通信机制实现任务请求与分配,以数据库为信息中转站,将各个节点模糊测试状态信息和主节点种子循环队列等信息整合到中心节点进行去重评估等处理,从全局上避免任务冲突,保证了任务调度的动态性和合理性。
3、本发明按照种子的优先级为发起请求的子节点分配种子对应的模糊测试任务采用了子节点主动请求的方式,因此算力高的子节点在执行完前一个模糊测试任务后可立刻继续分配新的模糊测试任务,可充分利用不同算力差异的子节点,提高并行模糊测试效率。
附图说明
图1为本发明实施例一方法的基本流程示意图。
图2为本发明实施例一方法的***拓扑结构示意图。
图3为本发明实施例一中分配评估任务和测试任务的原理示意图。
图4为本发明实施例一中多角色的执行总流程示意图。
图5为本发明实施例一中子节点请求并执行测试任务的流程示意图。
具体实施方式
实施例一:
如图1所示,本实施例基于动态集中式调度的分布式并行模糊测试方法包括:
1)调度器从数据库中读取初始的种子及其状态信息;
2)调度器将读取的所有种子,依次执行模糊测试前的优先级评估以及能量分配,并将所有种子基于评估得到的优先级进行排序生成种子队列;
3)调度器检测任意子节点发起的请求,若收到的请求为任务请求,则按照种子的优先级为发起请求的子节点分配种子对应的模糊测试任务;若收到的请求为子节点执行完模糊测试任务后的更新请求,调度器从数据库中读取执行完模糊测试任务的子节点生成的新种子,将所有的种子执行去重后,跳转执行步骤2)。
需要说明的是,优先级评估以及能量分配为模糊测试前的基本步骤,本实施例中不涉及对模糊测试前的优先级评估以及能量分配的改进,因此其具体实现细节在此不再展开说明。
现有的模糊测试大都是单机单核或者单机多核,无法适用于大规模多机分布式环境。单机多核的模糊测试主要通过本地文件***等方式进行多线程同步,而且他们的任务分配方式是一刀切的,在程序启动前就确定好n个核,将任务划分成n部分给这几个核去执行。在这个过程中不能增加核的数量(因为任务的划分已经确定了),如果某一个核意外停止也会影响整体测试。图2为本实施例中实施例方法的***拓扑结构示意图,本实施例建立了以数据库为中心的细粒度并行框架:包括调度器与由子节点构成的工作集群,由数据库连接,由此将调度、存储、计算工作分离,保证了中心调度器对全局模糊测试工作状态的掌握与把控,减少了各模块间的依赖性,降低了测试节点个体对整体工作状态的影响,极大程度上降低了任务冲突可能性,削减冗余信息。其中,调度器和数据库构成了中心调度模块(即中心服务器),其中调度器主要提供的功能包括动态集中式调度机制、种子评估与能量分配机制,是整个框架的核心部分。调度器通过将所有种子id维护成一个全局种子队列,采用集中式调度策略,将测试任务合理地调度给各个计算节点,另外通过读取数据库所存储的所有的模糊测试状态执行评估、去重、能量分配等工作,解决任务冲突、信息冗余等问题。工作集群中的各个子节点相互独立,主要负责对任务的模糊测试工作。测试节点通过向中心调度器发出任务请求获取任务指令,开启测试进程,测试过程中,各个测试节点将得到的模糊测试状态和种子信息等数据上传至数据库交由中心调度器进行加工处理。因其独立性,无互相依赖,当个别节点意外退出或结束测试时,对其他测试节点无任何影响,因此本实施例方法中允许子节点的动态增减,具有较高容错率和可扩展性。
参见图2可知,本实施例中调度器采用了“动态集中调度策略”来为子节点调度分配模糊测试任务,其主要体现在:1、调度器与子节点通过包括socket机制在内的通信来实现任务请求与分配,以数据库为信息中转站,将各个节点模糊测试状态信息和主节点种子队列等信息整合到调度器进行去重评估、能量分配等处理的调度,从全局上避免任务冲突,保证了任务调度的动态性和合理性;2、本发明利用调度器执行种子去重,以及执行模糊测试前的优先级评估以及能量分配,并将所有种子基于评估得到的优先级进行排序生成种子队列,通过种子队列来实现种子(模糊测试任务)的集成分配,可减少模糊测试任务的重复执行,根据优先级评估来实现优先级调度,根据能量分配来控制模糊测试任务执行时的变异种子数量。3、将传统的调度器主动分配模糊测试任务的方式升级为调度器被动分配模糊测试任务,若收到的请求为任务请求,则按照种子的优先级为发起请求的子节点分配种子对应的模糊测试任务,一方面,子节点间互相独立,相关性低,允许集群规模的动态增减,提高了整体框架的容错率和可扩展性;另一方面,子节点可实现基于算力的被动优先,算力越高的可重复执行更多的模糊测试任务,可充分利用不同算力差异的子节点,提高模糊测试的效率。
分布式模糊测试中的算力分别用于测试计算和评估处理。由于模糊测试的高随机性,多个节点在不同测试阶段产生不同数量的种子,因此所需要的评估算力不同。当测试规模较大产生海量种子时,其中有大量重复的种子和执行相同路径的冲突种子,必须要分配足够的计算资源以降低任务堵塞,保证***的正常运行。
参见图2,步骤2)中执行模糊测试前的评估优先级为由调度器调度执行。为了进一步提高执行模糊测试前的评估优先级的效率,参见图3,本实施例中在步骤2)中执行模糊测试前的评估优先级时,需要根据调度器(中心服务器)的算力评估,来选择调度器(中心服务器)和/或子节点来执行优先级评估任务,即“算力弹性分配策略”。本实施例中“算力弹性分配策略”是指步骤2)中执行模糊测试前的评估优先级的步骤,具体包括:
2.1)调度器根据需要优先级评估的种子数量、调度器完成一个种子的优先级评估所需时间计算出调度器自身完成所有需要优先级评估的种子优先级评估的总时间N;
2.2)调度器判断总时间N是否超过预设阈值,若总时间N未超过预设阈值,则调度器直接完成所有需要优先级评估的种子优先级评估,跳转执行步骤2.4);否则跳转执行下一步;
2.3)调度器检测任意子节点发起的请求,若收到的请求为任务请求,则按照种子的优先级为发起请求的子节点分配种子对应的优先级评估任务;若收到的请求为子节点执行完优先级评估任务后的结果处理请求,则调度器判断是否完成所有需要优先级评估的种子优先级评估,若已经完成所有需要优先级评估的种子优先级评估,则跳转执行步骤2.4);
2.4)判定执行模糊测试前的评估优先级完成,继续往下执行。
在大规模分布式的工作集群中子节点将产生海量种子,去重评估工作开销占据较大比重,为预防该工作造成中心服务器节点拥堵,本实施例中采用了“算力弹性分配策略”,当***负载超过设定阈值(算力不达标)即启动算力弹性分配策略,从计工作集群中分配算力资源(子节点)以分担负载压力,加快评估优先级的执行效率。
考虑到子节点执行优先级评估任务可能会产生异常、影响优先级评估效率的问题,本实施例步骤2.3)中按照种子的优先级为发起请求的子节点分配种子对应的优先级评估任务时,还包括记录分配时间并进行计时,若超过预设时长仍未收到对应子节点执行完优先级评估任务后的结果处理请求,则重新分配或本地直接执行该种子对应的优先级评估任务。
考虑到调度器所在计算机的性能一般较强,为了发挥调度器所在计算机的性能优势,本实施例步骤2.3)中调度器检测任意子节点发起的请求时,还包括调度器自己与子节点共同执行需要优先级评估的种子的优先级评估任务。
前述步骤1)~3)为循环执行并行模糊测试的步骤。为了进一步实现调度器紧急以及自动结束任务的功能,本实施例步骤3)中调度器检测任意子节点发起的请求时,还包括判断是否满足结束条件的步骤,若满足结束条件则结束并退出;结束条件是指收到终止命令、或当前时间与步骤1)开始执行的起始时间之间的时间差超过预设阈值、或步骤3)重复执行的次数超过预设阈值。需要说明的是,图3中三个判断条件(收到的请求是否为任务请求,收到的请求是否为子节点执行完模糊测试任务后的更新请求,以及是否满足结束条件)为具有特定的现有顺序关系,但是前述三个判断条件实际上为触发时间,因此图3中仅仅是为了表示方便的判断方法,实际上三个判断条件的顺序并不依赖于图3中特定的顺序。
考虑到子节点执行优先级评估任务可能会产生异常、影响优先级评估效率的问题,本实施例步骤3)中按照种子的优先级为发起请求的子节点分配种子对应的模糊测试任务时,还包括记录分配时间并进行计时,若超过预设时长分配种子在数据库中的状态仍为未完成模糊测试任务,则重新分配或本地直接执行该种子对应的模糊测试任务。
参见图5,本实施例中子节点的执行步骤包括:
S1)子节点向调度器发起任务请求,等待调度器分配优先级评估任务或者模糊测试任务,若收到优先级评估任务则跳转执行步骤S2);若收到模糊测试任务则跳转执行步骤S3);
S2)子节点从数据库下载被分配的优先级评估任务对应的种子及其状态信息,执行优先级评估任务,然后将结果生成结果处理请求并发送给调度器;跳转执行步骤S1);
S3)子节点从数据库下载包含被分配的模糊测试任务对应的种子在内的所有种子及其状态信息,执行被分配的模糊测试任务,并将从数据库下载的所有种子使用恢复模式试运行(dry_run)获得种子的覆盖率信息位图bitmap;需要说明的是,所有种子使用恢复模式试运行(dry_run)获得种子的覆盖率信息位图bitmap为现有模糊测试方法,本实施例方法中关键在于将传统方法中有调度器执行的上述步骤迁移到子节点执行,从而可有效减少调度器进行种子去重以及评估、能量分配的压力。
S4)基于被分配的优先级评估任务对应的种子的能量分配结果确定变异次数n;
S5)判断变异次数n是否为0,若为0,则判定模糊测试任务完成,跳转执行步骤S1);否则,跳转执行下一步;
S6)对被分配的优先级评估任务对应的种子进行变异产生n个新种子,且判断每一个新种子是否命中覆盖率信息位图bitmap中的边,如果命中覆盖率信息位图bitmap中的边则判定该新种子为有效的新种子;最终将所有有效的新种子及其状态信息上传到数据库,若有效的新种子大于1,则向调度器并发送更新请求;
S7)判断是否收到中断指令,若收到中断指令则结束并退出;否则跳转执行步骤S1)。
上述步骤S1)~S7)为子节点的执行步骤,结合图3可知,由于调度器会在调度优先级评估任务(evaluating)、模糊测试任务(fuzzing)两种调度状态之间切换,因此由于调度器的调度状态切换,使得子节点的执行的任务也会在优先级评估任务、模糊测试任务两种任务之间发生变化。
本实施例中,步骤S1)之前还包括子节点判断是否已经获取模糊测试的目标二进制程序,如果尚未获取模糊测试的目标二进制程序,则从数据库中获取模糊测试的目标二进制程序,实现了目标二进制程序的缓存,可以提高模糊测试效率。
此外,步骤S3)子节点从数据库下载包含被分配的模糊测试任务对应的种子在内的所有种子及其状态信息时,本实施例中也会优先读取本地存储(缓存种子备份),来减少数据传输,提高执行效率。参见图2和图5可知,本实施例中采用了“层次化信息同步”的信息同步机制。测试中所需同步的信息分为种子、测试状态和覆盖率信息三种,因此为最大可能的降低开销,本实施例根据数据特性和需求不同采用多种方式进行同步,比如直接共享(数据库存储和共享)、本地存储(缓存种子备份)以及重现,具体是指“复现”和“同步”。
“复现”:将从数据库下载的种子使用恢复模式,dry_run一遍(初次运行某程序时只dry_run初始测试用例),这样一来,能够使当前节点快速更新本地的一些模糊测试状态,减少了“同步”时的开销。对于存储占用空间大、对比复杂度高的覆盖率信息。
“同步”:方法通过从中心服务器下载新的种子,以及其他模糊测试状态信息,将那些无法通过“复现”得到的状态同步给各个节点。通过以上两种方式进行状态共享,以及中心调度器对整个模糊测试进程进行引导,消除任务冲突,降低部分低价值种子被过度测试的可能,避免测试节点工作不饱和,从而规避了大量的冗余工作。
综上所述,在将单核模糊测试扩展至多核环境中时,需要有针对性的全局优化措施,避免在缺乏全局状态信息和节点数据的情况下,盲目调度而造成能量分配不合理。本实施例基于动态集中式调度的分布式并行模糊测试方法通过综合考虑全局的任务信息、节点计算能力信息等,将调度从计算中分离,实现计算任务与计算能力之间的动态最优匹配,实现分布式环境下能量分配优化、负载均衡以及动态节点增删等功能。
此外,本实施例还提供一种基于动态集中式调度的分布式并行模糊测试***,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行前述基于动态集中式调度的分布式并行模糊测试方法的步骤。此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述基于动态集中式调度的分布式并行模糊测试方法的计算机程序。
实施例二:
本实施例与实施例一基本相同,其主要区别点为:实施例一中调度器和数据库两者为集成在同一个中心服务器中,而本实施例中调度器和数据库两者具有相互独立的服务器。除了上述一体、或分体的服务器(物理机)的形式以外,调度器和数据库两者还可以通过其他形式来实现,包括相同或不同的虚拟机,相同或不同的容器,以及物理机、虚拟机、容器的组合方式来实现等等,其具体可以根据需要进行选择。
需要说明的是,数据库本质上是用于集中存储种子及其状态信息,因此此处的数据库是泛指所有能够实现存储种子及其状态信息功能的存储设备,既可以是侠义上的数据库,例如各类关系数据库、key-value数据库以及其他数据库,也可以是广义上的数据库,例如指定格式的数据文件,以及其他可实现数据交换的数据存储介质等。
此外,本实施例还提供一种基于动态集中式调度的分布式并行模糊测试***,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行前述基于动态集中式调度的分布式并行模糊测试方法的步骤。此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述基于动态集中式调度的分布式并行模糊测试方法的计算机程序。
实施例三:
本实施例与实施例一基本相同,其主要区别点为:实施例一中步骤2.1)~2.2)中调度器的算力是根据需要优先级评估的种子数量、调度器完成一个种子的优先级评估所需时间计算出调度器自身完成所有需要优先级评估的种子优先级评估的总时间N,判断总时间N是否超过预设阈值来确定算力是否达标。而本实施例中,则是采用调度器所在计算机(中心服务器)的平均CPU占用率是否低于预设阈值来确定算力是否达标。本实施例中,步骤2)中执行模糊测试前的评估优先级的步骤包括:
2.1A)调度器判断当前往前一段时间内所在计算机(中心服务器)的平均CPU占用率;
2.2A)调度器判断平均CPU占用率是否超过预设阈值,若平均CPU占用率未超过预设阈值,则调度器直接完成所有需要优先级评估的种子优先级评估,跳转执行步骤2.4A);否则跳转执行下一步;
2.3A)调度器检测任意子节点发起的请求,若收到的请求为任务请求,则按照种子的优先级为发起请求的子节点分配种子对应的优先级评估任务;若收到的请求为子节点执行完优先级评估任务后的结果处理请求,则调度器判断是否完成所有需要优先级评估的种子优先级评估,若已经完成所有需要优先级评估的种子优先级评估,则跳转执行步骤2.4A);
2.4A)判定执行模糊测试前的评估优先级完成,继续往下执行。
此外,本实施例还提供一种基于动态集中式调度的分布式并行模糊测试***,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行前述基于动态集中式调度的分布式并行模糊测试方法的步骤。此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述基于动态集中式调度的分布式并行模糊测试方法的计算机程序。
实施例四:
本实施例与实施例一基本相同,其主要区别点为:实施例一中步骤2.1)~2.2)中调度器的算力是根据需要优先级评估的种子数量、调度器完成一个种子的优先级评估所需时间计算出调度器自身完成所有需要优先级评估的种子优先级评估的总时间N,判断总时间N是否超过预设阈值来确定算力是否达标。而本实施例中,则是采用所有子节点的平均CPU占用率是否低于预设阈值来确定算力是否达标。本实施例中,步骤2)中执行模糊测试前的评估优先级的步骤包括:
2.1B)调度器判断当前往前一段时间内所有子节点的平均CPU占用率;
2.2B)调度器判断所有子节点的平均CPU占用率是否超过预设阈值,若所有子节点的平均CPU占用率未超过预设阈值,则调度器直接完成所有需要优先级评估的种子优先级评估,跳转执行步骤2.4B);否则跳转执行下一步;
2.3B)调度器检测任意子节点发起的请求,若收到的请求为任务请求,则按照种子的优先级为发起请求的子节点分配种子对应的优先级评估任务;若收到的请求为子节点执行完优先级评估任务后的结果处理请求,则调度器判断是否完成所有需要优先级评估的种子优先级评估,若已经完成所有需要优先级评估的种子优先级评估,则跳转执行步骤2.4B);
2.4B)判定执行模糊测试前的评估优先级完成,继续往下执行。
此外,本实施例还提供一种基于动态集中式调度的分布式并行模糊测试***,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行前述基于动态集中式调度的分布式并行模糊测试方法的步骤。此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述基于动态集中式调度的分布式并行模糊测试方法的计算机程序。
实施例五:
本实施例与实施例一基本相同,其主要区别点为:实施例一中步骤2.1)~2.2)中调度器的算力是根据需要优先级评估的种子数量、调度器完成一个种子的优先级评估所需时间计算出调度器自身完成所有需要优先级评估的种子优先级评估的总时间N,判断总时间N是否超过预设阈值来确定算力是否达标。而本实施例中,则是采用调度器所在计算机(中心服务器)的平均CPU占用率、所有子节点的平均CPU占用率之间的比值来确定算力是否达标。
本实施例中,步骤2)中执行模糊测试前的评估优先级的步骤包括:
2.1C)调度器判断当前往前一段时间内调度器所在计算机(中心服务器)的平均CPU占用率、所有子节点的平均CPU占用率之间的比值;
2.2C)调度器判断调度器所在计算机(中心服务器)的平均CPU占用率、所有子节点的平均CPU占用率之间的比值是否超过预设阈值,若未超过预设阈值,则调度器直接完成所有需要优先级评估的种子优先级评估,跳转执行步骤2.4C);否则跳转执行下一步;
2.3C)调度器检测任意子节点发起的请求,若收到的请求为任务请求,则按照种子的优先级为发起请求的子节点分配种子对应的优先级评估任务;若收到的请求为子节点执行完优先级评估任务后的结果处理请求,则调度器判断是否完成所有需要优先级评估的种子优先级评估,若已经完成所有需要优先级评估的种子优先级评估,则跳转执行步骤2.4C);
2.4C)判定执行模糊测试前的评估优先级完成,继续往下执行。
此外,本实施例还提供一种基于动态集中式调度的分布式并行模糊测试***,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行前述基于动态集中式调度的分布式并行模糊测试方法的步骤。此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述基于动态集中式调度的分布式并行模糊测试方法的计算机程序。
需要说明的是,除了基于算力来选择优先级评估任务的执行主体,还可以进一步结合内存使用率、I/O数量等其他相关性能指标,来综合选择优先级评估任务的执行主体。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种基于动态集中式调度的分布式并行模糊测试方法,其特征在于,包括:
1)调度器从数据库中读取初始的种子及其状态信息;
2)调度器将读取的所有种子,依次执行模糊测试前的优先级评估以及能量分配,并将所有种子基于评估得到的优先级进行排序生成种子队列;
3)调度器检测任意子节点发起的请求,若收到的请求为任务请求,则按照种子的优先级为发起请求的子节点分配种子对应的模糊测试任务;若收到的请求为子节点执行完模糊测试任务后的更新请求,调度器从数据库中读取执行完模糊测试任务的子节点生成的新种子,将所有的种子执行去重后,跳转执行步骤2)。
2.根据权利要求1所述的基于动态集中式调度的分布式并行模糊测试方法,其特征在于,步骤2)中执行模糊测试前的评估优先级的步骤包括:
2.1)调度器根据需要优先级评估的种子数量、调度器完成一个种子的优先级评估所需时间计算出调度器自身完成所有需要优先级评估的种子优先级评估的总时间N;
2.2)调度器判断总时间N是否超过预设阈值,若总时间N未超过预设阈值,则调度器直接完成所有需要优先级评估的种子优先级评估,跳转执行步骤2.4);否则跳转执行下一步;
2.3)调度器检测任意子节点发起的请求,若收到的请求为任务请求,则按照种子的优先级为发起请求的子节点分配种子对应的优先级评估任务;若收到的请求为子节点执行完优先级评估任务后的结果处理请求,则调度器判断是否完成所有需要优先级评估的种子优先级评估,若已经完成所有需要优先级评估的种子优先级评估,则跳转执行步骤2.4);
2.4)判定执行模糊测试前的评估优先级完成,继续往下执行。
3.根据权利要求2所述的基于动态集中式调度的分布式并行模糊测试方法,其特征在于,步骤2.3)中按照种子的优先级为发起请求的子节点分配种子对应的优先级评估任务时,还包括记录分配时间并进行计时,若超过预设时长仍未收到对应子节点执行完优先级评估任务后的结果处理请求,则重新分配或本地直接执行该种子对应的优先级评估任务。
4.根据权利要求3所述的基于动态集中式调度的分布式并行模糊测试方法,其特征在于,步骤2.3)中调度器检测任意子节点发起的请求时,还包括调度器自己与子节点共同执行需要优先级评估的种子的优先级评估任务。
5.根据权利要求4所述的基于动态集中式调度的分布式并行模糊测试方法,其特征在于,步骤3)中调度器检测任意子节点发起的请求时,还包括判断是否满足结束条件的步骤,若满足结束条件则结束并退出;所述结束条件是指收到终止命令、或当前时间与步骤1)开始执行的起始时间之间的时间差超过预设阈值、或步骤3)重复执行的次数超过预设阈值。
6.根据权利要求5所述的基于动态集中式调度的分布式并行模糊测试方法,其特征在于,步骤3)中按照种子的优先级为发起请求的子节点分配种子对应的模糊测试任务时,还包括记录分配时间并进行计时,若超过预设时长分配种子在数据库中的状态仍为未完成模糊测试任务,则重新分配或本地直接执行该种子对应的模糊测试任务。
7.根据权利要求6所述的基于动态集中式调度的分布式并行模糊测试方法,其特征在于,所述子节点的执行步骤包括:
S1)子节点向调度器发起任务请求,等待调度器分配优先级评估任务或者模糊测试任务,若收到优先级评估任务则跳转执行步骤S2);若收到模糊测试任务则跳转执行步骤S3);
S2)子节点从数据库下载被分配的优先级评估任务对应的种子及其状态信息,执行优先级评估任务,然后将结果生成结果处理请求并发送给调度器;跳转执行步骤S1);
S3)子节点从数据库下载包含被分配的模糊测试任务对应的种子在内的所有种子及其状态信息,执行被分配的模糊测试任务,并将从数据库下载的所有种子使用恢复模式试运行获得种子的覆盖率信息位图bitmap;
S4)基于被分配的优先级评估任务对应的种子的能量分配结果确定变异次数n;
S5)判断变异次数n是否为0,若为0,则判定模糊测试任务完成,跳转执行步骤S1);否则,跳转执行下一步;
S6)对被分配的优先级评估任务对应的种子进行变异产生n个新种子,且判断每一个新种子是否命中覆盖率信息位图bitmap中的边,如果命中覆盖率信息位图bitmap中的边则判定该新种子为有效的新种子;最终将所有有效的新种子及其状态信息上传到数据库,若有效的新种子大于1,则向调度器并发送更新请求;
S7)判断是否收到中断指令,若收到中断指令则结束并退出;否则跳转执行步骤S1)。
8.根据权利要求7所述的基于动态集中式调度的分布式并行模糊测试方法,其特征在于,步骤S1)之前还包括子节点判断是否已经获取模糊测试的目标二进制程序,如果尚未获取模糊测试的目标二进制程序,则从数据库中获取模糊测试的目标二进制程序。
9.一种基于动态集中式调度的分布式并行模糊测试***,包括相互连接的微处理器和存储器,其特征在于,该微处理器被编程或配置以执行权利要求1~8中任意一项所述基于动态集中式调度的分布式并行模糊测试方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有被编程或配置以执行权利要求1~8中任意一项所述基于动态集中式调度的分布式并行模糊测试方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110807136.3A CN113590281B (zh) | 2021-07-16 | 2021-07-16 | 基于动态集中式调度的分布式并行模糊测试方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110807136.3A CN113590281B (zh) | 2021-07-16 | 2021-07-16 | 基于动态集中式调度的分布式并行模糊测试方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113590281A true CN113590281A (zh) | 2021-11-02 |
CN113590281B CN113590281B (zh) | 2023-09-26 |
Family
ID=78247849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110807136.3A Active CN113590281B (zh) | 2021-07-16 | 2021-07-16 | 基于动态集中式调度的分布式并行模糊测试方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590281B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114553490A (zh) * | 2022-01-25 | 2022-05-27 | 浙江木链物联网科技有限公司 | 工业用被动模糊测试方法、***和可读存储介质 |
CN114745606A (zh) * | 2022-02-23 | 2022-07-12 | 江苏苏云信息科技有限公司 | 基于规则调度的弹性伸缩工业数据采集***及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200104165A1 (en) * | 2018-09-28 | 2020-04-02 | Atlassian Pty Ltd | Systems and methods for scheduling tasks |
CN112346829A (zh) * | 2019-08-07 | 2021-02-09 | 上海云盾信息技术有限公司 | 一种用于任务调度的方法及设备 |
-
2021
- 2021-07-16 CN CN202110807136.3A patent/CN113590281B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200104165A1 (en) * | 2018-09-28 | 2020-04-02 | Atlassian Pty Ltd | Systems and methods for scheduling tasks |
CN112346829A (zh) * | 2019-08-07 | 2021-02-09 | 上海云盾信息技术有限公司 | 一种用于任务调度的方法及设备 |
Non-Patent Citations (4)
Title |
---|
CONGXI SONG等: "P-Fuzz: A Parallel Grey-Box Fuzzing Framework", APPLIED SCIENCES, pages 1 - 14 * |
CONGXI SONG等: "SPFuzzing: A Hierarchical Scheduling Framework for Stateful Network Protocol Fuzzing", IEEE ACCESS, vol. 7, pages 18490 - 18499, XP011710689, DOI: 10.1109/ACCESS.2019.2895025 * |
TAI YUE等: "LearnAFL: Greybox Fuzzing With Knowledge Enhancement", IEEE ACCESS, vol. 7, pages 117029 - 117043, XP011742851, DOI: 10.1109/ACCESS.2019.2936235 * |
周旭 卢凯 陈沉: "确定性并行技术", 计算机学报, vol. 38, no. 5, pages 973 - 986 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114553490A (zh) * | 2022-01-25 | 2022-05-27 | 浙江木链物联网科技有限公司 | 工业用被动模糊测试方法、***和可读存储介质 |
CN114553490B (zh) * | 2022-01-25 | 2024-02-09 | 浙江木链物联网科技有限公司 | 工业用被动模糊测试方法、***和可读存储介质 |
CN114745606A (zh) * | 2022-02-23 | 2022-07-12 | 江苏苏云信息科技有限公司 | 基于规则调度的弹性伸缩工业数据采集***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113590281B (zh) | 2023-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wang et al. | Optimizing load balancing and data-locality with data-aware scheduling | |
US10810051B1 (en) | Autoscaling using file access or cache usage for cluster machines | |
US8868623B2 (en) | Enhanced garbage collection in a multi-node environment | |
CN114138486B (zh) | 面向云边异构环境的容器化微服务编排方法、***及介质 | |
JP5998206B2 (ja) | クラスタデータグリッドにおける拡張可能な中央集中型動的リソース分散 | |
CN104636204B (zh) | 一种任务调度方法与装置 | |
KR101013073B1 (ko) | 태스크 분배 및 병렬 처리 시스템과 그 방법 | |
CN104317650A (zh) | 一种面向Map/Reduce型海量数据处理平台的作业调度方法 | |
WO2017058734A1 (en) | Distributed stream-based database triggers | |
TWI786564B (zh) | 任務調度方法和裝置、儲存媒體及計算機設備 | |
CN113590281A (zh) | 基于动态集中式调度的分布式并行模糊测试方法及*** | |
CN106656525B (zh) | 一种数据广播***、数据广播方法及设备 | |
Lai et al. | Sol: Fast distributed computation over slow networks | |
US10810054B1 (en) | Capacity balancing for data storage system | |
Jiang et al. | Symbiosis: Network-aware task scheduling in data-parallel frameworks | |
Wang et al. | Modeling interference for apache spark jobs | |
CN103116525A (zh) | 一种Internet环境下MapReduce计算方法 | |
CN112463395A (zh) | 一种资源分配方法、装置、设备及可读存储介质 | |
CN104794239A (zh) | 一种云平台数据处理方法 | |
Liu et al. | Optimizing shuffle in wide-area data analytics | |
Wang et al. | Dependency-aware network adaptive scheduling of data-intensive parallel jobs | |
CN115454649A (zh) | 面向空间操控仿真模型计算的动态任务调度*** | |
Thamsen et al. | Ellis: Dynamically scaling distributed dataflows to meet runtime targets | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
KR20170088277A (ko) | 데이터 교환 메커니즘을 포함하는 전자 시스템 및 그것의 동작 방법 |
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 |