CN114428733A - 基于静态程序分析与模糊测试的内核数据竞争检测方法 - Google Patents

基于静态程序分析与模糊测试的内核数据竞争检测方法 Download PDF

Info

Publication number
CN114428733A
CN114428733A CN202210059807.7A CN202210059807A CN114428733A CN 114428733 A CN114428733 A CN 114428733A CN 202210059807 A CN202210059807 A CN 202210059807A CN 114428733 A CN114428733 A CN 114428733A
Authority
CN
China
Prior art keywords
kernel
system call
data competition
data
pairs
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
Application number
CN202210059807.7A
Other languages
English (en)
Inventor
王豫
徐砚听
熊俊
王林章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN202210059807.7A priority Critical patent/CN114428733A/zh
Publication of CN114428733A publication Critical patent/CN114428733A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开一种基于静态程序分析与模糊测试的内核数据竞争检测方法,通过静态程序分析识别代码里的共享资源,并且获得针对共享资源的访问操作,记录该访问操作的读写属性,判定潜在数据竞争的访问对。通过分析内核同步原语语义,过滤不可能产生线程交错的共享资源访问对,以生成更加精确的数据竞争对集合。通过静态分析识别内核资源与系统调用,构建系统调用依赖图。使用数据竞争对集合与系统调用依赖图指导内核模糊测试用例的生成与变异。用一个线程感知模糊测试生成器,将线程的优先级随机化,以探索线程交错,并使用运行时反馈信息更新依赖图的边权值,完善系统调用依赖图,指导之后模糊测试输入的变异。

Description

