一种基于辅助程序执行反馈的控制流构建方法及系统

文档序号:37045561发布日期:2024-02-20 20:40阅读:14来源:国知局
一种基于辅助程序执行反馈的控制流构建方法及系统

本发明属于软件安全的,涉及一种面向程序控制流构建、提升程序控制流图完整度与精确度的方法,主要涉及了一种基于辅助程序执行反馈的控制流构建方法及系统。


背景技术:

1、在现代计算机科学领域,软件程序的开发和维护已成为信息社会中不可或缺的一部分。控制流完整性指的是程序在其生命周期内始终按照预定的逻辑和执行顺序进行运行,而不受到未经授权的干扰或破坏。然而,随着软件规模和复杂性的不断增加,程序的控制流(即程序执行的路径)和控制流完整性(确保程序按预期执行的能力)对于软件开发周期中的漏洞查找、项目维护等工作具有重大意义。在保障软件系统的可靠性、安全性和性能方面,控制流完整性的问题显得尤为重要。恶意软件可能会利用控制流不完整性的漏洞来执行未经授权的操作,从而危害系统的安全性。此外,对于软件的维护和调试来说,准确的控制流图可以帮助开发人员理解程序的逻辑结构和执行流程,从而更快地诊断和解决问题。

2、控制流图生成的其中一个挑战是间接调用所带来的图不完整性问题。现代编程中,间接调用使程序能够在运行时根据需要动态地选择调用特定的函数或方法。然而,这种灵活性也使得静态分析工具难以确定间接调用的确切目标,从而影响了程序控制流图的准确性。

3、公开(公告)号为cn107194252a的专利《一种完全上下文敏感的程序控制流完整性保护方法》在静态分析部分通过模拟执行收集程序的控制流信息,在动态运行时跟踪执行路径,跟踪进程到达同一间接分支的执行路径,与控制流信息进行匹配,若匹配成功,则表示静态分析时模拟执行的路径和运行时真实执行的路径相同,则根据静态分析的控制流信息可判断随后的合法目标地址,若运行时的目标地址不同于合法目标地址,则判断受到控制流劫持攻击,从而由控制流检查模块通知进程跟踪模块以终止进程。但是此发明的目标是判断执行中的调用是否被静态分析捕获,没有办法判断真实的具体执行路径,也无法在原有的程序控制流图上进行控制流的完善,并且采用了污点分析方法进行了进程内的指令判断从而开展路径跟踪,具有大量的计算开销。

4、公开(公告)号为cn111898120a的专利《控制流完整性保护方法及装置》先获取待保护程序的控制流图,确定所有间接分支指令和对应的合法目标地址;在每个合法目标地址前插入带有标签信息的nop指令,并将对应的间接分支指令的跳转目标地址,指向nop指令所在地址,所述标签信息根据间接分支指令所在地址确定;其中,nop指令用于间接分支指令执行时,通过验证nop指令中的标签信息和间接分支指令的源地址一致后,执行跳转后的指令。但是此发明只能使用静态分析控制流得到的控制流图,而静态分析诸如指针分析获得的间接调用往往存在一定的不准确性和不完整因素。

5、上述专利的最终目的是通过静态或动态的方法改进控制流完整性检测方法,以提高程序分析和理解的准确性。现有技术存在如下问题:(1)现有程序控制流可视化工作多基于以静态分析为基础实现的控制流图,没有支持动态执行中补完控制流图方法;(2)现有技术将动态执行中的控制流完整性检测抽象化,虽然能够识别不合法的执行,但是无法将具体执行位置并与静态分析控制流结合,并且无法定位间接调用信息,在控制流完整性校验上欠缺;(3)现有动静态方法只能提供基本块或边粒度的控制流信息,无法进一步提供路径粒度的控制流,导致需求高精度控制流的漏洞检测工作无法开展。


技术实现思路

1、本发明正是针对现有技术中存在的问题,提供一种基于辅助程序执行反馈的控制流构建方法及系统,首先使用静态分析方法对待测程序进行控制流分析形成程序控制流图,使用两种插桩代码分别编译待测程序,计算边的程序记录为主二进制文件,计算路径的程序记录为辅助二进制文件;使用模糊测试器不断执行主二进制文件并变异模糊测试的输入,同时开启辅助程序使用当前输入执行辅助二进制文件,根据辅助程序反馈的路径信息结合静态分析代码获得的程序控制流信息检测并补充程序控制流完整性。该方法利用了动静态结合的方式,以低时间开销的方式利用了辅助程序,实现了结合静态分析控制流图与动态执行分析的调用位置补充,兼顾了执行效率以挖掘更多潜在间接调用边,同时提升了程序控制流图的精确性与完整性。

2、为了实现上述目的,本发明采取的技术方案是:一种基于辅助程序执行反馈的控制流构建系统,至少包括静态分析与插桩模块、模糊测试循环模块和检测模块:

3、所述静态分析与插桩模块:使用静态分析代码以及源代码级别的插桩指令,对待测程序分别进行边覆盖和路径覆盖的插桩编译,获得主二进制文件和辅助二进制文件,产生静态分析控制流信息生成静态分析的控制流图;

