一种基于模糊测试和静态分析的并发程序漏洞检测方法技术

技术编号:37965019 阅读:7 留言:0更新日期:2023-06-30 09:40
本发明专利技术公开了一种基于模糊测试和静态分析的并发程序漏洞检测方法,包括以下步骤:对待检测程序源码编译,根据编译后的字节码文件,然后进行静态分析,得到并发漏洞对;对并发漏洞对进行程序插桩,得到插入桩代码的程序二进制文件;将插入桩代码的程序二进制文件作为测试程序,在输入队列中添加初始输入文件,在AFL中添加并发漏洞导向机制以及添加是否是有趣输入的判定方式,并修剪不可行的路径;进行模糊测试,实现漏洞检测。本发明专利技术不仅能够利用并发程序漏洞的特征,使用优化冗余节点的静态分析技术减少并发漏洞的检测数量,而且能够使用模糊测试技术,高效的复现并发程序漏洞的发生过程,实现了更高效,更直观的并发漏洞检测。更直观的并发漏洞检测。

【技术实现步骤摘要】
一种基于模糊测试和静态分析的并发程序漏洞检测方法


[0001]本专利技术涉及并发内存漏洞检测领域,具体涉及一种基于模糊测试和静态分析的并发程序漏洞检测方法。

技术介绍

[0002]多线程在现代软件系统中一直很受欢迎,因为它充分利用了硬件资源来提升软件性能,为了提高计算效率,绝大多数的软件系统均会采用多线程技术。然而,与顺序程序相比,多线程程序也更容易出现严重的软件故障。一方面,非确定性的线程交织产生了并发漏洞,如数据竞争、死锁等。这些错误可能会导致程序最终出现异常的结果或意外的挂起。另一方面,在特定输入和交互下出现的错误可能导致并发漏洞,如UAF,DF等,最后导致内存损坏、信息泄漏等。内存漏洞不仅影响软件的正常功能,还可能危害操作系统的安全。
[0003]目前主要的多线程程序分析工具是使用构建偏序关系的检测方法。这种方法是基于预测的检测方式。通过对不同线程中的代码的执行顺序进行预测,并表示所有可能的执行序列,提供事件发生序列给检测模块,分析是否存在漏洞。此种方法是通过预测可能的执行路径来检测并发漏洞的,不能通过模拟来真实的触发漏洞。
[0004]目前,静态分析并发程序内存漏洞方面,没有一个很好的轻量级检测并发漏洞对的工具。许多静态分析工作只能简单地找到两个线程之间的并发区域,或者是基于的底层静态分析技术扩展性较差导致的并发程序分析很难扩展到大型程序中,因而在多文件程序中很难发现正真的并发内存漏洞。
[0005]在动态分析方面,目前主流方法有基于偏序关系的预测方法和模糊执行的方法。基于偏序关系的预测方法能根据一次执行得到的程序顺序执行序列,基于偏序集事件的可交换性,分析得到可能存在的执行序列,以此检测并发漏洞的发生。但是这类并发漏洞检测方法是基于预测的,不能重现漏洞的发生过程。而对于模糊执行的方法,目前主流的研究多存在于检测顺序程序的内存漏洞,在并发程序内存漏洞检测方面存在检测效率低,并发漏洞针对性弱的问题。因此,开发一种高效的能够重现漏洞的并发漏洞检测技术是有意义的。

技术实现思路

[0006]为克服现有技术中的问题,本专利技术的目的在于提供一种基于模糊测试和静态分析的并发程序漏洞检测方法,该方法能够实现漏洞的检测,并且效率高。
[0007]为了实现上述目的,本专利技术采用如下技术方案:
[0008]一种基于模糊测试和静态分析的并发程序漏洞检测方法,包括以下步骤:
[0009]1)对待检测程序源码编译,得到编译后的字节码文件;根据编译后的字节码文件,得到优化后的线程感知的值流图;
[0010]2)根据优化后的线程感知的值流图,进行静态分析,得到并发漏洞对;
[0011]3)对并发漏洞对进行程序插桩,得到插入桩代码的程序二进制文件;
[0012]4)将插入桩代码的程序二进制文件作为测试程序,在输入队列中添加初始输入文
件,在AFL中添加并发漏洞导向机制以及添加是否是有趣输入的判定方式,并修剪不可行的路径;然后进行模糊测试,实现漏洞检测。
[0013]进一步的,根据编译后的字节码文件,得到优化后的线程感知的值流图,包括以下过程:
[0014]a)采用静态安德森指针分析对编译后的字节码文件进行指针分析,得到程序内指针的指向信息;
[0015]b)根据程序内指针的指向信息和编译后的字节码文件,对每个线程中的语句分析,获得并发指令对集合;
[0016]对程序内指针的指向信息进行分析,得到程序顺序执行版本的值流图;
[0017]c)根据并发指令对集合以及并发漏洞的特征,对程序顺序执行版本的值流图进行线程感知的def