基于静态程序分析与模糊测试的内核数据竞争检测方法
技术领域
本发明涉及静态程序分析技术和内核模糊测试技术,利用操作系统内核同步原语特征提供更多有效的信息指导内核模糊测试的生成和变异操作,属于软件工程领域。
背景技术
操作系统是管理计算机硬件和软件资源的系统软件,而内核是操作系统的核心,它对各种底层硬件进行抽象和封装,并暴露接口供用户程序使用,不同于用户态程序,内核运行在权限最高的内核态,一旦出现安全漏洞则直接影响整个操作系统和用户程序。模糊测试是一项自动化的软件测试技术,其核心思想是自动或半自动地生成随机数据输入到目标程序中,并监视程序异常,以发现可能的程序错误,是常见的漏洞挖掘技术之一。
并发缺陷指的是两个或两个以上线程未以预期的顺序访问共享资源从而导致不确定的结果。并发缺陷可以分为死锁缺陷与非死锁并发缺陷。常用检测的对象是非死锁并发缺陷里的竞争条件,经常把竞争条件总结为原子性违反、序违反、数据竞争等三类缺陷。其中,原子性违反是指对本该是原子性的共享内存区域因交错执行破坏了原子性而导致不确定的结果;序违反是指两个内存访问没有按照期望的顺序执行导致不确定的结果;数据竞争是指没有顺序要求的多个线程同时访问共享内存且至少一个是写操作从而导致不确定结果。
本发明将使用静态分析技术分析操作系统潜在数据竞争对与系统调用依赖图,然后使用内核同步原语分析过滤不可能发生线程交错的数据竞争对,并指导内核模糊测试生成和变异系统调用序列操作,通过基于虚拟器的内核模糊测试,检测操作系统内核数据竞争。
发明内容
目前的操作系统内核模糊测试没有考虑内核同步原语。本发明为了解决上述技术问题,采用以下技术方案:
本发明提出的一种基于静态程序分析与模糊测试的内核数据竞争检测方法,包括以下步骤:
步骤1:通过静态程序分析识别代码里的共享资源,并且获得针对共享资源的访问操作,记录该访问操作的读写属性,判定潜在数据竞争的访问对,然后通过分析内核同步原语语义,过滤不可能产生线程交错的共享资源访问对,以生成更加精确的数据竞争对集合,具体步骤如下;
步骤1.1:对操作系统内核模块进行分区;
步骤1.2:对每个分区的操作系统内核代码进行过程间和上下文敏感的静态程序分析,获取针对共享资源的访问操作及读写属性;
步骤1.3:通过点对分析以检测操作系统的潜在数据竞争对,生成潜在数据竞争对的集合;
步骤1.4:对操作系统内核同步原语的特征进行分类总结对应的模式;
步骤1.5:通过分析内核同步原语,找出实际运行时受到同步机制限制的多线程语句,过滤潜在数据竞争对集合里不会产生线程交错的数据竞争对,生成更加精确的数据竞争对集合。
步骤2:通过静态分析识别内核资源与系统调用,构建系统调用依赖图,具体步骤如下:
步骤2.1:定义有向带权图,其中结点为系统调用,由于系统调用序列顺序不固定,任意两个系统调可能按顺序出现,所以生成边权值为0的初始的有向完备图;
步骤2.2:静态分析内核源码与资源,获取每个函数的内核资源使用情况;
步骤2.3:分析系统调用间的依赖关系,更新依赖图里的边权值,完善系统调用依赖图。
步骤3:使用数据竞争对集合与指导内核模糊测试用例的生成,通过数据竞争对的共享资源访问位置生成模糊测试初始输入,具体步骤如下:
步骤3.1:遍历数据竞争对集合,选择当前准备使用的数据竞争对;
步骤3.2:生成模糊测试初始输入即系统调用序列,其中系统调用序列里含有对数据竞争对的访问。
步骤4:使用系统调用依赖图指导内核模糊测试用例的变异,通过系统调用依赖图边权值按概率添加删除替换系统调用语句,以生成新的模糊测试输入,具体步骤如下:
步骤4.1:根据系统调用依赖图变异模糊测试初始输入,当使用删除系统调用策略时,以更大概率选择在测试用例中连续系统调用边权值低的系统调用;
步骤4.2:当使用插入系统调用策略时,以更大概率选择插入点前驱结点为起点的权值高的边所指向的系统调用;
步骤4.3:当使用替换系统调用策略时,以更大概率选择替换点前驱结点为起点的权值高的边所指向的系统调用。
步骤5:用一个线程感知模糊测试生成器,将线程的优先级随机化,以探索线程交错,并使用运行时反馈信息更新依赖图的边权值,完善系统调用依赖图,指导之后模糊测试输入的变异,具体步骤如下:
步骤5.1:通过在定制的虚拟化环境中运行目标内核;
步骤5.2:为每个CPU核心设置断点,断点位置在数据竞争对语句上;
步骤5.3:在两个内核线程停在各自的断点地址后,即访问到集合里的数据竞争对后,恢复虚拟CPU的执行;
步骤5.4:检测虚拟内核是否发生实际的数据竞争,通过CPU指令都访问相同地址以进行判断;
步骤5.5:收集运行时信息,当成功运行或检测到数据竞争时,增加系统调用序列之间的边权值,更新系统调用依赖图,指导之后模糊测试输入的变异。
有益效果:本发明采用以上技术方案,与现有技术相比,具体以下有益效果:
1、本方法考虑操作系统内核原语,过滤掉不可能发生的潜在数据竞争对,减少模糊测试的无效输入。
2、本方法通过使用虚拟机调度器进行线程的调度,尽可能地让线程触发潜在数据竞争对,以提高模糊测试的效率。
3、本方法通过使用系统调用依赖图指导模糊测试输入的变异,提高模糊测试输入的有效性。
附图说明
图1是基于静态程序分析与模糊测试的内核数据竞争检测方法的系统框架。
具体实施方式
下面结合附图对本发明使用的基于系统调用依赖图的内核模糊测试用例生成方法具体实施例作更详细的描述。
本实施例的基于静态程序分析与模糊测试的内核数据竞争检测方法,包括以下步骤:
步骤1:通过静态程序分析识别代码里的共享资源,并且获得针对共享资源的访问操作,记录该访问操作的读写属性,判定潜在数据竞争的访问对,然后通过分析内核同步原语语义,过滤不可能产生线程交错的共享资源访问对,以生成更加精确的数据竞争对集合,具体步骤如下;
步骤1.1:对操作系统内核模块进行分区;
步骤1.2:对每个分区的操作系统内核代码进行过程间和上下文敏感的静态程序分析,获取针对共享资源的访问操作及读写属性;
步骤1.3:通过点对分析以检测操作系统的潜在数据竞争对,生成潜在数据竞争对的集合;
步骤1.4:对操作系统内核同步原语的特征进行分类总结对应的模式;
步骤1.5:通过分析内核同步原语,找出实际运行时受到同步机制限制的多线程语句,过滤潜在数据竞争对集合里不会产生线程交错的数据竞争对,生成更加精确的数据竞争对集合。
步骤2:通过静态分析识别内核资源与系统调用,构建系统调用依赖图,具体步骤如下:
步骤2.1:定义有向带权图,其中结点为系统调用,由于系统调用序列顺序不固定,任意两个系统调可能按顺序出现,所以生成边权值为0的初始的有向完备图;
步骤2.2:静态分析内核源码与资源,获取每个函数的内核资源使用情况;
步骤2.3:分析系统调用间的依赖关系,更新依赖图里的边权值,完善系统调用依赖图。
步骤3:使用数据竞争对集合与指导内核模糊测试用例的生成,通过数据竞争对的共享资源访问位置生成模糊测试初始输入,具体步骤如下:
步骤3.1:遍历数据竞争对集合,选择当前准备使用的数据竞争对;
步骤3.2:生成模糊测试初始输入即系统调用序列,其中系统调用序列里含有对数据竞争对的访问。
步骤4:使用系统调用依赖图指导内核模糊测试用例的变异,通过数据竞争对的共享资源访问位置生成模糊测试初始输入,通过系统调用依赖图边权值按概率添加删除替换系统调用语句,以生成新的模糊测试输入,具体步骤如下:
步骤4.1:根据系统调用依赖图变异模糊测试初始输入,当使用删除系统调用策略时,以更大概率选择在测试用例中连续系统调用边权值低的系统调用;
步骤4.2:当使用插入系统调用策略时,以更大概率选择插入点前驱结点为起点的权值高的边所指向的系统调用;
步骤4.3:当使用替换系统调用策略时,以更大概率选择替换点前驱结点为起点的权值高的边所指向的系统调用。
步骤5:用一个线程感知模糊测试生成器,将线程的优先级随机化,以探索线程交错,并使用运行时反馈信息更新依赖图的边权值,完善系统调用依赖图,指导之后模糊测试输入的变异,具体步骤如下:
步骤5.1:通过在定制的虚拟化环境中运行目标内核;
步骤5.2:为每个CPU核心设置断点,断点位置在数据竞争对语句上;
步骤5.3:在两个内核线程停在各自的断点地址后,即访问到集合里的数据竞争对后,恢复虚拟CPU的执行;
步骤5.4:检测虚拟内核是否发生实际的数据竞争,通过CPU指令都访问相同地址以进行判断;
步骤5.5:收集运行时信息,当成功运行或检测到数据竞争时,增加系统调用序列之间的边权值,更新系统调用依赖图,指导之后模糊测试输入的变异。
本方法在考虑内核同步机制的情况下尽可能生成有效的测试用例,即系统调用序列。本方法通过对内核源码进行静态分析得到数据竞争对集合和系统调用依赖图,通过数据竞争对和依赖图指导模糊测试中的生成和变异操作,尽可能提高模糊测试输入的有效性并且增加数据竞争漏洞被触发的可能性。
以上仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。本发明未涉及的技术均可通过现有的技术加以实现。

