CN116541268A - 上下文感知依赖引导的内核模糊测试用例变异方法与系统 - Google Patents
上下文感知依赖引导的内核模糊测试用例变异方法与系统 Download PDFInfo
- Publication number
- CN116541268A CN116541268A CN202310227211.8A CN202310227211A CN116541268A CN 116541268 A CN116541268 A CN 116541268A CN 202310227211 A CN202310227211 A CN 202310227211A CN 116541268 A CN116541268 A CN 116541268A
- Authority
- CN
- China
- Prior art keywords
- mutation
- test case
- test
- context
- language model
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 182
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000035772 mutation Effects 0.000 claims abstract description 183
- 238000012549 training Methods 0.000 claims abstract description 39
- 238000013528 artificial neural network Methods 0.000 claims abstract description 9
- 238000009826 distribution Methods 0.000 claims description 26
- 230000001419 dependent effect Effects 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 9
- 230000002457 bidirectional effect Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 7
- 238000013480 data collection Methods 0.000 claims description 5
- 238000010606 normalization Methods 0.000 claims description 5
- 230000001960 triggered effect Effects 0.000 claims description 4
- 230000001502 supplementing effect Effects 0.000 claims description 3
- 238000003780 insertion Methods 0.000 claims description 2
- 230000037431 insertion Effects 0.000 claims description 2
- 230000000737 periodic effect Effects 0.000 claims description 2
- 238000005065 mining Methods 0.000 abstract description 6
- 230000008447 perception Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 3
- 208000001613 Gambling Diseases 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 206010000117 Abnormal behaviour Diseases 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种上下文感知依赖引导的内核模糊测试用例变异方法和系统,属于软件安全与操作系统内核测试技术领域。方法包括:动态收集并最小化高潜力的系统调用序列集合作为训练集;基于神经网络语言模型对训练集中蕴含的依赖关系进行建模,并在变异阶段利用语言模型实现上下文感知依赖引导的变异,帮助选择适应当前上下文的系统调用、建立起有效的状态路径;交替切换探索、利用两个阶段,通过上界置信算法动态调度变异操作以兼顾测试的多样性和效率,避免陷入局部最优;重复以上步骤直至模糊测试结束。本发明能够提升测试用例质量,实现对内核深层代码逻辑的触发,实现覆盖率和漏洞挖掘效率的优化。
Description
技术领域
本发明涉及软件安全与操作系统内核测试技术领域,尤其涉及一种上下文感知依赖引导的内核模糊测试用例变异方法与系统。
背景技术
操作系统内核主管、控制并协调着计算机的软硬件资源,是当今计算机系统的核心与基石。内核的安全对系统整体的稳定性有着举足轻重的地位。然而,由于内核庞大的代码量和复杂的功能结构,开发人员不可避免地向其中引入错误或漏洞;并且由于操作系统的广泛应用和重要地位,这些漏洞可能带来严重的威胁并损失。挖掘操作系统中隐藏的错误和漏洞对提高系统的整体安全具有重要意义。自动化的模糊测试已经成为最流行、最有效的软件测试技术之一,被广泛用于各个主流软件的测试,其中也包括操作系统内核的测试。
为了提升测试效率,以syzkaller为代表的诸多内核模糊测试工具采用内核虚拟化执行、以系统调用序列为输入的方法实现内核代码的测试。由于内核的状态化特性,不同系统调用之间存在显式和隐式的依赖。某些漏洞或者内核代码路径的触发需要特定的系统调用组合。因此,如何把握系统调用间的依赖关系、根据上下文选择合适的系统调用建立状态路径,将极大地影响对内核深层代码路径探索以及整体的测试效率。为了实现这一目标,syzkaller使用静态的概率邻接矩阵表示点对点、上下文无关的系统调用间依赖,包括1)根据系统调用间的公共类型判断彼此依赖关系,2)基于现有种子集判断系统调用间的依赖关系。综合两项数据得到最终的概率分布,并基于这一概率分布选择系统调用。另一个模糊测试工具HEALER使用动态的关系表(0-1邻接矩阵)表示点对点、上下文无关的系统调用间依赖。它的核心在于1)动态执行得到最小化的测试用例,2)判定序列的最后两项系统调用存在依赖关系,3)利用关系表指导测试用例变异。
尽管上述模糊测试工具能够自动化推断系统调用之间依赖关系并检测内核的潜在漏洞,它们采用的依赖建模方法并不完备,存在上下文感知能力不足、测试用例质量较低、触发深层代码困难等问题。具体而言,现有模糊测试工具都基于上下文无关、点对点的方法构建依赖关系,在变异阶段难以利用上下文无关的依赖选出适合变异上下文的系统调用,使得测试用例中的状态路径难以维持,降低测试用例质量。此外,现有模糊测试工具利用运行时的动态反馈时的粒度较粗,没有充分把握整个序列里蕴含的依赖关系。因此,目前尚缺乏一种上下文感知、有助于提高测试质量和效率的依赖建模方法。
发明内容
针对上述技术问题,本发明提供了一种上下文感知依赖引导的内核模糊测试用例变异方法与系统,首先在测试过程中动态地收集成功触发新的代码路径的系统调用序列,并通过最小化算法排除序列中的无效系统调用得到最小化序列;将收集的最小化序列集合作为训练集,训练神经网络语言模型学习上下文感知的依赖关系用于后续变异;接下来,为了兼顾探索的多样性和测试的高效性,本发明基于多臂赌博机模型周期性地切换探索和利用阶段,在利用阶段基于上界置信算法从多个变异操作中选出最佳的变异操作并执行变异。基于语言模型,本发明能够执行上下文感知依赖引导的变异,有更大的概率建立有效的状态路径,从而提升测试用例的质量,提升工具挖掘内核漏洞的效率。
具体技术方案如下:
第一方面,本发明提供了一种上下文感知依赖引导的内核模糊测试用例变异方法,包括以下步骤:
(1)种子测试用例选择环节:从语料集中随机选择测试用例;
(2)变异操作选择环节:周期性地将变异操作选择划分为探索和利用两个阶段;当处于探索阶段时,从多个变异操作中随机选择某一变异操作并记录所选变异操作执行后的表现;当进入利用阶段时,从多个变异操作中选出最佳的变异操作,随后持续使用最佳变异操作;
(3)测试用例变异环节:根据选择的变异操作对选定的种子测试用例进行变异,若选择的变异操作为上下文感知依赖引导的变异,则将测试用例中变异点前后的子序列作为上下文输入到语言模型,由语言模型输出最佳的系统调用并插入到变异点;
(4)测试用例执行环节:在内核执行变异后的测试用例,并对测试用例的执行结果进行分析,若测试用例触发了新的代码路径,则动态执行逐次移除测试用例中的无效系统调用,保留的测试用例存入语料集;若处于探索阶段,还需记录测试用例所对应的变异操作的表现;
(5)周期性地利用语料集对语言模型进行训练;
(6)操作系统内核模糊测试工具重复执行步骤(2)-(5),直至模糊测试结束。
内核模糊测试工具通常会依据系统调用间的依赖关系将多个系统调用组合作为一个序列,填充参数后交由内核执行以期触发内核内部的异常行为。在本发明中,触发了新的代码覆盖的测试用例被最小化,最小化序列排除了无关的系统调用,保留了清晰的依赖关系,可以作为高质量的训练集帮助构建上下文感知的系统调用间依赖关系并提高测试用例的质量。这一过程中,模糊测试也要兼顾测试的多样性和效率。在模糊测试过程中,越多的测试用例建立起有效的状态路径,响应触发的内核行为越复杂,测试用例触发新执行路径和漏洞的可能性和效率也就越高。
进一步的,所述的步骤(2)具体为:
在变异操作选择环节,划分出探索和利用两个阶段,两个阶段被赋予不同的时间预算,依次交替切换;当处于探索阶段,模糊测试工具赋予不同的变异操作相同的概率,从中随机地选择一个变异操作,同时在测试用例执行环节记录该变异操作的表现;
当进入利用阶段时,根据探索阶段记录的不同变异操作的表现情况,选择最佳的变异操作。
进一步的,步骤(3)包括:
(3-1)判断变异操作的类型,若变异操作为上下文感知依赖引导的变异,对于给定的种子测试用例,随机地从测试用例中选择一个位置作为变异点,将变异点前的子序列、变异点后的子序列作为变异的上下文,分别输入到语言模型;
(3-2)对于语言模型给出的两个概率分布,分别选取概率最高的若干系统调用作为临时变异候选,然后将两组临时变异候选合并进行归一化处理,得到最终的变异候选及其概率分布;
(3-3)按照概率分布随机地从最终变异候选中选取一个系统调用作为目标,根据上下文补充参数后插入到变异点,完成种子测试用例变异。
进一步的,步骤(4)包括:
(4-1)在内核执行变异后的测试用例,分析测试用例的执行情况,若测试用例触发了内核新的代码路径,则通过逐次移除系统调用、重新执行的方法排除无关系统调用,得到最小化后的测试用例;
(4-2)若处于探索阶段,则记录该测试用例对应的变异操作触发了一次新的代码路径;
(4-3)将最小化后的测试用例保存至语料库,作为语言模型的训练集。
进一步的,步骤(5)包括:
(5-1)起始阶段分析可用的系统调用函数,并建立对应的系统函数映射字典;
(5-2)语言模型采用深度神经网络,包含词嵌入层、双向门控循环单元、全连接层网络结构;首先将测试用例映射为词嵌入层的输入,以测试用例的词嵌入作为双向门控循环单元的输入以编码其依赖关系,最后经全连接层后输出下一个系统调用的概率分布;
(5-3)在语料集上周期地训练语言模型,学习上下文感知的系统调用间依赖,并根据模糊测试进度不断更新依赖关系。
第二方面,本发明提供了一种上下文感知依赖引导的内核模糊测试系统,包括:
变异操作调度模块,其用于周期性地将变异操作划分为探索和利用两个阶段;当处于探索阶段时,从多个变异操作中随机选择某一变异操作并记录所选变异操作执行后的表现;当进入利用阶段时,从多个变异操作中选出最佳的变异操作,随后持续使用最佳变异操作;;
测试用例变异模块,其用于根据选择的变异操作对选定的种子测试用例进行变异,若选择的变异操作为上下文感知依赖引导的变异,则将测试用例中变异点前后的子序列作为上下文输入到语言模型,由语言模型输出最佳的系统调用并插入到变异点;
模糊测试执行模块,将变异后的测试用例输入到内核中,并监测内核代码覆盖情况;
数据收集模块,根据代码覆盖情况判定是否需要对测试用例进行最小化,若触发新的代码覆盖,则将其最小化得到一组彼此相关的系统调用序列并保存到语料集。
语言模型训练模块,其用于根据语料集周期性地执行语言模型训练过程,学习系统调用间的依赖关系并运用于种子变异。
与现有技术相比,本发明的有益效果为:
1)本发明动态收集最小化的系统调用序列集合作为高质量的训练集,并利用神经网络模型实现上下文感知的系统调用依赖关系建模,实现系统调用关系的更精准、更高效的建模。
2)本发明应用上下文感知的系统调用依赖关系,通过神经网络语言模型引导模糊测试工具选择更适应上下文的系统调用,提升测试用例建立有效状态路径的概率,提升测试用例质量,实现对内核深层代码逻辑的触发,实现覆盖率和漏洞挖掘效率的优化。
3)本发明采用多臂赌博机模型对变异操作进行调度,通过划分探索和利用阶段兼顾了测试过程中探索的多样性和历史知识引导的高效性。
4)本发明所需的额外时间开销极低,可以保证模糊测试工具挖掘内核漏洞的高效性;拓展性强,可以方便地作为模块补充到现有模糊测试工具。
附图说明
图1为基于语言模型上下文感知依赖引导的内核模糊测试系统的整体架构示意图;
图2为语言模型训练的工作流程示意图;
图3为上下文感知依赖引导的序列变异的工作流程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细描述,需要指出的是,以下所述实施例旨在便于对本发明的理解,而对其不起任何限定作用。
为了实现基于语言模型上下文感知依赖引导的内核模糊测试用例变异方法,本发明通过动态收集最小化后的系统调用序列集合作为训练集,利用神经网络语言模型学习训练集中蕴含的依赖关系,实现上下文感知的依赖关系的建模,并应用于上下文感知依赖引导的变异,帮助选择适应当前上下文的系统调用,建立起有效的状态路径。同时,本发明将模糊测试过程划分探索和利用两个阶段,动态调度变异操作以兼顾测试的多样性和效率,在利用阶段基于上界置信算法选择最佳变异操作。最终实现通过基于语言模型的上下文感知依赖和变异操作调度提升测试用例生成质量,实现对内核深层代码逻辑的触发,并提高模糊测试挖掘内核漏洞的效率。
基本思路是:首先,随机选择来自语料集的种子序列,并根据所处阶段的不同按不同的调度策略选择变异操作。接下来,根据选定的变异操作对种子序列进行变异,若选择的变异操作为上下文感知依赖引导的变异操作,则分别提取种子序列的上下文输入到语言模型,根据模型的预测分布选取合适的系统调用并插入到变异点。然后,模糊测试分析内核执行测试用例的结果,若触发新的代码路径,则将测试用例最小化并保存为训练集,并重新开始下一轮测试过程。模糊测试工具会周期性地在训练集上训练模型,更新系统调用间依赖关系。
如图1所示,基于语言模型上下文感知依赖引导的内核模糊测试系统包括变异操作调度模块、测试用例变异模块、测试用例执行模块、数据收集模块、语言模型训练模块,其中:
测试用例变异模块,利用语言模型学到的上下文感知的依赖,选出适应变异点上下文的系统调用,填充参数后插入到种子中。
变异操作调度模块,在探索阶段记录不同变异操作的表现,在利用阶段使用探索阶段表现最佳的变异操作。
模糊测试执行模块,将变异后的测试用例输入到内核中,并监测内核代码覆盖情况。
数据收集模块,根据代码覆盖判定是否对测试用例进行最小化。若触发新的代码覆盖,则将其最小化得到一组彼此相关的系统调用序列并保存到训练集。
语言模型训练模块,基于收集到的系统调用序列集合,周期性地执行语言模型训练过程,学习系统调用间的依赖关系并运用于种子变异,从而提升测试用例质量,测试更多深层代码。
基于上述系统的上下文感知依赖引导的内核模糊测试用例变异方法,其工作主要流程包括以下步骤:
(1)从语料集中随机地选出一个系统调用序列作为种子。
(2)变异操作调度模块划分出探索和利用两个阶段,两个阶段交替切换,根据所处阶段的不同按不同的调度策略选择变异操作,包括:
(2-1)当处于探索阶段,赋予所有变异操作相同的权重,并随机选择一个变异操作,保证测试用例的多样性;所述的变异操作主要分为三种类型:上下文感知依赖引导的变异、静态关系依赖引导的变异和随机变异;记录各个变异操作的使用次数,并在执行环节记录各个变异操作触发新的代码覆盖的次数;
(2-2)当处于利用阶段,根据各个变异操作的使用次数以及触发新的代码覆盖的次数,采用上界置信算法选出最佳的变异操作并持续使用,提升测试效率。
(3)根据选出的变异操作,测试用例变异模块变异种子序列。当变异操作为上下文感知依赖引导的变异,结合上下文和语言模型进行变异,如图3所示,包括:
(3-1)随机从序列中选取一个位置作为变异点,提取变异点的前后子序列作为变异上下文,并将上文按正序、下文按逆序分别输入到语言模型,得到模型预测的概率分布;
例如,针对序列{c0,c1,c2,…,cm},随机选择ci作为变异点,将变异点ci的前子序列{c0,c1,c2,…,ci-1}和后子序列{ci+1,ci+2,ci+3,…,cm}分别作为变异上下文,将上文以正序、下文以逆序输入语言模型以适应双向门控循环单元。
需要说明的是,上下文序列输入的是同一个语言模型,上文和下文序列各自独立地由语言模型模块输出下一个系统调用的概率分布,
(3-2)对于模型给出的两个概率分布,分别选取概率最高的前几个系统调用作为临时变异候选,然后将两组临时变异候选合并进行归一化处理,得到最终的变异候选及其概率分布;本实施例选取概率分布最高的前10个系统调用作为临时变异候选,组合后得到最终的变异候选。
(3-3)按照概率分布随机地从最终变异候选中选取一个系统调用作为目标,根据上下文补充参数后插入到变异点,完成种子变异。
(4)测试用例执行模块将变异后的测试用例交给内核执行,记录执行结果,例如,记录相应的覆盖率信息。
(5)数据收集模块分析测试用例的执行结果以构建训练集,包括:
(5-1)分析测试用例的执行情况。若测试用例触发了内核新的代码路径,则从后向前逐次移除系统调用、重新执行缩减后的序列的方法排除无关系统调用,得到最小化后的测试用例;
(5-2)若处于探索阶段,则记录该测试用例对应的变异操作触发了一次新的代码路径;
(5-3)最小化的系统调用序列包含了比较清晰系统调用间的依赖关系,被保存到训练集中;
(6)周期性地使用语言模型训练模块在训练集上对系统调用间依赖关系进行建模、更新语言模型参数,并将模型用于上下文感知依赖引导的变异,以提升测试用例的生成质量,提升测试用例探索深层代码路径的概率。
如图2所示,语言模型训练的工作流程如下:
(6-1)起始阶段分析可用的系统调用函数,并建立对应的系统函数映射字典;
(6-2)语言模型采用深度神经网络,包含词嵌入层、双向门控循环单元、全连接层等网络结构;首先通过词嵌入层获取训练集中的系统调用序列{c0,c1,c2,…,cm}的词嵌入,以系统调用序列的词嵌入作为双向门控循环单元的输入以编码其依赖关系,最后经全连接层后输出cm+1的概率分布。
(6-3)在训练集上周期地训练语言模型学习上下文感知的系统调用间依赖,并根据模糊测试进度不断更新依赖关系;
(7)重复步骤(2)-(6),直至模糊检测结束。
对于系统实施例而言,由于其基本对应于上述方法实施例,所以相关之处参见方法实施例的部分说明即可,例如:
所述的变异操作调度模块,还可以包括:
阶段划分模块,其用于在变异操作选择环节,划分出探索和利用两个阶段,两个阶段被赋予不同的时间预算,依次交替切换;
探索阶段执行模块,其用于在探索阶段由模糊测试工具赋予不同的变异操作相同的概率,从中随机地选择一个变异操作,并在该变异操作执行后记录其表现;
利用阶段执行模块,其用于根据探索阶段记录的不同变异操作的表现情况,选择最佳的变异操作。
所述的测试用例变异模块,还可以包括:
变异操作的类型判断模块,其用于判断变异操作的类型,若变异操作为上下文感知依赖引导的变异,对于给定的种子测试用例,随机地从测试用例中选择一个位置作为变异点,将变异点前的子序列、变异点后的子序列作为变异的上下文,分别输入到语言模型;否则,直接在变异点执行变异操作;
语言模型模块,其用于根据输入的上下文序列,输出两个概率分布,分别选取概率最高的若干系统调用作为临时变异候选,然后将两组临时变异候选合并进行归一化处理,得到最终的变异候选及其概率分布;
变异插入模块,其用于按照概率分布随机地从最终变异候选中选取一个系统调用作为目标,根据上下文补充参数后插入到变异点,完成种子测试用例变异。
所述的语言模型训练模块,还可以包括:
映射字典模块,其用于在起始阶段分析可用的系统调用函数,并建立对应的系统函数映射字典;
周期性训练模块,其用于在语料集上周期地训练语言模型,学习上下文感知的系统调用间依赖,并根据模糊测试进度不断更新依赖关系。
所述的语言模型采用深度神经网络,包含词嵌入层、双向门控循环单元、全连接层网络结构;首先将测试用例映射为词嵌入层的输入,以测试用例的词嵌入作为双向门控循环单元的输入以编码其依赖关系,最后经全连接层后输出下一个系统调用的概率分布。
其余模块的实现方法此处不再赘述。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明的系统的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。系统实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。
以上所述的实施例对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的具体实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种上下文感知依赖引导的内核模糊测试用例变异方法,其特征在于,包括以下步骤:
(1)种子测试用例选择环节:从语料集中随机选择测试用例;
(2)变异操作选择环节:周期性地将变异操作选择划分为探索和利用两个阶段;当处于探索阶段时,从多个变异操作中随机选择某一变异操作并记录所选变异操作执行后的表现;当进入利用阶段时,从多个变异操作中选出最佳的变异操作,随后持续使用最佳变异操作;
(3)测试用例变异环节:根据选择的变异操作对选定的种子测试用例进行变异,若选择的变异操作为上下文感知依赖引导的变异,则将测试用例中变异点前后的子序列作为上下文输入到语言模型,由语言模型输出最佳的系统调用并插入到变异点;
(4)测试用例执行环节:在内核执行变异后的测试用例,并对测试用例的执行结果进行分析,若测试用例触发了新的代码路径,则动态执行逐次移除测试用例中的无效系统调用,保留的测试用例存入语料集;若处于探索阶段,还需记录测试用例所对应的变异操作的表现;
(5)周期性地利用语料集对语言模型进行训练;
(6)操作系统内核模糊测试工具重复执行步骤(2)-(5),直至模糊测试结束。
2.根据权利要求1所述的上下文感知依赖引导的内核模糊测试用例变异方法,其特征在于,所述的步骤(2)具体为:
在变异操作选择环节,划分出探索和利用两个阶段,两个阶段被赋予不同的时间预算,依次交替切换;当处于探索阶段,模糊测试工具赋予不同的变异操作相同的概率,从中随机地选择一个变异操作,同时在测试用例执行环节记录该变异操作的表现;
当进入利用阶段时,根据探索阶段记录的不同变异操作的表现情况,选择最佳的变异操作。
3.根据权利要求1所述的上下文感知依赖引导的内核模糊测试用例变异方法,其特征在于,步骤(3)包括:
(3-1)判断变异操作的类型,若变异操作为上下文感知依赖引导的变异,对于给定的种子测试用例,随机地从测试用例中选择一个位置作为变异点,将变异点前的子序列、变异点后的子序列作为变异的上下文,分别输入到语言模型;
(3-2)对于语言模型给出的两个概率分布,分别选取概率最高的若干系统调用作为临时变异候选,然后将两组临时变异候选合并进行归一化处理,得到最终的变异候选及其概率分布;
(3-3)按照概率分布随机地从最终变异候选中选取一个系统调用作为目标,根据上下文补充参数后插入到变异点,完成种子测试用例变异。
4.根据权利要求1所述的上下文感知依赖引导的内核模糊测试用例变异方法,其特征在于,步骤(4)包括:
(4-1)在内核执行变异后的测试用例,分析测试用例的执行情况,若测试用例触发了内核新的代码路径,则通过逐次移除系统调用、重新执行的方法排除无关系统调用,得到最小化后的测试用例;
(4-2)若处于探索阶段,则记录该测试用例对应的变异操作触发了一次新的代码路径;
(4-3)将最小化后的测试用例保存至语料库,作为语言模型的训练集。
5.根据权利要求1所述的上下文感知依赖引导的内核模糊测试用例变异方法,其特征在于,步骤(5)包括:
(5-1)起始阶段分析可用的系统调用函数,并建立对应的系统函数映射字典;
(5-2)语言模型采用深度神经网络,包含词嵌入层、双向门控循环单元、全连接层网络结构;首先将测试用例映射为词嵌入层的输入,以测试用例的词嵌入作为双向门控循环单元的输入以编码其依赖关系,最后经全连接层后输出下一个系统调用的概率分布;
(5-3)在语料集上周期地训练语言模型,学习上下文感知的系统调用间依赖,并根据模糊测试进度不断更新依赖关系。
6.一种上下文感知依赖引导的内核模糊测试系统,其特征在于,包括:
变异操作调度模块,其用于周期性地将变异操作划分为探索和利用两个阶段;当处于探索阶段时,从多个变异操作中随机选择某一变异操作并记录所选变异操作执行后的表现;当进入利用阶段时,从多个变异操作中选出最佳的变异操作,随后持续使用最佳变异操作;;
测试用例变异模块,其用于根据选择的变异操作对选定的种子测试用例进行变异,若选择的变异操作为上下文感知依赖引导的变异,则将测试用例中变异点前后的子序列作为上下文输入到语言模型,由语言模型输出最佳的系统调用并插入到变异点;
模糊测试执行模块,将变异后的测试用例输入到内核中,并监测内核代码覆盖情况;
数据收集模块,根据代码覆盖情况判定是否需要对测试用例进行最小化,若触发新的代码覆盖,则将其最小化得到一组彼此相关的系统调用序列并保存到语料集。
语言模型训练模块,其用于根据语料集周期性地执行语言模型训练过程,学习系统调用间的依赖关系并运用于种子变异。
7.根据权利要求6所述的一种上下文感知依赖引导的内核模糊测试系统,其特征在于,所述的变异操作调度模块,包括:
阶段划分模块,其用于在变异操作选择环节,划分出探索和利用两个阶段,两个阶段被赋予不同的时间预算,依次交替切换;
探索阶段执行模块,其用于在探索阶段由模糊测试工具赋予不同的变异操作相同的概率,从中随机地选择一个变异操作,并在该变异操作执行后记录其表现;
利用阶段执行模块,其用于根据探索阶段记录的不同变异操作的表现情况,选择最佳的变异操作。
8.根据权利要求6所述的一种上下文感知依赖引导的内核模糊测试系统,其特征在于,所述的测试用例变异模块,包括:
变异操作的类型判断模块,其用于判断变异操作的类型,若变异操作为上下文感知依赖引导的变异,对于给定的种子测试用例,随机地从测试用例中选择一个位置作为变异点,将变异点前的子序列、变异点后的子序列作为变异的上下文,分别输入到语言模型;否则,直接在变异点执行变异操作;
语言模型模块,其用于根据输入的上下文序列,输出两个概率分布,分别选取概率最高的若干系统调用作为临时变异候选,然后将两组临时变异候选合并进行归一化处理,得到最终的变异候选及其概率分布;
变异插入模块,其用于按照概率分布随机地从最终变异候选中选取一个系统调用作为目标,根据上下文补充参数后插入到变异点,完成种子测试用例变异。
9.根据权利要求6所述的一种上下文感知依赖引导的内核模糊测试系统,其特征在于,所述的语言模型训练模块,包括:
映射字典模块,其用于在起始阶段分析可用的系统调用函数,并建立对应的系统函数映射字典;
周期性训练模块,其用于在语料集上周期地训练语言模型,学习上下文感知的系统调用间依赖,并根据模糊测试进度不断更新依赖关系。
10.根据权利要求6所述的一种上下文感知依赖引导的内核模糊测试系统,其特征在于,所述的语言模型采用深度神经网络,包含词嵌入层、双向门控循环单元、全连接层网络结构;首先将测试用例映射为词嵌入层的输入,以测试用例的词嵌入作为双向门控循环单元的输入以编码其依赖关系,最后经全连接层后输出下一个系统调用的概率分布。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310227211.8A CN116541268A (zh) | 2023-03-10 | 2023-03-10 | 上下文感知依赖引导的内核模糊测试用例变异方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310227211.8A CN116541268A (zh) | 2023-03-10 | 2023-03-10 | 上下文感知依赖引导的内核模糊测试用例变异方法与系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116541268A true CN116541268A (zh) | 2023-08-04 |
Family
ID=87447806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310227211.8A Pending CN116541268A (zh) | 2023-03-10 | 2023-03-10 | 上下文感知依赖引导的内核模糊测试用例变异方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116541268A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117370994A (zh) * | 2023-12-08 | 2024-01-09 | 浙江君同智能科技有限责任公司 | 基于模糊测试的大语言模型漏洞检测方法和装置 |
-
2023
- 2023-03-10 CN CN202310227211.8A patent/CN116541268A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117370994A (zh) * | 2023-12-08 | 2024-01-09 | 浙江君同智能科技有限责任公司 | 基于模糊测试的大语言模型漏洞检测方法和装置 |
CN117370994B (zh) * | 2023-12-08 | 2024-02-27 | 浙江君同智能科技有限责任公司 | 基于模糊测试的大语言模型漏洞检测方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11249887B2 (en) | Deep Q-network reinforcement learning for testing case selection and prioritization | |
Kattenbelt et al. | Abstraction refinement for probabilistic software | |
RU2005126695A (ru) | Система и способ для выбора режимов выполнения тестового примера для автоматизации повторно выполняемого тестирования | |
JPH02217926A (ja) | コード生成方法 | |
CN113626324B (zh) | 一种面向Move语言虚拟机的模糊测试方法 | |
KR20140033616A (ko) | 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법 | |
CN116541268A (zh) | 上下文感知依赖引导的内核模糊测试用例变异方法与系统 | |
US8037463B2 (en) | Computer program functional partitioning system for heterogeneous multi-processing systems | |
US7478376B2 (en) | Computer program code size partitioning method for multiple memory multi-processing systems | |
CN116627490A (zh) | 一种智能合约字节码相似性检测方法 | |
CN112434785B (zh) | 一种面向超级计算机的分布式并行深度神经网络性能评测方法 | |
CN106294343A (zh) | 数据聚类方法、模型融合方法以及装置 | |
GB2420886A (en) | Scoring mechanism for automatically generated test programs | |
US20030037319A1 (en) | Method and apparatus for partitioning and placement for a cycle-based simulation system | |
CN112181420B (zh) | 基于强化学习的编译器缺陷定位方法 | |
CN114995818A (zh) | 一种Simulink模型到C语言的优化参数自动配置方法 | |
Lin et al. | Improving the adaptability of multi-mode systems via program steering | |
CN111221731B (zh) | 一种快速获取到达程序指定点测试用例的方法 | |
Van Stralen et al. | Fast scenario-based design space exploration using feature selection | |
Li et al. | Using artificial neural network for predicting thread partitioning in speculative multithreading | |
KR20200090061A (ko) | 인공신경망 모델의 검증 방법 및 장치 | |
US9633160B2 (en) | Method of placement and routing in a reconfiguration of a dynamically reconfigurable processor | |
US20230376779A1 (en) | Method and apparatus for training machine reading comprehension model, and non-transitory computer-readable recording medium | |
US20230367699A1 (en) | Automated software testing | |
US20230306272A1 (en) | Mapping Workloads to Circuit Units in a Computing Device via Reinforcement Learning |
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 |