CN115309628A - 一种基于强化学习的智能模糊测试方法、装置及系统 - Google Patents
一种基于强化学习的智能模糊测试方法、装置及系统 Download PDFInfo
- Publication number
- CN115309628A CN115309628A CN202210682711.6A CN202210682711A CN115309628A CN 115309628 A CN115309628 A CN 115309628A CN 202210682711 A CN202210682711 A CN 202210682711A CN 115309628 A CN115309628 A CN 115309628A
- Authority
- CN
- China
- Prior art keywords
- variation
- seed
- seeds
- strategy
- reinforcement learning
- 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/3676—Test management for coverage analysis
-
- 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
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开一种基于强化学习的智能模糊测试方法、装置及系统,所述方法包括:收集到模糊测试中不同种子的程序运行状态后,使用聚类算法对各个程序运行状态进行分类,得到分类结果,并根据所述分类结果得到各个种子状态,所述种子状态为类别标签;收集模糊测试中的历史变异数据;根据所述历史变异数据和所述种子状态进行强化学习,得到变异策略,所述变异策略包括种子状态与变异动作的选择概率分布的映射关系。通过学习,在需要进行动作选择时,将种子输入到变异策略构建的策略网络中,输出变异动作选择策略,使用智能的变异动作对种子进行变异,能够提高能够覆盖更多的程序运行状态的种子的权重,充分探索测试用例,发现更多的安全漏洞。
Description
技术领域
本发明属于模糊测试技术领域,具体涉及一种基于强化学习的智能模糊测试方法、装置及系统。
背景技术
随着信息化的不断普及,程序软件已经应用到了社会的方方面面,随之而来的是人们对软件安全性提出了更高的要求,一旦软件存在安全漏洞,将造成巨大的经济损失甚至威胁到生命安全。举例来说,如今自动驾驶逐渐投入实际应用,一旦自动驾驶系统存在安全漏洞被黑客利用,造成车辆驾驶异常,在损坏车辆的同时,还有可能造成驾驶员和行人的生命安全。因此,提前发现软件安全漏洞,并即时进行修复,对当今社会有非常重要的意义。
软件模糊测试是挖掘软件中的安全漏洞的最有效的方法之一,被大量软件开发公司和网络安全技术公司所采用。软件模糊测试是一种通过向被测软件发送随机输入(即测试用例),尝试触发软件异常的软件测试技术。最早的模糊测试方案是纯黑盒模糊测试,只能根据被测程序输出结果和是否崩溃判断测试用例是否有效,此类方法对测试用例的质量提出了很高要求,往往需要人工分析被测程序来手动构造高质量的测试用例,耗费大量的人力。随着Google公司智能模糊测试工具AFL的出现,基于遗传算法的灰盒模糊测试方案开始被广泛使用,这类方法通过对被测程序代码进行程序静态插桩来监控测试用例触发的相应代码,对触发了新代码的测试用例进行保留和变异,尽可能触发更多被测程序代码,提高发现潜在安全漏洞的概率。与黑盒模糊测试不同,除了观测程序输出结果以及程序是否崩溃,这类灰盒模糊测试方案还可以通过代码插桩获取程序运行过程中的信息,即代码覆盖率。通过对测试用例代码覆盖率的评估,灰盒模糊测试会保留对测试用例的有效变异,自动化的逐步“培育”出有效的测试用例,这类方法不需要人工分析构造精巧的测试用例,大大减少了人力消耗。
然而,当前的模糊测试方法仍然面临着很大的效率瓶颈。模糊测试的本质是在程序的输入空间中搜索可以触发漏洞的PoC(proof-of-concept)样本。但是,任何程序的输入空间都是无穷的,而可以触发漏洞的PoC样本数量非常稀少。因而,模糊测试过程本质是一个无穷空间中的搜索问题,即如何在最短的时间内在无穷空间中发现更多的可以触发不同漏洞的PoC样本。当前学术界提出的方案,绝大部分都是采用经典优化算法(例如遗传算法、粒子群优化算法等等)进行搜索,同时利用人工提供的或者程序分析技术自动提取的程序相关知识,对搜索过程加以引导。这些方案存在两个重要的局限性:(1)搜索过程中存在大量启发式或者随机的决策,导致搜索方向错误和计算资源浪费;(2)对于二进制程序的支持较差,因为难以自动从二进制程序中提取有用信息对模糊测试进行有效引导。
发明内容
本发明针对现有技术中存在的上述不足,提供一种基于强化学习的智能模糊测试方法、装置及系统。
第一方面,本发明提供一种基于强化学习的智能模糊测试方法,包括:
收集到模糊测试中不同种子的程序运行状态后,使用聚类算法对各个程序运行状态进行分类,得到分类结果,并根据所述分类结果得到各个种子状态,所述种子状态为类别标签;
收集模糊测试中的历史变异数据;
根据所述历史变异数据和所述种子状态进行强化学习,得到变异策略,所述变异策略包括种子状态与变异动作的选择概率分布的映射关系。
在一些实施例中,收集模糊测试中不同种子的程序运行状态,包括:
使用插桩程序对待测程序进行程序静态插桩,获得待测程序执行种子时路径上的覆盖率信息,所述覆盖率信息包括边、基本块和函数;
在待测程序运行时,通过AFL的共享内存的方式,将不同粒度的程序运行状态反馈到模糊测试器中,模糊测试器收集不同粒度的程序运行状态,并通过结构化的方式进行保存;
接收模糊测试器发送的不同种子的程序运行状态。
在一些实施例中,采用遗传算法进行指导模糊测试的进行,在遗传算法中,模糊测试框架采取了多种变异操作对初始的种子进行变异,收集模糊测试中的历史变异数据,包括:
将变异新产生的种子添加到种子队列中;
记录模糊测试采取的变异动作,并取得对应的模糊测试反馈,收集模糊测试中的历史变异数据,所述历史变异数据包括种子变异前程序运行状态、种子变异后程序运行状态,以及变异动作。
在一些实施例中,所述种子变异后程序运行状态中的种子能够覆盖更多代码和覆盖更多关键边信息。
在一些实施例中,根据所述历史变异数据和所述种子状态进行强化学习,得到变异策略,包括:
根据历史变异数据,使用强化学习运用Q-Learning算法对各个种子状态对应的变异动作进行价值估计,得到各个种子状态对应的变异动作的价值;
将各个种子状态对应的价值输入玻尔兹曼探索策略进行采样,得到种子状态与变异动作的选择概率分布的映射关系。
在一些实施例中,根据所述历史变异数据和所述种子状态进行强化学习,得到变异策略之后,还包括:
根据各个变异策略构建策略网络;
根据各个种子状态对应的变异动作的价值进行种子选择;
根据选择出的种子的价值和选择出的种子的最近N次变异的回报值序列为选择出的种子分配能量;
将分配完能量的种子输入到策略网络中,输出本次变异过程中的变异动作选择策略。
在一些实施例中,根据各个种子状态对应的变异动作的价值进行种子选择,包括:
使用置信区间上界(UCB)算法从种子队列中进行种子选择,根据计算出的每个种子的分数,选择分数最大的种子进行模糊测试,种子j的分数计算公式如下:
其中,V(j)为种子j对应的变异动作的价值,t为对所有种子的测试总次数,Tj,t为种子j的测试次数,C为置信分数。
第二方面,本发明实施例中还提供一种基于强化学习的智能模糊测试装置,包括:
程序状态分析模块,收集到模糊测试中不同种子的程序运行状态后,使用聚类算法对各个程序运行状态进行分类,得到分类结果,并根据所述分类结果得到各个种子状态,所述种子状态为类别标签;
历史变异信息收集模块,收集模糊测试中的历史变异数据;
变异策略确定模块,用于根据所述历史变异数据和所述种子状态进行强化学习,得到变异策略,所述变异策略包括种子状态与变异动作的选择概率分布的映射关系。
在一些实施例中,基于强化学习的智能模糊测试装置还包括:
种子选择模块,用于根据各个种子状态对应的变异动作的价值进行种子选择;
能量分配模块,用于根据选择出的种子的价值和选择出的种子的最近N次变异的回报值序列为选择出的种子分配能量;
基于强化学习的智能模糊测试装置还用于根据各个变异策略构建策略网络;将分配完能量的种子输入到策略网络中,输出本次变异过程中的变异动作选择策略。
第三方面,本发明实施例中还提供一种基于强化学习的智能模糊测试系统,包括:第二方面提供的基于强化学习的智能模糊测试装置、模糊测试器、待测程序以及种子队列,
所述待测程序与模糊测试器进行交互,实现对所述待测程序的模糊测试;
种子队列中种子输入到基于强化学习的智能模糊测试装置中的种子选择模块中进行种子选择,选择出的种子输入到能量分配模块为选择出的种子分配能量,分配完能量的种子输入到策略网络和模糊测试器,策略网络输出该种子的变异动作选择策略,模糊测试器与其他模块进行交互完成变异,确定本次变异是否触发新的执行路径,若本次变异触发新的执行路径,则将变异后的种子加入种子队列。
本发明实施例中,模糊测试可以感知程序运行状态:通过对待测程序的运行情况做划分,缓解在强化学习时状态过多、学习反馈稀疏的问题,使得强化学习智能体能够进行有效学习。使用历史变异数据对未来的模糊测试过程进行指导,相比起原有的工作忽视了历史的变异信息,本发明收集了这些信息,并使用强化学习对模糊测试的多个阶段进行指导。通过学习,在需要进行动作选择时,将种子输入到变异策略构建的策略网络中,输出变异动作选择策略,使用智能的变异动作对种子进行变异,能够提高能够覆盖更多的程序运行状态的种子的权重,充分探索测试用例,发现更多的安全漏洞。
附图说明
图1为本发明实施例提供的一种基于强化学习的智能模糊测试系统的结构示意图;
图2为本发明实施例提供的一种基于强化学习的智能模糊测试方法的流程图;
图3为本发明实施例提供的智能体更新算法;
图4为本发明实施例提供的动态分析程序执行的流程;
图5为本发明实施例提供的一种基于强化学习的智能模糊测试装置的结构示意图;
图6为本发明实施例提供的一种基于强化学习的智能模糊测试装置的另一结构示意图。
具体实施方式
为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。
本发明提供一种基于强化学习的智能模糊测试方法、装置及系统。以下分别结合本发明提供的实施例的附图逐一进行详细说明。
针对模糊测试的局限性,我们提出可以用强化学习来帮助模糊测试的进行。在近些年以来,以强化学习为代表的机器学习算法在体育竞技、图像识别等领域得到了广泛应用,强化学习应用的代表工作AlphaGo在围棋上取得的成果说明目前强化学习模型已具备超越人类经验的潜力。强化学习在模糊测试任务上的潜力与优势巨大。
强化学习是一种对目标导向的学习与决策问题进行理解和自动化处理的计算方法,强调智能体通过与环境的直接互动来学习,而不需要可效仿的监督信号或对周围环境的完全建模,主要可以用于解决一些传统算法难以处理的优化问题。在强化学习算法中有两个可以交互的对象:智能体和环境。智能体是强化学习算法的本体,作为策略的学习者和决策者,智能体可以感知环境的状态,并根据反馈的收益学习执行动作获得最大化长期总收益。环境会接收智能体执行的一系列动作,对这一系列动作进行评价并转换为一种可量化的信号反馈给智能体。
除了智能体和环境外,强化学习系统有四个核心的要素:策略、收益信号、价值函数以及对环境建立的模型。策略定义了智能体在特定时间的行为方式,是一种环境状态到动作的映射。策略可以决定智能体的行为,因此策略是强化学习智能体的核心。收益信号定义了强化学习问题中的目标。智能体与环境的每一步交互中,环境会向智能体发送一个称为收益的标量数值,智能体的唯一目标是最大化长期的总收益。因此,收益信号是改变策略的主要基础。收益信号表明了短时间内什么是好的,价值函数表示了从长远的角度来看对智能体来说什么是好的。价值函数是一种状态到价值的映射,一个状态的价值是智能体从这个状态开始,对将来积累的总收益的期望。强化学习的最后一个要素是对环境建立的模型,是智能体对外部环境的建模。智能体使用环境模型进行规划,先考虑可能发生的各种情形从而预先决定采取何种策略。对于强化学习智能体来说,模型不是必须的,当环境非常复杂难以建模时,可以使用无模型的算法来训练智能体。
第一方面,如图1所示,本发明实施例中提供一种基于强化学习的智能模糊测试系统,包括:基于强化学习的智能模糊测试装置1、模糊测试器2、待测程序3以及种子队列4,
所述待测程序3与模糊测试器2进行交互,实现对所述待测程序3的模糊测试;
种子队列4中种子输入到基于强化学习的智能模糊测试装置1中的种子选择模块中进行种子选择,选择出的种子输入到能量分配模块为选择出的种子分配能量,分配完能量的种子输入到策略网络和模糊测试器2,策略网络输出该种子的变异动作选择策略,模糊测试器2与其他模块进行交互完成种子变异,确定本次变异是否触发新的执行路径,若本次变异触发新的执行路径,则将变异后的种子加入种子队列;
基于强化学习的智能模糊测试装置1包括历史变异信息收集模块、程序状态分析模块、变异策略确定模块、种子选择模块、能量分配模块。
本发明实施例中智能体包括变异策略确定模块、种子选择模块、能量分配模块以及智能体构建的策略网络,环境包括变异策略确定模块、种子选择模块、能量分配模块等模块。本发明实施例中的种子即为测试用例。
第二方面,如图2所示,本发明提供一种基于强化学习的智能模糊测试方法,包括:
步骤S101,收集到模糊测试中不同种子的程序运行状态后,使用聚类算法对各个程序运行状态进行分类,得到分类结果,并根据所述分类结果得到各个种子状态,所述种子状态为类别标签。
步骤S102,收集模糊测试中的历史变异数据。
步骤S103,根据所述历史变异数据和所述种子状态进行强化学习,得到变异策略,所述变异策略包括种子状态与变异动作的选择概率分布的映射关系。
上述步骤中,从程序运行状态划分出发,考虑种子所在程序状态和历史代码覆盖信息,构建强化学习框架的状态表示与学习环境。对各个程序运行状态进行划分,即对多个种子进行划分,将多个种子进行分类,类别标签即为种子状态。在模糊测试中,模糊测试框架采取了多种变异操作对初始的种子进行变异,记录采取的历史变异数据,并取得对应的模糊测试反馈。用于探索适合于模糊测试的智能体,通过根据所述历史变异数据和所述种子状态对变异动作进行建模,对不同程序运行状态间的转移关系使用强化学习进行学习与训练,得到变异策略,即得到种子状态与变异动作的选择概率分布的映射关系,据此为模糊测试的多个主要阶段进行智能决策。
也就是说,不同种子状态对应的不同变异动作的选择概率分布是不同的,有的变异动作的选择概率分布较高,常规技术中所有的变异动作的选择概率分布都是均等的。
需要说明的是,程序运行状态进行分类,得到分类结果还需要向历史变异信息收集模块反馈。
本发明实施例中,模糊测试可以感知程序运行状态:通过对待测程序的运行情况做划分,缓解在强化学习时状态过多、学习反馈稀疏的问题,使得强化学习智能体能够进行有效学习。使用历史变异数据对未来的模糊测试过程进行指导,相比起原有的工作忽视了历史的变异信息,本发明收集了这些信息,并使用强化学习对模糊测试的多个阶段进行指导。通过学习,在需要进行动作选择时,将种子输入到变异策略构建的策略网络中,确定变异动作选择策略,使用智能的变异动作对种子进行变异,能够提高能够覆盖更多的程序运行状态的种子的权重,充分探索测试用例,发现更多的安全漏洞。
在一些实施例中,如图3所示,根据所述历史变异数据和所述种子状态进行强化学习,得到变异策略(即步骤S103)之后,还包括:
根据各个变异策略构建策略网络;
根据各个种子状态对应的变异动作的价值进行种子选择;
根据选择出的种子的价值和选择出的种子的最近N次变异的回报值序列为选择出的种子分配能量;
将分配完能量的种子输入到策略网络中,输出本次变异过程中的变异动作选择策略。
构建策略网络时,根据Q-Learning算法学习得到的策略网络,得到不同变异动作的价值,将选择概率分布与玻尔兹曼探索策略相结合,将价值输入玻尔兹曼探索策略进行采样,得到各个变异过程中变异动作的选择概率分布,即得到各个变异策略。如图3所示,根据各个变异策略构建策略网络,环境向策略网络输入选择出的种子,策略网络反馈选择出的变异动作选择策略至环境。变异动作选择策略为选择出的种子选择哪几个变异动作选择概率分布高,即哪几个变异动作价值高。对于新的变异结果更新历史变异数据,对策略网络进行优化。
如图1所示,种子队列4中种子输入到基于强化学习的智能模糊测试装置1中的种子选择模块中进行种子选择,选择出的种子输入到能量分配模块为选择出的种子分配能量,分配完能量的种子输入到策略网络和模糊测试器2,策略网络输出该种子的变异动作选择策略,模糊测试器2通过与其他模块交互进行种子变异,并确定本次变异是否触发新的执行路径,若本次变异触发新的执行路径,则将变异后的种子加入种子队列;若本次变异未触发新的执行路径,将变异后的种子丢弃。若本次变异触发新的执行路径,则将本次变异动作和触发的新的执行路径同步到变异策略确定模块,变异策略确定模块将本次变异动作和触发的新的执行路径同步到历史变异信息收集模块。
需要说明的是,为选择出的种子分配能量,即确定选择出的种子能变异多少次。
本发明实施例中,利用了历史变异数据,使用强化学习运用Q-Learning算法对种子的变异动作进行价值估计,改进种子选择、种子能量分配和种子变异多个环节的策略。通过智能体的更优策略,帮助模糊测试器能够提高代码覆盖率,提高安全漏洞的发现几率。
在一些实施例中,根据各个种子状态对应的变异动作的价值进行种子选择,包括:
使用置信区间上界(UCB)算法从种子队列中进行种子选择,根据计算出的每个种子的分数,选择分数最大的种子进行模糊测试,种子j的分数计算公式如下:
其中,V(j)为种子j对应的变异动作的价值,t为对所有种子的测试总次数,Tj,t为种子j的测试次数,C为置信分数。
需要说明的是,种子对应的变异动作的价值代表智能体对种子的整体价值估计,包含未来种子能获得的收益。最近N次对该种子的变异回报值序列代表了该种子短期的表现,由于算法收敛速度的限制,智能体对种子的价值估计并不一直准确,种子最近N次的回报值可作为种子短期收益的指标。
本发明实施例中,通过多个阶段协同进行学习,构建一个正向反馈循环:种子选择模块根据种子的价值估计选出合适的种子;能量分配模块根据选出的种子分配合适的能量;将选择出的种子输入到策略网络中,输出本次变异过程中的变异动作选择策略;历史变异信息收集模块更新上述智能体的策略网络,对策略网络进行进一步优化。
在一些实施例中,收集模糊测试中不同种子的程序运行状态(即步骤S101),包括:
使用插桩程序对待测程序进行程序静态插桩,获得待测程序执行种子时路径上的覆盖率信息,所述覆盖率信息包括边、基本块和函数;
在待测程序运行时,通过AFL的共享内存的方式,将不同粒度的程序运行状态反馈到模糊测试器中,模糊测试器收集不同粒度的程序运行状态,并通过结构化的方式进行保存;
接收模糊测试器发送的不同种子的程序运行状态。
如图4所示,程序静态插桩:此模块会在编译时使用修改过的编译器,添加边、基本块、函数等覆盖信息,在多个粒度(边、基本块、函数覆盖等信息)上获得的程序状态信息。首先使用插桩程序对被测试程序的分支跳转、函数调用等部分进行插桩,实现在执行被测试程序执行测试用例时获得路径上的边、基本块、函数等覆盖信息。在待测程序运行时,通过AFL的共享内存的方式,将不同粒度的程序运行状态反馈到模糊测试器中,模糊测试器收集大量种子的程序运行状态,并通过结构化的方式进行保存。
需要说明的是,程序运行状态是指在程序运行过程中执行的主要路径,经过了相似主要路径的程序将会有相似的程序运行状态。
收集得到不同种子的程序运行动态后,使用聚类算法对不同的程序运行状态进行分类,获得当前探索到的程序路径划分,相同分类的程序运行状态被认为是覆盖了相似的函数、基本块和边。如果两个路径被分类为了相同一类,说明覆盖了相似的关键路径。程序状态分析模块在经过分析后,将结果进行保存,提交给后续模块进行使用。
在一些实施例中,采用遗传算法进行指导模糊测试的进行,在遗传算法中,模糊测试框架采取了多种变异操作对初始的种子进行变异,收集模糊测试中的历史变异数据(即步骤S102),包括:
将变异新产生的种子添加到种子队列中;
记录模糊测试采取的变异动作,并取得对应的模糊测试反馈,收集模糊测试中的历史变异数据,所述历史变异数据包括种子变异前程序运行状态、种子变异后程序运行状态,以及变异动作。
在模糊测试中,采用遗传算法指导模糊测试的进行,并通过代码覆盖率信息给予模糊测试器反馈。如图1所示,如果变异产生了新的执行路径,则变异产生新种子,将新产生的种子添加到种子队列。
在一些实施例中,所述种子变异后程序运行状态中的种子能够覆盖更多代码和覆盖更多关键边信息。
需要说明的是,可以从历史变异数据中提取程序运行状态转移情况。
在一些实施例中,根据所述历史变异数据和所述种子状态进行强化学习,得到变异策略(即步骤S103),包括:
根据历史变异数据,使用强化学习运用Q-Learning算法对各个种子状态对应的变异动作进行价值估计,得到各个种子状态对应的变异动作的价值;
将各个种子状态对应的价值输入玻尔兹曼探索策略进行采样,得到种子状态与变异动作的选择概率分布的映射关系。
在上述步骤中,智能体首先对种子的历史变异数据进行学习。在获得了程序状态分析模块和历史变异信息收集模块的结果后,智能体根据种子变异前后的程序状态作为强化学习的状态表示,程序运行状态的变化的代表了强化学习的状态转移。Q-Learning算法对程序运行状态间的转移和变异动作选择的历史记录进行学习,对各个种子状态对应的变异动作进行价值估计,将各个种子状态对应的价值输入玻尔兹曼探索策略进行采样,更新策略网络。
本发明实施例中,通过收集历史变异数据,将数据提供给智能体进行学习,智能体在模糊测试的多个主要阶段进行智能决策,优化包括种子智能调度、种子智能能量分配、种子智能变异在内多个环节的决策。通过学习,智能体能够提高能够覆盖更多的程序状态的种子的权重,使用智能的变异动作选择策略对种子进行变异,充分探索测试用例,发现更多的安全漏洞。
第三方面,如图5所示,本发明实施例中还提供一种基于强化学习的智能模糊测试装置,包括:
程序状态分析模块11,收集到模糊测试中不同种子的程序运行状态后,使用聚类算法对各个程序运行状态进行分类,得到分类结果,并根据所述分类结果得到各个种子状态,所述种子状态为类别标签;
历史变异信息收集模块12,收集模糊测试中的历史变异数据;
变异策略确定模块13,用于根据所述历史变异数据和所述种子状态进行强化学习,得到变异策略,所述变异策略包括种子状态与变异动作的选择概率分布的映射关系。
也就是说,程序状态分析模块11,此模块根据程序插桩信息,得到待试程序的运行信息,在根据不同的程序执行结果,对程序运行状态做划分,对不同种子的运行结果做分类。
历史变异信息收集模块12,收集在模糊测试变异时选择的变异策略和变异后代码覆盖率信息。
变异策略确定模块13,利用程序状态分析结果和历史变异数据,对种子选择、种子能量分配和种子变异使用强化学习进行多维度的学习与决策。
在一些实施例中,程序状态分析模块11中,收集模糊测试中不同种子的程序运行状态,具体用于:
使用插桩程序对待测程序进行程序静态插桩,获得待测程序执行种子时路径上的覆盖率信息,所述覆盖率信息包括边、基本块和函数。
在一些实施例中,采用遗传算法进行指导模糊测试的进行,在遗传算法中,模糊测试框架采取了多种变异操作对初始的种子进行变异,历史变异信息收集模块12,具体用于:
在待测程序运行时,通过AFL的共享内存的方式,将不同粒度的程序运行状态反馈到模糊测试器中,将变异新产生的种子添加到种子队列中;
记录模糊测试采取的变异动作,并取得对应的模糊测试反馈,收集模糊测试中的历史变异数据,所述历史变异数据包括种子变异前程序运行状态、种子变异后程序运行状态,以及变异动作。
在一些实施例中,所述种子变异后程序运行状态中的种子能够覆盖更多代码和覆盖更多关键边信息。
在一些实施例中,变异策略确定模块13,具体用于:
根据历史变异数据,使用强化学习运用Q-Learning算法对各个种子状态对应的变异动作进行价值估计,得到各个种子状态对应的变异动作的价值;
将各个种子状态对应的价值输入玻尔兹曼探索策略进行采样,得到种子状态与变异动作的选择概率分布的映射关系。
在一些实施例中,如图6所示,基于强化学习的智能模糊测试装置还包括:
种子选择模块14,用于根据各个种子状态对应的变异动作的价值进行种子选择;
能量分配模块15,用于根据选择出的种子的价值和选择出的种子的最近N次变异的回报值序列为选择出的种子分配能量;
基于强化学习的智能模糊测试装置还用于根据各个变异策略构建策略网络;将选择出的种子输入到策略网络中,输出本次变异过程中的变异动作选择策略。
在一些实施例中,种子选择模块15,具体用于:
使用置信区间上界(UCB)算法从种子队列中进行种子选择,根据计算出的每个种子的分数,选择分数最大的种子进行模糊测试,种子j的分数计算公式如下:
其中,V(j)为种子j对应的变异动作的价值,t为对所有种子的测试总次数,Tj,t为种子j的测试次数,C为置信分数。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
Claims (10)
1.一种基于强化学习的智能模糊测试方法,其特征在于,包括:
收集到模糊测试中不同种子的程序运行状态后,使用聚类算法对各个程序运行状态进行分类,得到分类结果,并根据所述分类结果得到各个种子状态,所述种子状态为类别标签;
收集模糊测试中的历史变异数据;
根据所述历史变异数据和所述种子状态进行强化学习,得到变异策略,所述变异策略包括种子状态与变异动作的选择概率分布的映射关系。
2.根据权利要求1所述的基于强化学习的智能模糊测试方法,其特征在于,收集模糊测试中不同种子的程序运行状态,包括:
使用插桩程序对待测程序进行程序静态插桩,获得待测程序执行种子时路径上的覆盖率信息,所述覆盖率信息包括边、基本块和函数;
在待测程序运行时,通过AFL的共享内存的方式,将不同粒度的程序运行状态反馈到模糊测试器中,模糊测试器收集不同粒度的程序运行状态,并通过结构化的方式进行保存,程序运行状态是指在程序运行过程中执行的主要路径;
接收模糊测试器发送的不同种子的程序运行状态。
3.根据权利要求1所述的基于强化学习的智能模糊测试方法,其特征在于,采用遗传算法进行指导模糊测试的进行,在遗传算法中,模糊测试框架采取了多种变异操作对初始的种子进行变异,收集模糊测试中的历史变异数据,包括:
将变异新产生的种子添加到种子队列中;
记录模糊测试采取的变异动作,并取得对应的模糊测试反馈,收集模糊测试中的历史变异数据,所述历史变异数据包括种子变异前程序运行状态、种子变异后程序运行状态,以及变异动作。
4.根据权利要求1所述的基于强化学习的智能模糊测试方法,其特征在于,所述种子变异后程序运行状态中的种子能够覆盖更多代码和覆盖更多关键边信息。
5.根据权利要求1所述的基于强化学习的智能模糊测试方法,其特征在于,根据所述历史变异数据和所述种子状态进行强化学习,得到变异策略,包括:
根据历史变异数据,使用强化学习运用Q-Learning算法对各个种子状态对应的变异动作进行价值估计,得到各个种子状态对应的变异动作的价值;
将各个种子状态对应的价值输入玻尔兹曼探索策略进行采样,得到种子状态与变异动作的选择概率分布的映射关系。
6.根据权利要求5所述的基于强化学习的智能模糊测试方法,其特征在于,根据所述历史变异数据和所述种子状态进行强化学习,得到变异策略之后,还包括:
根据各个变异策略构建策略网络;
根据各个种子状态对应的变异动作的价值进行种子选择;
根据选择出的种子的价值和选择出的种子的最近N次变异的回报值序列为选择出的种子分配能量;
将分配完能量的种子输入到策略网络中,输出本次变异过程中的变异动作选择策略。
8.一种基于强化学习的智能模糊测试装置,其特征在于,包括:
程序状态分析模块,收集到模糊测试中不同种子的程序运行状态后,使用聚类算法对各个程序运行状态进行分类,得到分类结果,并根据所述分类结果得到各个种子状态,所述种子状态为类别标签;
历史变异信息收集模块,收集模糊测试中的历史变异数据;
变异策略确定模块,用于根据所述历史变异数据和所述种子状态进行强化学习,得到变异策略,所述变异策略包括种子状态与变异动作的选择概率分布的映射关系。
9.根据权利要求8所述的基于强化学习的智能模糊测试装置,其特征在于,还包括:
种子选择模块,用于根据各个种子状态对应的变异动作的价值进行种子选择;
能量分配模块,用于根据选择出的种子的价值和选择出的种子的最近N次变异的回报值序列为选择出的种子分配能量;
基于强化学习的智能模糊测试装置还用于根据各个变异策略构建策略网络;将分配完能量的种子输入到策略网络中,输出本次变异过程中的变异动作选择策略。
10.一种基于强化学习的智能模糊测试系统,其特征在于,包括:权利要求8-9所述的基于强化学习的智能模糊测试装置、模糊测试器、待测程序以及种子队列,
所述待测程序与模糊测试器进行交互,实现对所述待测程序的模糊测试;
种子队列中种子输入到基于强化学习的智能模糊测试装置中的种子选择模块中进行种子选择,选择出的种子输入到能量分配模块为选择出的种子分配能量,分配完能量的种子输入到策略网络和模糊测试器,策略网络输出该种子的变异动作选择策略,模糊测试器与其他模块进行交互完成变异,确定本次变异是否触发新的执行路径,若本次变异触发新的执行路径,则将变异后的种子加入种子队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210682711.6A CN115309628A (zh) | 2022-06-16 | 2022-06-16 | 一种基于强化学习的智能模糊测试方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210682711.6A CN115309628A (zh) | 2022-06-16 | 2022-06-16 | 一种基于强化学习的智能模糊测试方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115309628A true CN115309628A (zh) | 2022-11-08 |
Family
ID=83855269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210682711.6A Pending CN115309628A (zh) | 2022-06-16 | 2022-06-16 | 一种基于强化学习的智能模糊测试方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115309628A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115550230A (zh) * | 2022-11-24 | 2022-12-30 | 博智安全科技股份有限公司 | 一种基于遗传算法的未知工控协议模糊测试方法及系统 |
CN117235745A (zh) * | 2023-11-15 | 2023-12-15 | 北京东方森太科技发展有限公司 | 基于深度学习工控漏洞挖掘方法、系统、设备和存储介质 |
CN118132453A (zh) * | 2024-05-10 | 2024-06-04 | 中移(杭州)信息技术有限公司 | 固件测试方法及装置 |
-
2022
- 2022-06-16 CN CN202210682711.6A patent/CN115309628A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115550230A (zh) * | 2022-11-24 | 2022-12-30 | 博智安全科技股份有限公司 | 一种基于遗传算法的未知工控协议模糊测试方法及系统 |
CN117235745A (zh) * | 2023-11-15 | 2023-12-15 | 北京东方森太科技发展有限公司 | 基于深度学习工控漏洞挖掘方法、系统、设备和存储介质 |
CN117235745B (zh) * | 2023-11-15 | 2024-05-10 | 北京东方森太科技发展有限公司 | 基于深度学习工控漏洞挖掘方法、系统、设备和存储介质 |
CN118132453A (zh) * | 2024-05-10 | 2024-06-04 | 中移(杭州)信息技术有限公司 | 固件测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chen et al. | An evolutionary multitasking-based feature selection method for high-dimensional classification | |
Karimi-Mamaghan et al. | Machine learning at the service of meta-heuristics for solving combinatorial optimization problems: A state-of-the-art | |
CN115309628A (zh) | 一种基于强化学习的智能模糊测试方法、装置及系统 | |
Zheng et al. | A comparative study of class rebalancing methods for security bug report classification | |
Singh et al. | A review of studies on machine learning techniques | |
Ferber et al. | Neural network heuristics for classical planning: A study of hyperparameter space | |
CN110263979A (zh) | 基于强化学习模型预测样本标签的方法及装置 | |
Lin et al. | MOHA: A multi-mode hybrid automaton model for learning car-following behaviors | |
Zaman et al. | Feature selection for online streaming high-dimensional data: A state-of-the-art review | |
Hammami et al. | On-line self-adaptive framework for tailoring a neural-agent learning model addressing dynamic real-time scheduling problems | |
Talbi | Hybrid metaheuristics for multi-objective optimization | |
Hamdani et al. | Distributed genetic algorithm with bi-coded chromosomes and a new evaluation function for features selection | |
CN117710156A (zh) | 一种基于大数据的公路施工优化方法及系统 | |
Manjushree et al. | Performance analysis of the impact of technical skills on employability | |
CN115048370A (zh) | 用于大数据清洗的人工智能处理方法及大数据清洗系统 | |
Gil-Gala et al. | Ensembles of priority rules to solve one machine scheduling problem in real-time | |
Liefooghe et al. | Dominance, indicator and decomposition based search for multi-objective QAP: landscape analysis and automated algorithm selection | |
CN117437507A (zh) | 一种用于评价图像识别模型的偏见性评估方法 | |
CN113159441A (zh) | 银行业务项目实施情况的预测方法及装置 | |
CN116501444B (zh) | 智能网联汽车域控制器虚拟机异常云边协同监测和恢复系统及方法 | |
CN108829846A (zh) | 一种基于用户特征的业务推荐平台数据聚类优化系统及方法 | |
Li et al. | Improving performance of log anomaly detection with semantic and time features based on bilstm-attention | |
Xue et al. | Evolutionary computation for feature manipulation: Key challenges and future directions | |
CN112199287B (zh) | 基于强化混合专家模型的跨项目软件缺陷预测方法 | |
CN113407945A (zh) | 一种基于人机协同的规模化Fuzzing优化系统及方法 |
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 |