Claims (8)

1.一种基于静态程序分析与模糊测试的内核数据竞争检测方法,所述方法包括以下步骤:
步骤1:通过静态程序分析识别代码里的共享资源,并且获得针对共享资源的访问操作,记录该访问操作的读写属性,判定潜在数据竞争的访问对,然后通过分析内核同步原语语义,过滤不可能产生线程交错的共享资源访问对,以生成更加精确的数据竞争对集合;
步骤2:通过静态分析识别内核资源与系统调用,构建系统调用依赖图;
步骤3:使用数据竞争对集合与指导内核模糊测试用例的生成,通过数据竞争对的共享资源访问位置生成模糊测试初始输入;
步骤4:使用系统调用依赖图指导内核模糊测试用例的变异,通过系统调用依赖图边权值按概率添加删除替换系统调用语句,以生成新的模糊测试输入;
步骤5:用一个线程感知模糊测试生成器,将线程的优先级随机化,以探索线程交错,并使用运行时反馈信息更新依赖图的边权值,完善系统调用依赖图,指导之后模糊测试输入的变异。
2.根据权利要求1所述的基于静态程序分析与模糊测试的内核数据竞争检测方法,其特征在于,所述步骤1具体如下:
步骤1.1:对操作系统内核模块进行分区;
步骤1.2:对每个分区的操作系统内核代码进行过程间和上下文敏感的静态程序分析,获取针对共享资源的访问操作及读写属性;
步骤1.3:通过点对分析以检测操作系统的潜在数据竞争对,生成潜在数据竞争对的集合;
步骤1.4:对操作系统内核同步原语的特征进行分类总结对应的模式;
步骤1.5:通过分析内核同步原语,找出实际运行时受到同步机制限制的多线程语句,过滤潜在数据竞争对集合里不会产生线程交错的数据竞争对,生成更加精确的数据竞争对集合。
3.根据权利要求1所述的基于静态程序分析与模糊测试的内核数据竞争检测方法,其特征在于,所述步骤2的具体步骤如下:
步骤2.1:定义有向带权图,其中结点为系统调用,由于系统调用序列顺序不固定,任意两个系统调可能按顺序出现,所以生成边权值为0的初始的有向完备图;
步骤2.2:静态分析内核源码与资源,获取每个函数的内核资源使用情况;
步骤2.3:分析系统调用间的依赖关系,更新依赖图里的边权值,完善系统调用依赖图。
4.根据权利要求1所述的基于静态程序分析与模糊测试的内核数据竞争检测方法,其特征在于,所述步骤3具体如下:
步骤3.1:遍历数据竞争对集合,选择当前准备使用的数据竞争对;
步骤3.2:生成模糊测试初始输入即系统调用序列,其中系统调用序列里含有对数据竞争对的访问。
5.根据权利要求1所述的基于静态程序分析与模糊测试的内核数据竞争检测方法,其特征在于,所述步骤4具体如下:
步骤4.1:根据系统调用依赖图变异模糊测试初始输入,当使用删除系统调用策略时,以更大概率选择在测试用例中连续系统调用边权值低的系统调用;
步骤4.2:当使用插入系统调用策略时,以更大概率选择插入点前驱结点为起点的权值高的边所指向的系统调用;
步骤4.3:当使用替换系统调用策略时,以更大概率选择替换点前驱结点为起点的权值高的边所指向的系统调用。
6.根据权利要求1所述的基于静态程序分析与模糊测试的内核数据竞争检测方法,其特征在于,所述步骤5具体如下:
步骤5.1:通过在定制的虚拟化环境中运行目标内核;
步骤5.2:为每个CPU核心设置断点,断点位置在数据竞争对语句上;
步骤5.3:在两个内核线程停在各自的断点地址后,即访问到集合里的数据竞争对后,恢复虚拟CPU的执行;
步骤5.4:检测虚拟内核是否发生实际的数据竞争,通过CPU指令都访问相同地址以进行判断;
步骤5.5:收集运行时信息,当成功运行或检测到数据竞争时,增加系统调用序列之间的边权值,更新系统调用依赖图,指导之后模糊测试输入的变异。
7.根据权利要求1至6之一所述的基于静态程序分析与模糊测试的内核数据竞争检测方法,其特征在于:所述步骤1中内核同步原语包括互斥锁、信号量、自旋锁、顺序锁等一系列语义不同的原语。
8.根据权利要求7所述的基于静态程序分析与模糊测试的内核数据竞争检测方法,其特征在于:对不同内核同步原语的静态程序分析,以识别不会发生线程交错的潜在数据竞争对。
CN202210059807.7A 2022-01-19 2022-01-19 基于静态程序分析与模糊测试的内核数据竞争检测方法 Pending CN114428733A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210059807.7A CN114428733A (zh) 2022-01-19 2022-01-19 基于静态程序分析与模糊测试的内核数据竞争检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210059807.7A CN114428733A (zh) 2022-01-19 2022-01-19 基于静态程序分析与模糊测试的内核数据竞争检测方法