use链分析,获得具有线程感知值流图;
[0018]d)根据程序内指针的指向信息,删除具有线程感知值流图的无关值流区域,得到优化后的线程感知的值流图;
[0019]进一步的,步骤c)的具体过程为:根据线程关系以及程序的基本语义,进行前向数据流分析,得到每一个并发线程的集合。
[0020]进一步的,线程关系包括父子关系、交汇关系和兄弟线程。
[0021]进一步的,根据程序内指针的指向信息,删除具有线程感知值流图的无关值流区域,得到优化后的线程感知的值流图,包括以下过程:对于具有线程感知值流图中不存在释放结点和null结点语句的程序片段,进行删除处理,得到优化后的线程感知的值流图。
[0022]进一步的,步骤2)的具体过程为:识别优化后的线程感知的值流图中包含的读写指令结点,识别触发程序漏洞的关键事件、释放事件和置空事件,得到并发漏洞对。
[0023]进一步的,步骤3)的具体过程为:收集并发漏洞对信息中的源文件路径,行号以及列号,将源文件路径、行号以及列号作为标识符,通过标识符判定插桩内容的位置是否已经被标记,如果被标记,进行步骤4),如果没有被标记,则进行标记,得到插入桩代码的程序二进制文件,并进行步骤4)。
[0024]进一步的,步骤4)具体过程为:首先,插入桩代码的程序二进制文件执行到插入的桩代码位置时,根据并发漏洞特征调整当前事件所在线程的执行顺序,使free事件的线程先执行对应的释放操作,实现并发漏洞导向的模糊执行。
[0025]进一步的,并发漏洞特征具体为:并发漏洞包括并发UAF漏洞,并发DF漏洞,并发NPD漏洞,并发UAF漏洞发生特征是指向同一内存地址的内存释放事件和内存使用事件可以在并发控制条件下并发执行,并且以<free,use>的方式呈现;并发NPD漏洞能够以<null,*ptr>形式并发呈现,并发DF漏洞能够以<free,free>的形式并发呈现。
[0026]进一步的,修剪不可行的路径的具体过程为:根据多线程程序的控制流图ICFG进行图可达性分析,修剪无法到达目标代码的基本块,使用逆向分析找到可达free或者null节点的条件约束路径,根据路径分支信息,修剪部分不可达路径。
[0027]与现有技术相比,本专利技术具有的有益效果:
[0028]本专利技术提出一种静态辅助动态模糊执行的方法来检测并发内存漏洞,该方法使用静态分析定位到的并发可疑漏洞对,在代码中插入桩代码,引导动态模糊器进行测试,并优化其检测速度,以重现内存漏洞。该方法以线程交织作为新的模糊引导机制,以路径覆盖作
为辅助机制引导模糊测试的执行,使得模糊测试方法具有检测并发程序漏洞的能力,最终在一个测试集上能够检测出大多数的并发程序漏洞。逆向分析触发漏洞关键事件的分支路径,修剪漏洞关键事件的不可达路径,避免在多次执行中过多地流向无法触发漏洞的路径,提高模糊测试的效率。
[0029]进一步的,本专利技术基于安德森指针分析,获得程序指向信息,向值流图中不同线程关系的线程之间添加线程感知的值流边。分析并发控制锁,消除虚假def

use值流边。最终通过静态分析技术识别到可能存在的并发漏洞敏感操作,并确定它们在程序中的位置,从而生成一组并发可疑漏洞本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于模糊测试和静态分析的并发程序漏洞检测方法,其特征在于,包括以下步骤:1)对待检测程序源码编译,得到编译后的字节码文件;根据编译后的字节码文件,得到优化后的线程感知的值流图;2)根据优化后的线程感知的值流图,进行静态分析,得到并发漏洞对;3)对并发漏洞对进行程序插桩,得到插入桩代码的程序二进制文件;4)将插入桩代码的程序二进制文件作为测试程序,在输入队列中添加初始输入文件,在AFL中添加并发漏洞导向机制以及添加是否是有趣输入的判定方式,并修剪不可行的路径;然后进行模糊测试,实现漏洞检测。2.根据权利要求1所述的一种基于模糊测试和静态分析的并发程序漏洞检测方法,其特征在于,根据编译后的字节码文件,得到优化后的线程感知的值流图,包括以下过程:a)采用静态安德森指针分析对编译后的字节码文件进行指针分析,得到程序内指针的指向信息;b)根据程序内指针的指向信息和编译后的字节码文件,对每个线程中的语句分析,获得并发指令对集合;对程序内指针的指向信息进行分析,得到程序顺序执行版本的值流图;c)根据并发指令对集合以及并发漏洞的特征,对程序顺序执行版本的值流图进行线程感知的def

use链分析,获得具有线程感知值流图;d)根据程序内指针的指向信息,删除具有线程感知值流图的无关值流区域,得到优化后的线程感知的值流图。3.根据权利要求1所述的一种基于模糊测试和静态分析的并发程序漏洞检测方法,其特征在于,步骤c)的具体过程为:根据线程关系以及程序的基本语义,进行前向数据流分析,得到每一个并发线程的集合。4.根据权利要求3所述的一种基于模糊测试和静态分析的并发程序漏洞检测方法,其特征在于,线程关系包括父子关系、交汇关系和兄弟线程。5.根据权利要求2所述的一种基于模糊测试和静态分析的并发程序漏洞检测方法,其特征在于,根据程序内指针的指向信息,删除具有线程感知值流图的无关值流区域,得到优化后的线程感知的值流图,包括以下过程:对于具有线程感知值流图中不存在释放结点和null结点语句的...

【专利技术属性】
技术研发人员:王晨旭张惠雨
申请(专利权)人:西安交通大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1