4、所述模糊测试模块:包括模糊测试循环及其辅助程序,模糊测试循环负责执行主二进制可执行文件,生成具有随机变异的输入数据,再将变异后的数据输入到主二进制文件中进行测试;将模糊测试生成的变异后的输入,开启辅助程序使用当前输入执行辅助二进制文件,通过模糊测试循环进行子进程监测,将信息汇入检测模块;

5、所述检测模块:检测辅助程序执行辅助二进制文件反馈到共享内存的路径值,与模糊测试中反馈到另一共享内存的边覆盖进行对比计算,识别间接调用信息。

6、为了实现上述目的,本发明还采取的技术方案是:一种基于辅助程序执行反馈的控制流构建方法,至少包括如下步骤:

7、s1,构造静态分析以及两种插桩代码:为待测程序中每个基本块分配唯一编号并记录,通过静态分析获得的基本块间调用关系结合基本块编号得到静态分析控制流信息;将包含同一静态分析的代码复制为两份,分别进行基本块粒度的插桩以计算边与路径的覆盖情况;

8、对于计算边覆盖的插桩,以基本块唯一编号为基础的算法计算执行边的哈希值并记录,自动记录其哈希值到共享内存中;

9、对于计算路径覆盖的插桩,使用以基本块唯一编号为基础的算法计算执行路径的哈希值并记录,自动记录其哈希值到另一共享内存中;

10、s2,编译并插桩待测程序:使用静态分析与插桩代码在编译时为待测程序分配每个基本块的唯一编号,并且插桩待测程序,使用边覆盖插桩代码编译的程序记作主二进制文件,使用路径覆盖插桩代码编译的程序记作辅助二进制文件;

11、s3,构造辅助程序协助控制流完整性检测过程:使用模糊测试器不断执行步骤s2后得到的主二进制文件并变异模糊测试的输入,在模糊测试第一次提供输入开始执行时,开启辅助程序使用当前输入执行步骤s2后得到的辅助二进制文件,根据其执行中在共享内存中的反馈,结合步骤s1后得到的静态分析代码获得的程序控制流信息检测并补充程序控制流完整性。

12、作为本发明的一种改进,所述步骤s1中,静态分析使用随机函数,为待测程序中每个基本块分配一个固定位的唯一编号,并按照对程序由模块到函数再到基本块级别的遍历顺序记录基本块索引与基本块唯一编号的对应关系,通过基本块之间静态分析得到的调用关系获得的控制流,结合基本块唯一编号预先计算所有程序中的跳转边,作为程序的静态分析控制流信息。

13、作为本发明的另一种改进,所述步骤s3中,模糊测试器不断执行不同的输入文件并在每次执行结束后查询共享内存,如果发现了所述共享内存中新的哈希值则说明当前输入文件发掘了新的边覆盖,开启辅助程序使用当前输入执行辅助二进制文件;如果没有捕获新的边覆盖,则使用模糊测试当前种子作为测试辅助二进制文件的替代。

14、作为本发明的另一种改进,所述边插桩以哈希函数hash1(bbidcurrent,bbidprevious)进行计算:

15、edgehash=hash1(bbidcurrent,bbidprevious)&edgeshmvalue

16、其中,edgehash为跳转边的哈希值,代表由前序基本块向当前基本块的跳转;bbidcurrent代表当前基本块的唯一编号,bbidprevious代表前序基本块的唯一编号,且bbidcurrent,bbidprevious的数值位于0到maxvalue之间,edgeshmvalue代表共享内存每一位的最大可存储数值,maxvalue表示基本块唯一编号可取的最大正整数。

17、作为本发明的又一种改进,所述路径插桩以哈希函数hash2(bbidcurrent,pathhash)进行计算:

18、pathhash=hash2(bbidcurrent,pathhash)&pathshmvalue

19、其中,pathhash为整条执行路径的哈希值,代表一次执行的完整执行流;bbidcurrent代表当前基本块唯一编号,且bbidcurrent位于0到maxvalue之间,pathhash的数值位于0到pathshmvalue之间;pathshmvalue代表共享内存每一位的最大可存储数值。

20、与现有技术相比,本发明具有的有益效果:

21、(1)控制流补齐:相比于目前以静态分析为基准的控制流完整性,本发明添加动态执行时对于程序控制流完整性的补充,并且使用唯一基本块编号和边哈希算法,一一对应静态分析控制流与动态执行时控制流的关系,使用进程监控接口检测真实的程序执行流,实现精确的控制流补齐。

22、(2)完整性校验:相比于目前仅能检测当前执行是否为静态分析中检测到控制流的方法,本发明在模糊测试过程中添加辅助程序,执行一个能够监控执行路径的插桩代码,能够在运行阶段通过模糊测试和辅助进程的反馈判断执行情况,能够在程序控制流图中获取真实执行位置与执行顺序,在校验中可以更精确的执行过程是否符合预期,从而完善软件的控制流完整性。

23、(3)为基于路径的模糊测试提供基础:相比于目前在执行主进程内使用污点分析的方法,本发明采用构造辅助二进制文件和辅助程序监视,通过分隔模糊测试主程序执行过程和辅助程序路径追溯过程,在以往工作基本块粒度或边粒度的基础上获得路径粒度的控制流信息,为基于路径覆盖引导的模糊测试工作提供了依据。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1