Publications (1)

Publication Number Publication Date
CN114428733A true CN114428733A (zh) 2022-05-03

Family

ID=81313377

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210059807.7A Pending CN114428733A (zh) 2022-01-19 2022-01-19 基于静态程序分析与模糊测试的内核数据竞争检测方法

Country Status (1)

Country Link
CN (1) CN114428733A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115794592A (zh) * 2023-02-10 2023-03-14 南京邮电大学 一种基于高阶函数的数据竞争检测方法
CN116069672A (zh) * 2023-03-23 2023-05-05 中南大学 操作系统内核定向模糊测试的种子变异方法及测试方法
CN116090383A (zh) * 2022-12-27 2023-05-09 广东高云半导体科技股份有限公司 实现静态时序分析的方法、装置、计算机存储介质及终端

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116090383A (zh) * 2022-12-27 2023-05-09 广东高云半导体科技股份有限公司 实现静态时序分析的方法、装置、计算机存储介质及终端
CN115794592A (zh) * 2023-02-10 2023-03-14 南京邮电大学 一种基于高阶函数的数据竞争检测方法
CN116069672A (zh) * 2023-03-23 2023-05-05 中南大学 操作系统内核定向模糊测试的种子变异方法及测试方法
CN116069672B (zh) * 2023-03-23 2023-07-04 中南大学 操作系统内核定向模糊测试的种子变异方法及测试方法

