CN114077742A - 软件漏洞智能挖掘方法和装置 - Google Patents
软件漏洞智能挖掘方法和装置 Download PDFInfo
- Publication number
- CN114077742A CN114077742A CN202111290592.1A CN202111290592A CN114077742A CN 114077742 A CN114077742 A CN 114077742A CN 202111290592 A CN202111290592 A CN 202111290592A CN 114077742 A CN114077742 A CN 114077742A
- Authority
- CN
- China
- Prior art keywords
- strategy
- node
- new
- result feedback
- policy
- 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
- 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
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
本发明提供一种软件漏洞智能挖掘方法和装置,其中,方法包括:并行运行多个策略执行节点;策略生成节点在接收到控制节点的开始指令后,发送初始策略队列至对应的策略执行节点;并行的多个策略执行节点执行初始策略队列生成当前结果反馈,将当前结果反馈发送给策略生成节点;策略生成节点根据当前结果反馈对强化学习智能体进行训练,由强化学习智能体生成新的策略并发送给策略执行节点;策略执行节点根据新的策略生成新结果反馈并反馈发送给策略生成节点;将新的结果反馈作为当前结果反馈,重复上述步骤。本发明通过为目标被测软件动态选择更优的模糊测试策略,使得并行模糊测试总体上的效率始终处于较高状态,避免单个固定策略存在的困境。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种软件漏洞智能挖掘方法和装置。
背景技术
大部分计算机程序是人工编制的,其中存在大量的未知程序缺陷和漏洞。一部分程序漏洞可能可以被攻击者利用,以实现对计算机系统的入侵、破坏等非法目的。为了从源头阻止计算机程序中的漏洞被恶意利用,计算机程序开发者和计算机系统维护者需要在恶意攻击者发起攻击前,发现、定位和修复计算机程序中的未知缺陷和漏洞,这个过程的第一步即发现计算机程序中的未知缺陷和漏洞。
最常见的发现计算机程序中的未知缺陷和漏洞的方式是软件测试。其中,模糊测试是当前最高效、低成本地发现计算机程序中的未知漏洞的方案。运行模糊测试的程序称为模糊测试器,模糊测试器尝试利用计算机的运算能力,为被测计算机程序自动产生大量输入数据。被测计算机程序接受并处理输入数据时,模糊测试器将进一步监控被测试计算机程序是否产生了异常行为。如果产生了异常行为,则标志着被测计算机程序中存在某种缺陷或漏洞。
模糊测试流程通常可拆分为多个相对独立的环节,包括:测试例生成环节、测试例挑选环节以及测试例变异环节等,每个环节会运行相应的计算机算法以达到该环节的目的。将各个环节中运行的具体算法进行替换,或将某个环节运行的具体算法的算法参数设置进行更改,都可能会使得模糊测试效果产生显著变化。我们将模糊测试各个环节上运行的具体算法称为模糊测试的策略。
目前主要有两种方式可以有效提升模糊测试的效率。第一种方式是改进模糊测试策略,即改进模糊测试中各个环节上运行的算法的效率,从而提升模糊测试整体的效率;第二种方式是利用并行计算或分布式计算技术,将模糊测试任务分发到多个模糊测试器实例中同时运行,并将这些模糊测试器实例得到的结果进行汇总、合并,从而提升模糊测试整体的效率。
现已经有大量的模糊测试方案通过第一种方式,即通过改进模糊测试中各个环节运行的具体算法,来达到优化模糊测试整体效率的目的。例如,在测试例生成环节,Skyfire方案通过学习大量正常XML样本,推断出一个带概率的XML文件的上下文无关文法,进而指导新的XML测试例生成;IMF方案通过学习API测试序列的参数依赖、位置依赖等,提取API依赖关系,并指导API测试序列生成;DIFUZE方案通过静态分析构造合法的输入对内核驱动进行测试。微软提出的Learn&Fuzz方案采用RNN深度学习方法对大量的PDF文件进行训练学习,然后采用序列预测的方法尝试生成更多蕴含合法语法结构PDF文件种子。在测试例选择环节,如前所述,研究人员提出了AFLfast、Vuzzer、AFLgo、Hawkeye、FairFuzz、QTEP以及SlowFuzz等众多方案。在测试例变异环节,同样现有MOPT、Neuzz、Driller、QSYM、GreyOne等不同方案。
但是,这些针对模糊测试各个环节的具体算法优化的方案各有千秋。实践经验表明,几乎没有任何一个优化方案能够在所有被测试程序上显著超越另一个优化方案。究其本质,模糊测试是一个搜索问题:给定被测试程序,模糊测试器在程序的输入空间中进行搜索,试图找到可以触发程序漏洞的输入数据。程序的输入空间是无穷大的,而可触发程序漏洞的输入数据有限。不同的模糊测试方案以不同的策略对这个无穷空间进行搜索,而不同的被测试程序的输入空间也是不同的,因而不存在全局最优的搜索策略。换言之,对于两个不同的模糊测试方案,或者同一个模糊测试方案应用两个不同的测试策略,它们在不同的程序上可能各有千秋。
另一方面,现也已经有大量的模糊测试方案通过第二种方式,即通过利用并行计算、分布式计算等技术,来达到优化模糊测试效率的目的。例如,Clusterfuzz方案通过并行运行数万甚至数十万的模糊测试器实例,满足了对包括Chromium浏览器在内的超大型计算机软件的模糊测试需求;但是,受限于Clusterfuzz巨大的并行度,Clusterfuzz并不能在这些并行运行的模糊测试器实例之间进行充分的数据共享。PAFL方案在并行运行多个模糊测试器实例的同时,也会在这些模糊测试器实例之间同步测试例数据。经过测试例数据的同步后,各个模糊测试器实例可以立即得到由其他模糊测试器实例得到的测试进展。EnFuzz方案则在PAFL的基础上,依靠人工挑选出一些优势互补的模糊测试策略,并行运行在不同的模糊测试器实例上。这样,各个不同的模糊测试策略能够互相取长补短,进一步提升模糊测试的效率。但是,PAFL和EnFuzz都是采取的静态策略,即在模糊测试开始前,必须要确定各个并行运行的模糊测试器实例上运行的模糊测试策略,在模糊测试运行过程中不能对这些策略进行更改。这种方法阻止了更进一步的优化,因为模糊测试无法根据当前的实际测试情况动态调整模糊测试策略。
发明内容
本发明提供一种软件漏洞智能挖掘方法和装置,用以解决现有技术中模糊测试测试策略功能差异大以及效率低下的缺陷,实现基于强化学习技术的并行模糊测试方案使得并行模糊测试总体上的效率始终处于较高状态,避免单个固定策略可能存在的困境。
第一方面,本发明提供一种软件漏洞智能挖掘方法,包括:
110:并行运行多个策略执行节点;
120:策略生成节点在接收到控制节点的开始指令后,发送初始策略队列至对应的所述策略执行节点;
130:所述策略执行节点执行所述初始策略队列,生成当前结果反馈,将所述当前结果反馈发送给所述策略生成节点;
140:所述策略生成节点根据所述当前结果反馈对强化学习智能体进行训练,并由所述强化学习智能体生成新的策略;
150:所述策略生成节点将所述新的策略发送给所述策略执行节点;
160:所述策略执行节点根据所述新的策略生成新的结果反馈,将所述新的结果反馈发送给所述策略生成节点;
170:将所述新的结果反馈作为当前结果反馈,执行步骤140。
进一步,本发明还提供一种软件漏洞智能挖掘方法,其中,所述策略执行节点执行所述初始策略队列,生成当前结果反馈,具体包括:
所述策略执行节点根据所述初始策略队列中的每一个策略生成对应的待测试的测试例;
所述策略执行节点根据执行环境中的被测试程序对所述测试例进行测试,获取当前结果反馈。
进一步,本发明还提供一种软件漏洞智能挖掘方法,其中,所述策略执行节点根据所述新的策略生成新的结果反馈,具体包括:
所述策略执行节点根据所述新的策略生成待测试的新的测试例;
所述策略执行节点根据执行环境中的被测试程序对所述新的进行测试,获取新的结果反馈。
进一步,本发明还提供一种软件漏洞智能挖掘方法,其中,所述当前反馈结果包括测试代码覆盖率数据和测试例是否导致目标程序异常行为数据。
进一步,本发明还提供一种软件漏洞智能挖掘方法,其中,所述控制节点运行一个web服务器软件,用于向用户提供系统操作界面。
进一步,本发明还提供一种软件漏洞智能挖掘方法,其中,所述策略生成节点与所述策略执行节点之间通过进程间通信进行命令传输和数据交换。
第二方面,本发明提供一种软件漏洞智能挖掘装置,包括:
第一处理模块,用于并行运行多个策略执行节点;
第二处理模块,用于策略生成节点在接收到控制节点的开始指令后,发送初始策略队列至对应的所述策略执行节点;
第三处理模块,用于所述策略执行节点执行所述初始策略队列生成当前结果反馈,将所述当前结果反馈发送给所述策略生成节点;
第四处理模块,用于所述策略生成节点根据所述当前结果反馈对强化学习智能体进行训练,并由所述强化学习智能体生成新的策略;
第五处理模块,用于所述策略生成节点将所述新的策略发送给所述策略执行节点;
第六处理模块,用于所述策略执行节点根据所述新的策略生成新的结果反馈,将所述新的结果反馈发送给所述策略生成节点;
第七处理模块,用于将所述新的结果反馈作为当前结果反馈,输入至第四处理模块中。
进一步,本发明还提供一种软件漏洞智能挖掘装置,其中,所述第三处理模块,具体用于:
所述策略执行节点根据所述初始策略队列中的每一个策略生成对应的待测试的测试例;
所述策略执行节点根据执行环境中的被测试程序对所述测试例进行测试,获取当前结果反馈。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述软件漏洞智能挖掘方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述软件漏洞智能挖掘方法的步骤。
本发明提供的软件漏洞智能挖掘方法和装置,通过采用并行模糊测试技术,并利用强化学习技术,对并行运行的每个模糊测试器实例上运行的模糊测试策略进行实时评估,获取不同策略对测试效率的影响,并动态调整每个模糊测试器实例上运行的模糊测试策略,为目标被测软件动态选择更优的模糊测试策略,本发明通过上述方法可以使得使得并行模糊测试总体上的效率始终处于较高状态,避免单个固定策略可能存在的困境。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的软件漏洞智能挖掘方法的流程示意图;
图2是本发明提供的策略生成节点的结构示意图;
图3是本发明提供的策略执行节点中的测试例生成模块的结构示意图;
图4是本发明提供的策略执行节点中的测试例测试模块的结构示意图;
图5是本发明提供的软件漏洞智能挖掘装置的结构示意图;
图6是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
强化学习是一种对目标导向的学习与决策问题进行理解和自动化处理的计算方法,强调智能体通过与环境的直接互动来学习,而不需要可效仿的监督信号或对周围环境的完全建模,主要可以用于解决一些传统算法难以处理的优化问题。在强化学习算法中有两个可以交互的对象:智能体和环境。智能体是强化学习算法的本体,作为策略的学习者和决策者,智能体可以感知环境的状态,并根据反馈的收益学习执行动作获得最大化长期总收益。环境会接收智能体执行的一系列动作,对这一系列动作进行评价并转换为一种可量化的信号反馈给智能体。
除了智能体和环境外,强化学习系统有四个核心的要素:策略、收益信号、价值函数以及对环境建立的模型。策略定义了智能体在特定时间的行为方式,是一种环境状态到动作的映射。策略可以决定智能体的行为,因此策略是强化学习智能体的核心。收益信号定义了强化学习问题中的目标。智能体与环境的每一步交互中,环境会向智能体发送一个称为收益的标量数值,智能体的唯一目标是最大化长期的总收益。因此,收益信号是改变策略的主要基础。收益信号表明了短时间内什么是好的,价值函数表示了从长远的角度来看对智能体来说什么是好的。价值函数是一种状态到价值的映射,一个状态的价值是智能体从这个状态开始,对将来积累的总收益的期望。强化学习的最后一个要素是对环境建立的模型,是智能体对外部环境的建模。智能体使用环境模型进行规划,先考虑可能发生的各种情形从而预先决定采取何种策略。对于强化学习智能体来说,模型不是必须的,当环境非常复杂难以建模时,可以使用无模型的算法来训练智能体。
下面结合图1描述本发明的一种软件漏洞智能挖掘方法,包括:
步骤110:并行运行多个策略执行节点;
具体地,本发明实施例采用协作式并行模糊测试技术方案中,同时运行多个模糊测试器对测试例进行测试。同时,系统内各种类型节点的数量均可动态增加或减少。控制节点负责对系统内所有节点的运行状态进行监控、控制系统内所有节点的运行或停机、监控系统内所有节点上运行的软件系统的状态、控制系统内所有节点上运行的软件系统的运行或停机。
步骤120:策略生成节点在接收到控制节点的开始指令后,发送初始策略队列至对应的策略执行节点;
具体地,在本发明实施例中在系统内的每个节点上均运行一个监控程序,该监控程序通过使用分布式系统基础设施的功能,接收来自控制节点的控制命令,并定期向控制节点发送包含节点运行状态信息的心跳数据包。本发明中的策略生成节点在接收到控制节点的开始指令之后,将预先设置好的策略以队列的形式发送给对应的策略执行节点。本发明实施例提供一种策略生成节点的架构,如图2所示,包括控制模块,调度模块以及强化学习智能体,其中控制模块用于接收控制节点的控制命令,调度模块在接收到指令之后向策略执行节点发送预先设置好的策略,并将发送的策略加入队列中,依次发送给策略执行节点。
步骤130:所述策略执行节点执行所述初始策略队列生成当前结果反馈,将所述当前结果反馈发送给所述策略生成节点;
具体地,在本发明实施例中策略执行节点根据接收到的策略队列中的每一个策略生成对应的结果反馈,并将生成的结果反馈发送给策略生成节点的调度模块。
步骤140:所述策略生成节点根据所述当前结果反馈对强化学习智能体进行训练,并由所述强化学习智能体生成新的策略;
具体地,本发明实施例中的策略生成节点根据接收到的当前结果反馈进行训练,结合本发明提供的一种策略生成节点的结构,表现为调度模块接受来自策略执行节点的反馈数据传递给强化学习智能体训练使用。智能体根据当前状态返回预测结果给控制模块。其中预测结果中包含强化学习智能体生成的新的策略。
步骤150:所述策略生成节点将所述新的策略发送给所述策略执行节点;
具体地,控制模块将预测数据传递策略执行节点用以执行对应的新生成的策略。
步骤160:所述策略执行节点根据所述新的策略生成新的结果反馈,将所述新的结果反馈发送给所述策略生成节点;
具体地,策略执行节点根据接收到的新的策略生成节点发送的新的策略,并生成对应的新的结果反馈,并将生成的新的结果反馈发送给策略生成节点。
步骤170:将所述新的结果反馈作为当前结果反馈,执行步骤140。
具体地,由于模糊测试是一个搜索问题:给定被测试程序,模糊测试器在程序的输入空间中进行搜索,试图找到可以触发程序漏洞的输入数据。程序的输入空间是无穷大的,而可触发程序漏洞的输入数据有限。不同的模糊测试方案以不同的策略对这个无穷空间进行搜索,而不同的被测试程序的输入空间也是不同的,因而不存在全局最优的搜索策略。在本发明实施例中策略生成模块中的强化学习智能体根据接收到的新的结果反馈进行相应的策略调整即根据当前的实际测试情况动态调整模糊测试策略。
本发明提供的软件漏洞智能挖掘方法,通过采用并行模糊测试技术,并利用强化学习技术,对并行运行的每个模糊测试器实例上运行的模糊测试策略进行实时评估,获取不同策略对测试效率的影响,并动态调整每个模糊测试器实例上运行的模糊测试策略,为目标被测软件动态选择更优的模糊测试策略,本发明通过上述方法可以使得使得并行模糊测试总体上的效率始终处于较高状态,避免单个固定策略可能存在的困境。
进一步,本发明还提供一种软件漏洞智能挖掘方法,其中,所述策略执行节点执行所述初始策略队列生成当前结果反馈,具体包括:
所述策略执行节点根据所述初始策略队列中的每一个策略生成对应的待测试的测试例;
所述策略执行节点根据执行环境中的被测试程序对所述测试例进行测试,获取当前结果反馈。
具体地,在本发明中策略执行节点在接收到策略生成节点的初始策略队列之后,根据每一个策略生成对应的测试例。本发明提供一种用于生成测试例的架构,如图3所示,测试例生成模块包括模糊测试器、监控程序以及分布式基础功能组件,其中模糊测试器与运行在同一个测试例生成模块上的监控程序通过进程间通信(IPC)进行命令传输以及数据交换。监控程序会根据收到的来自控制节点的控制命令向模糊测试器发送控制命令,这些控制命令包括启动命令、暂停命令和停止命令。启动命令用于启动模糊测试器的运行,暂停命令用于使模糊测试器暂存其运行状态并在未来某时刻恢复其运行,停止命令用于终止模糊测试器的运行。当模糊测试器根据执行的策略确定需要执行某个测试例时,模糊测试器会通过该IPC信道将测试例数据发送至监控程序,并由监控程序通过使用分布式基础设施所提供的远程过程调用功能,将所述测试例发送给测试例测试模块,对所述测试例进行测试。本发明额外构建了一套插件式的、支持动态调整模糊测试策略的模糊测试器运行在测试例生成模块上,但其他已有的模糊测试器的实施方式也可以较为容易地移植到本发明的系统中运行。
策略执行节点中测试例测试模块对所述测试例进行测试,本发明提供一种测试例测试模块的结构设计,如图4所示,包括执行环境、监控程序以及分布式系统基础功能组件。其中测试例测试模块上运行的监控程序将运行一个远程过程调用服务器,用于响应来自测试例生成模块的远程调用请求。测试例测试模块上运行的监控程序收到请求后,会将接收到的测试例通过进程间通信发送至执行环境中。执行环境启动被测试程序,并将测试例作为被测试程序的输入。在被测试程序执行的过程中,执行环境将监控被测试程序的行为,并收集被测试程序的测试代码覆盖率。当执行完毕,执行环境会将测试代码覆盖率以及被测试程序是否存在异常行为等信息通过进程间通信发回运行在同一个测试例测试模块上的监控程序,监控程序最终通过从远程过程调用向测试例生成模块返回这些执行结果数据。
进一步,本发明还提供一种软件漏洞智能挖掘方法,其中,所述策略执行节点根据所述新的策略生成新的结果反馈,具体包括:
所述策略执行节点根据所述新的策略生成待测试的新的测试例;
所述策略执行节点根据执行环境中的被测试程序对所述新的进行测试,获取新的结果反馈。
具体地,其中的详细步骤如上述实施例所示,本实施例不予赘述。
进一步,本发明还提供一种软件漏洞智能挖掘方法,其中,所述当前结果反馈包括测试代码覆盖率数据和测试例是否导致目标程序异常行为数据。
具体地,本发明实施例中当前结果反馈为在被测试程序执行的过程中,执行环境将监控被测试程序的行为,并收集被测试程序的测试代码覆盖率。当执行完毕,执行环境会将测试代码覆盖率以及被测试程序是否存在异常行为等信息。
为了监控被测试程序的行为以及收集被测试程序的测试代码覆盖率,根据被测试程序种类的不同,在系统启动时或在被测试程序运行时,策略执行节点上运行的执行环境将通过程序插桩技术或类似技术向被测试程序中插入检查异常行为的代码以及收集测试代码覆盖率的代码。在运行被测试程序时,这些由执行环境注入的代码将辅助执行环境完成异常行为监控和覆盖率收集工作。
进一步,本发明还提供一种软件漏洞智能挖掘方法,其中,所述控制节点运行一个web服务器软件,用于向用户提供系统操作界面。
具体地,另外,控制节点上还运行一个web服务器软件,该web服务器软件通过安全超文本传输协议(HTTPS)向用户提供系统操作界面,用户可以在网页浏览器中通过访问特定的网络站点来访问系统操作界面。系统操作界面提供系统状态监控、模糊测试任务管理、系统维护等功能。
进一步,本发明还提供一种软件漏洞智能挖掘方法,其中,所述策略生成节点与所述策略执行节点之间通过进程间通信进行命令传输和数据交换。
另外,本发明还提供数据存储节点用于提供数据存储服务,允许系统内其他节点对存储于数据存储节点中的数据进行读取和写入。
结合图5所示,本发明提供一种软件漏洞智能挖掘装置,包括:
第一处理模块51,用于并行运行多个策略执行节点;
第二处理模块52,用于策略生成节点在接收到控制节点的开始指令后,发送初始策略队列至对应的所述策略执行节点;
第三处理模块53,用于所述策略执行节点执行所述初始策略队列生,成当前结果反馈,将所述当前结果反馈发送给所述策略生成节点;
第四处理模块54,用于所述策略生成节点根据所述当前结果反馈对强化学习智能体进行训练,并由所述强化学习智能体生成新的策略;
第五处理模块55,用于所述策略生成节点将所述新的策略发送给所述策略执行节点;
第六处理模块56,用于所述策略执行节点根据所述新的策略生成新的结果反馈,将所述新的结果反馈发送给所述策略生成节点;
第七处理模块57,用于将所述新的结果反馈作为当前结果反馈,输入至第四处理模块中。
由于本发明实施例提供的装置,可以用于执行上述实施例所述的方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参见上述实施例的介绍。
本发明提供的软件漏洞智能挖掘装置,通过采用并行模糊测试技术,并利用强化学习技术,对并行运行的每个模糊测试器实例上运行的模糊测试策略进行实时评估,获取不同策略对测试效率的影响,并动态调整每个模糊测试器实例上运行的模糊测试策略,为目标被测软件动态选择更优的模糊测试策略,本发明通过上述方法可以使得使得并行模糊测试总体上的效率始终处于较高状态,避免单个固定策略可能存在的困境。
进一步,本发明还提供一种软件漏洞智能挖掘装置,其中,所述第三处理模块53,具体用于:
所述策略执行节点根据所述初始策略队列中的每一个策略生成对应的待测试的测试例;
所述策略执行节点根据执行环境中的被测试程序对所述测试例进行测试,获取当前结果反馈。
进一步,本发明还提供一种软件漏洞智能挖掘装置,其中,所述第六处理模块56,具体用于:
所述策略执行节点根据所述新的策略生成待测试的新的测试例;
所述策略执行节点根据执行环境中的被测试程序对所述新的进行测试,获取新的结果反馈。
进一步,本发明还提供一种软件漏洞智能挖掘装置,其中,所述当前反馈结果包括测试代码覆盖率数据和测试例是否导致目标程序异常行为数据。
进一步,本发明还提供一种软件漏洞智能挖掘装置,其中,所述第二处理模块52中的所述控制节点运行一个web服务器软件,用于向用户提供系统操作界面。
进一步,本发明还提供一种软件漏洞智能挖掘装置,其中,所述策略生成节点与所述策略执行节点之间通过进程间通信进行命令传输和数据交换。
图6示例了一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行一种软件漏洞智能挖掘方法,该方法包括:110:并行运行多个策略执行节点;120:策略生成节点在接收到控制节点的开始指令后,发送初始策略队列至对应的所述策略执行节点;130:所述策略执行节点执行所述初始策略队列,生成当前结果反馈,将所述当前结果反馈发送给所述策略生成节点;140:所述策略生成节点根据所述当前结果反馈对强化学习智能体进行训练,并由所述强化学习智能体生成新的策略;150:所述策略生成节点将所述新的策略发送给所述策略执行节点;160:所述策略执行节点根据所述新的策略生成新的结果反馈,将所述新的结果反馈发送给所述策略生成节点;170:将所述新的结果反馈作为当前结果反馈,执行步骤140。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的一种软件漏洞智能挖掘方法,该方法包括:110:并行运行多个策略执行节点;120:策略生成节点在接收到控制节点的开始指令后,发送初始策略队列至对应的所述策略执行节点;130:所述策略执行节点执行所述初始策略队列,生成当前结果反馈,将所述当前结果反馈发送给所述策略生成节点;140:所述策略生成节点根据所述当前结果反馈对强化学习智能体进行训练,并由所述强化学习智能体生成新的策略;150:所述策略生成节点将所述新的策略发送给所述策略执行节点;160:所述策略执行节点根据所述新的策略生成新的结果反馈,将所述新的结果反馈发送给所述策略生成节点;170:将所述新的结果反馈作为当前结果反馈,执行步骤140。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的一种软件漏洞智能挖掘方法,该方法包括:110:并行运行多个策略执行节点;120:策略生成节点在接收到控制节点的开始指令后,发送初始策略队列至对应的所述策略执行节点;130:所述策略执行节点执行所述初始策略队列,生成当前结果反馈,将所述当前结果反馈发送给所述策略生成节点;140:所述策略生成节点根据所述当前结果反馈对强化学习智能体进行训练,并由所述强化学习智能体生成新的策略;150:所述策略生成节点将所述新的策略发送给所述策略执行节点;160:所述策略执行节点根据所述新的策略生成新的结果反馈,将所述新的结果反馈发送给所述策略生成节点;170:将所述新的结果反馈作为当前结果反馈,执行步骤140。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种软件漏洞智能挖掘方法,其特征在于,包括:
110:并行运行多个策略执行节点;
120:策略生成节点在接收到控制节点的开始指令后,发送初始策略队列至对应的所述策略执行节点;
130:所述策略执行节点执行所述初始策略队列,生成当前结果反馈,将所述当前结果反馈发送给所述策略生成节点;
140:所述策略生成节点根据所述当前结果反馈对强化学习智能体进行训练,并由所述强化学习智能体生成新的策略;
150:所述策略生成节点将所述新的策略发送给所述策略执行节点;
160:所述策略执行节点根据所述新的策略生成新的结果反馈,将所述新的结果反馈发送给所述策略生成节点;
170:将所述新的结果反馈作为当前结果反馈,执行步骤140。
2.根据权利要求1所述的软件漏洞智能挖掘方法,其特征在于,所述策略执行节点执行所述初始策略队列,生成当前结果反馈,具体包括:
所述策略执行节点根据所述初始策略队列中的每一个策略生成对应的待测试的测试例;
所述策略执行节点根据执行环境中的被测试程序对所述测试例进行测试,获取当前结果反馈。
3.根据权利要求1所述的软件漏洞智能挖掘方法,其特征在于,所述策略执行节点根据所述新的策略生成新的结果反馈,具体包括:
所述策略执行节点根据所述新的策略生成待测试的新的测试例;
所述策略执行节点根据执行环境中的被测试程序对所述新的进行测试,获取新的结果反馈。
4.根据权利要求1所述的软件漏洞智能挖掘方法,其特征在于,所述当前反馈结果包括测试代码覆盖率数据和测试例是否导致目标程序异常行为数据。
5.根据权利要求1所述的软件漏洞智能挖掘方法,其特征在于,所述控制节点运行一个web服务器软件,用于向用户提供系统操作界面。
6.根据权利要求1所述的软件漏洞智能挖掘方法,其特征在于,所述策略生成节点与所述策略执行节点之间通过进程间通信进行命令传输和数据交换。
7.一种软件漏洞智能挖掘装置,其特征在于,包括:
第一处理模块,用于并行运行多个策略执行节点;
第二处理模块,用于策略生成节点在接收到控制节点的开始指令后,发送初始策略队列至对应的所述策略执行节点;
第三处理模块,用于所述策略执行节点执行所述初始策略队列,生成当前结果反馈,将所述当前结果反馈发送给所述策略生成节点;
第四处理模块,用于所述策略生成节点根据所述当前结果反馈对强化学习智能体进行训练,并由所述强化学习智能体生成新的策略;
第五处理模块,用于所述策略生成节点将所述新的策略发送给所述策略执行节点;
第六处理模块,用于所述策略执行节点根据所述新的策略生成新的结果反馈,将所述新的结果反馈发送给所述策略生成节点;
第七处理模块,用于将所述新的结果反馈作为当前结果反馈,输入至第四处理模块中。
8.根据权利要求7所述的软件漏洞智能挖掘装置,其特征在于,所述第三处理模块,具体用于:
所述策略执行节点根据所述初始策略队列中的每一个策略生成对应的待测试的测试例;
所述策略执行节点根据执行环境中的被测试程序对所述测试例进行测试,获取当前结果反馈。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述软件漏洞智能挖掘方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述软件漏洞智能挖掘方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111290592.1A CN114077742B (zh) | 2021-11-02 | 2021-11-02 | 软件漏洞智能挖掘方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111290592.1A CN114077742B (zh) | 2021-11-02 | 2021-11-02 | 软件漏洞智能挖掘方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114077742A true CN114077742A (zh) | 2022-02-22 |
CN114077742B CN114077742B (zh) | 2022-12-02 |
Family
ID=80283808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111290592.1A Active CN114077742B (zh) | 2021-11-02 | 2021-11-02 | 软件漏洞智能挖掘方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114077742B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114661621A (zh) * | 2022-05-13 | 2022-06-24 | 上海交通大学宁波人工智能研究院 | 一种基于强化学习的工控协议模糊测试系统和方法 |
CN115374445A (zh) * | 2022-03-31 | 2022-11-22 | 国家计算机网络与信息安全管理中心 | 基于跨网场景的终端系统安全评估方法、装置及系统 |
CN116069672A (zh) * | 2023-03-23 | 2023-05-05 | 中南大学 | 操作系统内核定向模糊测试的种子变异方法及测试方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7284274B1 (en) * | 2001-01-18 | 2007-10-16 | Cigital, Inc. | System and method for identifying and eliminating vulnerabilities in computer software applications |
CN103678093A (zh) * | 2012-08-30 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 一种自动化测试框架及测试方法 |
CN106155901A (zh) * | 2015-04-21 | 2016-11-23 | 中国科学院信息工程研究所 | 黑盒与白盒相结合的执行反馈驱动的并行模糊测试方法 |
US20190179732A1 (en) * | 2017-12-08 | 2019-06-13 | Cognizant Technology Solutions India Pvt. Ltd. | System and method for automatically generating software testing scripts from test cases |
CN110147310A (zh) * | 2019-04-02 | 2019-08-20 | 中国科学院信息工程研究所 | 一种基于变异策略的并行模糊测试调度方法及装置 |
CN110175120A (zh) * | 2019-05-20 | 2019-08-27 | 北京理工大学 | 一种基于强化学习的模糊测试用例自适应变异方法和装置 |
CN111352826A (zh) * | 2018-12-24 | 2020-06-30 | 上海云扩信息科技有限公司 | 一种界面测试用例自动生成方法及工具 |
US20210034753A1 (en) * | 2019-07-29 | 2021-02-04 | Ventech Solutions, Inc. | Method and system for neural network based data analytics in software security vulnerability testing |
CN112905465A (zh) * | 2021-02-09 | 2021-06-04 | 中国科学院软件研究所 | 一种基于深度强化学习的机器学习模型黑盒公平性测试方法和系统 |
CN113326050A (zh) * | 2021-07-07 | 2021-08-31 | 浙江工商大学 | 基于神经网络与动态模糊测试结合的智能合约漏洞检测方法 |
US20210303696A1 (en) * | 2020-03-30 | 2021-09-30 | Software Ag | Systems and/or methods for static-dynamic security testing using a test configurator to identify vulnerabilities and automatically repair defects |
-
2021
- 2021-11-02 CN CN202111290592.1A patent/CN114077742B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7284274B1 (en) * | 2001-01-18 | 2007-10-16 | Cigital, Inc. | System and method for identifying and eliminating vulnerabilities in computer software applications |
CN103678093A (zh) * | 2012-08-30 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 一种自动化测试框架及测试方法 |
CN106155901A (zh) * | 2015-04-21 | 2016-11-23 | 中国科学院信息工程研究所 | 黑盒与白盒相结合的执行反馈驱动的并行模糊测试方法 |
US20190179732A1 (en) * | 2017-12-08 | 2019-06-13 | Cognizant Technology Solutions India Pvt. Ltd. | System and method for automatically generating software testing scripts from test cases |
CN111352826A (zh) * | 2018-12-24 | 2020-06-30 | 上海云扩信息科技有限公司 | 一种界面测试用例自动生成方法及工具 |
CN110147310A (zh) * | 2019-04-02 | 2019-08-20 | 中国科学院信息工程研究所 | 一种基于变异策略的并行模糊测试调度方法及装置 |
CN110175120A (zh) * | 2019-05-20 | 2019-08-27 | 北京理工大学 | 一种基于强化学习的模糊测试用例自适应变异方法和装置 |
US20210034753A1 (en) * | 2019-07-29 | 2021-02-04 | Ventech Solutions, Inc. | Method and system for neural network based data analytics in software security vulnerability testing |
US20210303696A1 (en) * | 2020-03-30 | 2021-09-30 | Software Ag | Systems and/or methods for static-dynamic security testing using a test configurator to identify vulnerabilities and automatically repair defects |
CN112905465A (zh) * | 2021-02-09 | 2021-06-04 | 中国科学院软件研究所 | 一种基于深度强化学习的机器学习模型黑盒公平性测试方法和系统 |
CN113326050A (zh) * | 2021-07-07 | 2021-08-31 | 浙江工商大学 | 基于神经网络与动态模糊测试结合的智能合约漏洞检测方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115374445A (zh) * | 2022-03-31 | 2022-11-22 | 国家计算机网络与信息安全管理中心 | 基于跨网场景的终端系统安全评估方法、装置及系统 |
CN115374445B (zh) * | 2022-03-31 | 2024-03-08 | 国家计算机网络与信息安全管理中心 | 基于跨网场景的终端系统安全评估方法、装置及系统 |
CN114661621A (zh) * | 2022-05-13 | 2022-06-24 | 上海交通大学宁波人工智能研究院 | 一种基于强化学习的工控协议模糊测试系统和方法 |
CN114661621B (zh) * | 2022-05-13 | 2022-08-23 | 上海交通大学宁波人工智能研究院 | 一种基于强化学习的工控协议模糊测试系统和方法 |
CN116069672A (zh) * | 2023-03-23 | 2023-05-05 | 中南大学 | 操作系统内核定向模糊测试的种子变异方法及测试方法 |
CN116069672B (zh) * | 2023-03-23 | 2023-07-04 | 中南大学 | 操作系统内核定向模糊测试的种子变异方法及测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114077742B (zh) | 2022-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114077742B (zh) | 软件漏洞智能挖掘方法和装置 | |
US10684940B1 (en) | Microservice failure modeling and testing | |
Cheng et al. | Stitch: A language for architecture-based self-adaptation | |
Salehie et al. | Self-adaptive software: Landscape and research challenges | |
US7194445B2 (en) | Adaptive problem determination and recovery in a computer system | |
Weyns et al. | ActivFORMS: A formally founded model-based approach to engineer self-adaptive systems | |
Abuseta et al. | Design patterns for self adaptive systems engineering | |
Drozd et al. | Fuzzergym: A competitive framework for fuzzing and learning | |
Moghadam et al. | Machine learning to guide performance testing: An autonomous test framework | |
Alshmrany et al. | FuSeBMC: An energy-efficient test generator for finding security vulnerabilities in C programs | |
Fanjiang et al. | Search based approach to forecasting QoS attributes of web services using genetic programming | |
Trivedi et al. | A fully automated deep packet inspection verification system with machine learning | |
CN113886225A (zh) | 一种面向未知工控协议的模糊测试系统和方法 | |
EP4009586A1 (en) | A system and method for automatically neutralizing malware | |
Naqvi et al. | On evaluating self-adaptive and self-healing systems using chaos engineering | |
Sutar et al. | Regression test cases selection using natural language processing | |
Scheerer et al. | Design-time validation of runtime reconfiguration strategies: An environmental-driven approach | |
Wang et al. | Optimal control based regression test selection for service-oriented workflow applications | |
Alebrahim et al. | A structured approach for eliciting, modeling, and using quality-related domain knowledge | |
Feng et al. | Predicting intrusion goal using dynamic Bayesian network with transfer probability estimation | |
Andrzejak et al. | On adaptability in grid systems | |
Di Nardo et al. | Evolutionary robustness testing of data processing systems using models and data mutation (T) | |
Koh-Dzul et al. | A smart diagnostic model for an autonomic service bus based on a probabilistic reasoning approach | |
Vodyaho et al. | Cognitive systems for monitoring: architectural view | |
Ganguly et al. | An environment aware learning-based self-adaptation technique with reusable components |
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 |