CN112559367B - 基于系统调用依赖图的内核模糊测试用例生成方法 - Google Patents
基于系统调用依赖图的内核模糊测试用例生成方法 Download PDFInfo
- Publication number
- CN112559367B CN112559367B CN202011538231.XA CN202011538231A CN112559367B CN 112559367 B CN112559367 B CN 112559367B CN 202011538231 A CN202011538231 A CN 202011538231A CN 112559367 B CN112559367 B CN 112559367B
- Authority
- CN
- China
- Prior art keywords
- system call
- kernel
- sys
- dependency graph
- graph
- 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.)
- Active
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/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种基于系统调用依赖图的内核模糊测试用例生成方法,首先根据系统调用接口初始化图的节点和边;其次将系统调用接口按照模板转换成系统调用描述,并对系统调用描述进行“参数‑返回值”依赖分析完善依赖图上各边的权重值;然后选定内核资源对象,通过对内核源码进行静态分析,识别每个系统调用对不同内核资源对象的使用情况,对于使用同一种内核资源对象的两个系统调用将在依赖图上赋予权重。最后用系统调用依赖图指导内核模糊测试用例的生成和变异,当需要在测试用例中增加、删除或替换某个系统调用时,根据依赖图上的权重挑选系统调用进行操作,从而产生更有可能合法的系统调用序列进行模糊测试,提高内核模糊测试工具的效率。
Description
技术领域
本发明涉及内核模糊测试技术,利用程序静态分析技术提供更多有效的信息指导内核模糊测试的生成和变异操作,属于软件工程领域。
背景技术
操作系统是管理计算机硬件和软件资源的系统软件,而内核是操作系统的核心,它对各种底层硬件进行抽象和封装,并暴露接口供用户程序使用,不同于用户态程序,内核运行在权限最高的内核态,一旦出现安全漏洞则直接影响整个操作系统和用户程序。模糊测试是一项自动化的软件测试技术,其核心思想是自动或半自动地生成随机数据输入到目标程序中,并监视程序异常,以发现可能的程序错误,是常见的漏洞挖掘技术之一。
针对操作系统内核的模糊测试技术,其输入一般是内核为上层提供的接口所组成的程序,即系统调用序列。一个好的系统调用序列,其系统调用之间是有依赖关系的,系统调用A的行为可能会影响到的系统调用B的行为,其表现在两点,一是系统调用的实现一般具有鲁棒性,会在核心逻辑前对参数和内核状态做检查,不合法则直接返回从而保护内核;二是系统调用会根据不同的参数和内核状态来选择具体执行的分支和逻辑。因此生成有效合法的系统调用序列能提高测试的代码覆盖率,更有可能发现潜在的缺陷与漏洞,进而提高模糊测试的效率。本发明将使用静态分析技术分析系统调用间潜在的依赖关系,并指导内核模糊测试生成和变异系统调用序列操作,提高内核模糊测试效率。
发明内容
目前的内核模糊测试方法,基于生成的模糊器由于没有考虑系统调用之间存在依赖关系,导致生成的系统调用序列鲜有成效,降低了内核模糊测试的效率。本发明为了解决上述技术问题,采用以下技术方案:
本发明提出的一种基于系统调用依赖图的内核模糊测试用例生成方法,包括以下步骤:
步骤1:定义一个有向带权图描述系统调用之间的依赖关系,输入系统调用接口声明,生成并初始化该系统调用依赖图,具体步骤如下:
步骤1.1:为每个系统调用生成一个图中结点,以系统调用名作为标识。
步骤1.2:两两节点之间添加两条有向边相互连接,构成完备图,其中用<sys_a,sys_b>表示从节点sys_a指向节点sys_b的边。
步骤1.3:初始化每条边的权重,值为0,其中有向边<sys_a,sys_b>的权重指示系统调用sys_b出现在系统调用sys_a后的可能性。
步骤2:将系统调用接口签名按照描述模板转换成系统调用描述,以实现更准确的系统调用间“参数-返回值”依赖分析,其中“参数-返回值”依赖分析的具体步骤如下:
步骤2.1:遍历所有系统调用描述,对具有相同参数类型的系统调用描述进行归类,若系统调用i,j中每有一个相同的参数类型,则调整依赖图中<sys_i,sys_j>和<sys_j,sys_i>的权重值;
步骤2.2:若系统调用i的返回类型是系统调用j的参数类型之一,则调整依赖图中<sys_i,sys_j>的权重值。
步骤3:输入选定的内核资源对象和内核源码,以各系统调用为入口函数,对内核源码进行静态分析,得到每个系统调用对内核资源对象的使用情况,再根据使用情况分析系统调用间的依赖关系,完善依赖图,具体步骤如下:
步骤3.1:通过内核源码构建每个系统调用的过程间控制流图。
步骤3.2:遍历每个系统调用的过程间控制流图,记录每个系统调用所使用的内核资源对象和使用点。
步骤3.3:对每个系统调用按照所使用的内核资源对象进行分类,若系统调用i,j访问同一种内核资源对象,则认为该两个系统调用有依赖关系,即调整依赖图中<sys_i,sys_j>和<sys_j,sys_i>的权重值。
步骤3.4:特别地,对于内核资源对象使用点在比较运算符的系统调用(假定为j),适当增加依赖图中相关联边<sys_x,sys_j>的权重,其中x是与j当前分析的比较运算符操作数有相同内核对象资源的系统调用。
步骤4:将系统调用依赖图作为内核模糊测试工具的生成和变异操作算子,指导内核模糊测试用例的生成与变异,具体步骤如下:
步骤4.1:当插入新的系统调用时,分析在依赖图上以插入点前一个系统调用为起点的有向边,根据这些边的权重选择插入的系统调用,权重越高,被选中的概率也越大。
步骤4.2:当删除某个系统调用时,分析测试用例中两两相邻的系统调用在依赖图上对应边的权重,权重越小,被删除的概率也越大。
步骤4.3:当替换某个系统调用时,分析在依赖图上以替换点前一个系统调用为起点的有向边,根据这些边的权重选择替换的系统调用,权重越高,被选中的概率也越大。
有益效果:本发明采用以上技术方案,与现有技术相比,具体以下有益效果:
1、根据测试任务配置选取不同的内核资源对象从而调节系统调用依赖图上的权重,本方法具有扩展性。
2、本方法在没有种子或者种子不丰富的情况下尽可能生成有效的测试用例,即系统调用序列。
3、方法通过对系统调用描述进行分析和对内核源码进行静态分析得到系统调用依赖图,通过依赖图指导模糊测试中的生成和变异操作,在不影响原有模糊测试执行时间的前提下尽可能提高模糊测试的效率。
附图说明
图1是基于系统调用依赖图的内核模糊测试用例生成方法的系统框架。
图2是按照描述模板将系统调用接口转换成系统调用描述的一个示例(上边是内核源码中系统调用接口的声明,下边是对应细化的系统调用描述)。
图3是根据系统调用描述的“参数-返回值”进行依赖分析,完善系统调用依赖图。
图4是定义内核资源对象并对内核源码做静态分析,完善系统调用依赖图。
具体实施方式
下面结合附图对本发明使用的基于系统调用依赖图的内核模糊测试用例生成方法具体实施例作更详细的描述。
根据附图1所示的基于系统调用依赖图的内核模糊测试用例生成方法的系统框架,本发明的具体实施方式为:
1:定义一个有向带权图描述系统调用之间的依赖关系,输入系统调用接口声明,生成并初始化该系统调用依赖图,具体步骤如下:
1.1:为每个系统调用生成一个图中结点,以系统调用名作为标识。
1.2:两两节点之间添加两条有向边相互连接,构成完备图,其中用<sys_a,sys_b>表示从节点sys_a指向节点sys_b的边。
1.3:初始化每条边的权重,值为0,其中有向边<sys_a,sys_b>的权重指示系统调用sys_b出现在系统调用sys_a后的可能性。
2:将系统调用接口签名按照描述模板转换成系统调用描述,如附图2所示,以实现更准确的系统调用间“参数-返回值”依赖分析,其中“参数-返回值”依赖分析的具体步骤如下:
2.1:遍历所有系统调用描述,对具有相同参数类型的系统调用描述进行归类,若系统调用i,j中每有一个相同的参数类型,则调整依赖图中<sys_i,sys_j>和<sys_j,sys_i>的权重值;
2.2:若系统调用i的返回类型是系统调用j的参数类型之一,则调整依赖图中<sys_i,sys_j>的权重值,如附图3所示。
3:输入选定的内核资源对象和内核源码,以各系统调用为入口函数,对内核源码进行静态分析,得到每个系统调用对内核资源对象的使用情况,再根据使用情况分析系统调用间的依赖关系,完善依赖图,如附图4所示,具体步骤如下:
3.1:通过内核源码构建每个系统调用的过程间控制流图。
3.2:遍历每个系统调用的过程间控制流图,记录每个系统调用所使用的内核资源对象和使用点。
3.3:对每个系统调用按照所使用的内核资源对象进行分类,若系统调用i,j访问同一种内核资源对象,则认为该两个系统调用有依赖关系,即调整依赖图中<sys_i,sys_j>和<sys_j,sys_i>的权重值。
3.4:特别地,对于内核资源对象使用点在比较运算符的系统调用(假定为j),适当增加依赖图中相关联边<sys_x,sys_j>的权重,其中x是与j当前分析的比较运算符操作数有相同内核对象资源的系统调用。
4:将系统调用依赖图作为内核模糊测试工具的生成和变异操作算子,指导内核模糊测试用例的生成与变异,具体步骤如下:
4.1:当插入新的系统调用时,分析在依赖图上以插入点前一个系统调用为起点的有向边,根据这些边的权重选择插入的系统调用,权重越高,被选中的概率也越大。
4.2:当删除某个系统调用时,分析测试用例中两两相邻的系统调用在依赖图上对应边的权重,权重越小,被删除的概率也越大。
4.3:当替换某个系统调用时,分析在依赖图上以替换点前一个系统调用为起点的有向边,根据这些边的权重选择替换的系统调用,权重越高,被选中的概率也越大。
本方法在没有种子或者种子不丰富的情况下尽可能生成有效的测试用例,即系统调用序列。本方法通过对系统调用描述进行分析和对内核源码进行静态分析得到系统调用依赖图,通过依赖图指导模糊测试中的生成和变异操作,在不影响原有模糊测试执行时间的前提下尽可能提高模糊测试的效率。
以上仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。本发明未涉及的技术均可通过现有的技术加以实现。
Claims (4)
1.一种基于系统调用依赖图的内核模糊测试用例生成方法,所述方法包括以下步骤:
步骤1:定义一个有向带权图描述系统调用之间的依赖关系,输入系统调用接口声明,生成并初始化该系统调用依赖图;
步骤2:将系统调用接口签名按照描述模板转换成系统调用描述,以实现系统调用间“参数-返回值”依赖分析;
步骤3:输入选定的内核资源对象和内核源码,以各系统调用为入口函数,对内核源码进行静态分析,得到每个系统调用对内核资源对象的使用情况,再根据使用情况分析系统调用间的依赖关系,完善依赖图;
步骤4:将系统调用依赖图输入到内核模糊测试工具中,指导内核模糊测试用例的生成与变异;
所述步骤2中“参数-返回值”依赖分析的具体步骤如下:
步骤2.1:遍历所有系统调用描述,对具有相同参数类型的系统调用描述进行归类,若系统调用i,j中每有一个相同的参数类型,则调整依赖图中<sys_i,sys_j>和<sys_j,sys_i>的权重值;
步骤2.2:若系统调用i的返回类型是系统调用j的参数类型之一,则调整依赖图中<sys_i,sys_j>的权重值;
所述步骤3具体如下:
步骤3.1:通过内核源码构建每个系统调用的过程间控制流图;
步骤3.2:遍历每个系统调用的过程间控制流图,记录每个系统调用所使用的内核资源对象和使用点;
步骤3.3:对每个系统调用按照所使用的内核资源对象进行分类,若系统调用i,j访问同一种内核资源对象,则认为该两个系统调用有依赖关系,即调整依赖图中<sys_i,sys_j>和<sys_j,sys_i>的权重值;
步骤3.4:对于内核资源对象使用点在比较运算符的系统调用,假定为j,增加依赖图中相关联边<sys_x,sys_j>的权重,其中x是与j当前分析的比较运算符操作数有相同内核对象资源的系统调用;
所述步骤4具体如下:
步骤4.1:当插入新的系统调用时,分析在依赖图上以插入点前一个系统调用为起点的有向边,根据这些边的权重选择插入的系统调用,权重越高,被选中的概率也越大;
步骤4.2:当删除某个系统调用时,分析测试用例中两两相邻的系统调用在依赖图上对应边的权重,权重越小,被删除的概率也越大;
步骤4.3:当替换某个系统调用时,分析在依赖图上以替换点前一个系统调用为起点的有向边,根据这些边的权重选择替换的系统调用,权重越高,被选中的概率也越大。
2.根据权利要求1所述的基于系统调用依赖图的内核模糊测试用例生成方法,其特征在于,所述步骤1具体如下:
步骤1.1:为每个系统调用生成一个图中结点,以系统调用名作为标识;
步骤1.2:两两节点之间添加两条有向边相互连接,构成完备图,其中用<sys_a,sys_b>表示从节点sys_a指向节点sys_b的边;
步骤1.3:初始化每条边的权重,值为0,其中有向边<sys_a,sys_b>的权重指示系统调用sys_b出现在系统调用sys_a后的可能性。
3.根据权利要求1所述的基于系统调用依赖图的内核模糊测试用例生成方法,其特征在于:所述步骤3中内核资源对象是指操作系统内核为了完成其核心功能的所定义的核心数据结构,按照种类可划分为内存资源:struct mm_struct,struct page、进程描述:struct task_struct,pid_t、文件描述:struct file、网络端口:truct socket,此外全局变量和静态变量也属于内核资源对象。
4.根据权利要求3所述的基于系统调用依赖图的内核模糊测试用例生成方法,其特征在于:根据测试任务配置能够选择所述内核资源对象中的一个或几个种类用于所述的静态分析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011538231.XA CN112559367B (zh) | 2020-12-23 | 2020-12-23 | 基于系统调用依赖图的内核模糊测试用例生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011538231.XA CN112559367B (zh) | 2020-12-23 | 2020-12-23 | 基于系统调用依赖图的内核模糊测试用例生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559367A CN112559367A (zh) | 2021-03-26 |
CN112559367B true CN112559367B (zh) | 2022-10-25 |
Family
ID=75030935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011538231.XA Active CN112559367B (zh) | 2020-12-23 | 2020-12-23 | 基于系统调用依赖图的内核模糊测试用例生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559367B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204498B (zh) * | 2021-06-07 | 2023-04-07 | 支付宝(杭州)信息技术有限公司 | 针对闭源函数库生成模糊测试驱动器的方法和装置 |
CN113419960B (zh) * | 2021-07-01 | 2022-06-14 | 中国人民解放军国防科技大学 | 用于可信操作系统内核模糊测试的种子生成方法及系统 |
CN113806217A (zh) * | 2021-08-13 | 2021-12-17 | 阿里云计算有限公司 | 内核测试方法及装置 |
CN116150765B (zh) * | 2023-02-28 | 2023-08-04 | 上海安般信息科技有限公司 | 一种基于api依赖的模糊变异方法及装置 |
CN116069672B (zh) * | 2023-03-23 | 2023-07-04 | 中南大学 | 操作系统内核定向模糊测试的种子变异方法及测试方法 |
CN117349185B (zh) * | 2023-12-04 | 2024-02-23 | 杭银消费金融股份有限公司 | 一种基于接口强弱依赖分级的系统测试方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786715A (zh) * | 2016-04-08 | 2016-07-20 | 南京大学 | 一种程序静态自动分析方法 |
CN109308415A (zh) * | 2018-09-21 | 2019-02-05 | 四川大学 | 一种面向二进制的导向性模糊测试方法与系统 |
CN111709031A (zh) * | 2020-05-28 | 2020-09-25 | 杭州电子科技大学 | 一种覆盖率引导的VxWorks内核模糊测试方法 |
CN111881039A (zh) * | 2020-07-24 | 2020-11-03 | 广州大学 | 模糊测试的种子处理、模糊测试方法、系统和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10725894B2 (en) * | 2017-10-04 | 2020-07-28 | International Business Machines Corporation | Measuring and improving test coverage |
-
2020
- 2020-12-23 CN CN202011538231.XA patent/CN112559367B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786715A (zh) * | 2016-04-08 | 2016-07-20 | 南京大学 | 一种程序静态自动分析方法 |
CN109308415A (zh) * | 2018-09-21 | 2019-02-05 | 四川大学 | 一种面向二进制的导向性模糊测试方法与系统 |
CN111709031A (zh) * | 2020-05-28 | 2020-09-25 | 杭州电子科技大学 | 一种覆盖率引导的VxWorks内核模糊测试方法 |
CN111881039A (zh) * | 2020-07-24 | 2020-11-03 | 广州大学 | 模糊测试的种子处理、模糊测试方法、系统和存储介质 |
Non-Patent Citations (2)
Title |
---|
Energy Distribution Matters in Greybox Fuzzing;Linzhang Wang;《IEEE 2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)》;20190819;第270-271页 * |
基于污点分析的数组越界缺陷的静态检测方法;王林章;《软件学报》;20201031;第31卷(第10期);第2983-3003页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112559367A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112559367B (zh) | 基于系统调用依赖图的内核模糊测试用例生成方法 | |
Herodotou et al. | A survey on automatic parameter tuning for big data processing systems | |
US7284238B2 (en) | Multithread tracing method and apparatus | |
US8719784B2 (en) | Assigning runtime artifacts to software components | |
KR101957533B1 (ko) | 가상 머신 브랜칭 및 병렬 실행 기법 | |
Mariani et al. | Compatibility and regression testing of COTS-component-based software | |
US8732676B1 (en) | System and method for generating unit test based on recorded execution paths | |
CN101853200B (zh) | 一种高效动态软件漏洞挖掘方法 | |
CN113419960B (zh) | 用于可信操作系统内核模糊测试的种子生成方法及系统 | |
CN109933515B (zh) | 一种回归测试用例集的优化方法和自动优化装置 | |
Olsthoorn et al. | Syntest-solidity: Automated test case generation and fuzzing for smart contracts | |
Sadeghi et al. | Mining the categorized software repositories to improve the analysis of security vulnerabilities | |
CN115828260A (zh) | 基于脆弱点聚类与距离空间划分的多机协同漏洞检测系统 | |
CN111459796A (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
Spieck et al. | A learning-based methodology for scenario-aware mapping of soft real-time applications onto heterogeneous mpsocs | |
Ciavotta et al. | Architectural design of cloud applications: A performance-aware cost minimization approach | |
Dewey et al. | A parallel abstract interpreter for JavaScript | |
CN113626823A (zh) | 一种基于可达性分析的组件间交互威胁检测方法及装置 | |
CN117201119A (zh) | 开源组件的风险识别方法、装置及电子设备 | |
Yeboah-Antwi et al. | Online Genetic Improvement on the java virtual machine with ECSELR | |
Zhao et al. | H-fuzzing: A new heuristic method for fuzzing data generation | |
McHugh | An information flow tool for Gypsy | |
CN114840418A (zh) | 模糊测试方法及装置 | |
CN113031964B (zh) | 一种大数据应用的管理方法、装置、设备及存储介质 | |
Rosales et al. | Large‐scale characterization of Java streams |
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 |