Similar Documents

Publication Publication Date Title
Sen Effective random testing of concurrent programs
KR101143214B1 (ko) 멀티스레드된 프로그램에서의 잠재적 레이스를 검출하기위한 방법 및 시스템
Raychev et al. Effective race detection for event-driven programs
O'callahan et al. Hybrid dynamic data race detection
Alam et al. Syncperf: Categorizing, detecting, and diagnosing synchronization performance bugs
Dean et al. Perfcompass: Online performance anomaly fault localization and inference in infrastructure-as-a-service clouds
CN114428733A (zh) 基于静态程序分析与模糊测试的内核数据竞争检测方法
US20090037888A1 (en) Simulation of program execution to detect problem such as deadlock
US10241894B2 (en) Data-scoped dynamic data race detection
Li et al. Pulse: A Dynamic Deadlock Detection Mechanism Using Speculative Execution.
Tian et al. Dynamic recognition of synchronization operations for improved data race detection
US20160188441A1 (en) Testing multi-threaded applications
Yi et al. Cooperative reasoning for preemptive execution
US20230004367A1 (en) Low-overhead detection techniques for synchronization problems in parallel and concurrent software
Hofer et al. Efficient tracing and versatile analysis of lock contention in Java applications on the virtual machine level
Zhang et al. A lightweight system for detecting and tolerating concurrency bugs
Sumner et al. Marathon: Detecting atomic-set serializability violations with conflict graphs
Tchamgoue et al. A framework for on-the-fly race healing in ARINC-653 applications
Xu et al. PVcon: localizing hidden concurrency errors with prediction and verification
Yang et al. Histlock+: precise memory access maintenance without lockset comparison for complete hybrid data race detection
Yi et al. SideTrack: generalizing dynamic atomicity analysis
Jammer et al. Towards a hybrid MPI correctness benchmark suite
Qadeer et al. Runtime verification of concurrency-specific correctness criteria
Long et al. Mutation-based exploration of a method for verifying concurrent Java components
Santhiar et al. Efficient race detection in the presence of programmatic event loops

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