一种基于栈哈希的漏洞根因自动定位方法及系统技术方案

技术编号:39308925 阅读:11 留言:0更新日期:2023-11-12 15:55
本发明专利技术提出一种基于栈哈希的漏洞根因自动定位方法,包括:以输入数据对目标程序进行模糊测试,若输入数据导致该目标程序崩溃,则以输入数据为崩溃输入,反之则为非崩溃输入;获取崩溃输入和非崩溃输入于程序执行中,对应测试指令的指令信息和指令调用时的函数调用栈哈希值,作为谓词构建信息;基于所有输入数据的控制流转换,构建目标程序的控制流图,根据谓词构建信息和控制流图,为测试指令生成对应程序行为的谓词;以排序方式从谓词中选出根因谓词,以根因谓词对应的测试条件作为导致目标程序崩溃的解释。本发明专利技术还提出一种基于栈哈希的漏洞根因自动定位系统,以及一种实现基于栈哈希的漏洞根因自动定位的数据处理装置。栈哈希的漏洞根因自动定位的数据处理装置。栈哈希的漏洞根因自动定位的数据处理装置。

【技术实现步骤摘要】
一种基于栈哈希的漏洞根因自动定位方法及系统


[0001]本专利技术属于软件安全
,特别是涉及一种基于栈哈希的漏洞根因自动定位方法及系统。

技术介绍

[0002]计算机系统安全的主要威胁来自于软件漏洞。近年来,一些系统软件和重要开源组件中的漏洞出现频率增大,严重危害着软件生态。一方面,软件漏洞广泛存在于大部分软件中。另一方面,软件漏洞的潜在危害性很大,一旦被成功利用其造成的后果很严重。攻击者可以利用漏洞窃取或操纵敏感数据、将系统加入僵尸网络、安装后门或植入其它类型的恶意软件。所以,漏洞挖掘、漏洞根本原因定位和漏洞修复对提升软件安全意义重大。
[0003]在漏洞挖掘方面,模糊测试利用高吞吐量和被连续修改的输入来发现目标程序中的不同路径,目前已经成为漏洞挖掘的主流途径和一种功能强大的软件测试技术。随着模糊测试技术的发展,漏洞挖掘的效率获得极大提升,大量的软件漏洞被挖掘出来。然而,软件漏洞的根本原因定位与修复很困难,且依赖分析人员手动完成,导致软件漏洞挖掘的速度和漏洞修复的速度不平衡。大量的已经被发现的漏洞修复不及时,可能会被攻击者利用。
[0004]现有的软件漏洞根本原因定位的技术主要分为调试器(Debugger)、运行时内存错误检测(Sanitizer)、反向污点分析(BackwardTaintAnalysis)、崩溃输入探索(Crash Exploration)、符号执行(Symbolic Execution)五类。
[0005](1)借助调试器,分析人员可以从崩溃位置开始,自后往前地检查程序执行的所有指令,以及每条指令处的程序状态(如寄存器、内存、函数调用堆栈等)。分析人员通过手动跟踪程序状态,可以确定程序崩溃原因和根本原因。但是利用调试器进行程序根本原因定位对分析人员的要求极高。大型程序的代码量大、逻辑复杂,漏洞具有一定的复杂性,即便是专业人员,也需要花费大量的时间才能确定漏洞产生的根本原因。
[0006](2)Sanitizer使用编译时插桩技术,能够在运行时检测出各种软件故障。例如,MSAN(Memory Sanitizer)用于检测未初始化内存(Uninitialized Memory)的使用;ASAN(Address Sanitizer)用于检测堆缓冲区溢出(Heap Buffer Overflow)、栈缓冲区溢出(StackBuffer Overflow)、内存释放后重用(UseAfter Free)、内存重复释放(Double Free)等内存错误。相比调试器,Sanitizer提供更详细、更接近程序根本原因的程序崩溃信息。但是Sanitizer只能检测到内存错误,对非内存错误束手无策。另外,虽然Sanitizer提供比调试器更优秀的报错信息,但是它很难直接指出程序崩溃的根本原因和漏洞的发生条件。
[0007](3)反向污点分析技术从程序崩溃点开始污染数据,反向构建程序的控制流并识别导致程序崩溃的数据或者指令。利用反向污点分析技术进行程序根本原因定位的大量工作通常从核心转储文件(Core Dump)开始,重新执行程序并构建导致崩溃的数据流,为分析人员提供导致崩溃的相关指令。这些方法在崩溃不可复制的情况下很有用,但是绝大多数方法仅限于正确识别在根本原因和崩溃原因之间存在直接数据流依赖关系的漏洞。
[0008](4)模糊测试中的崩溃探索模式将一个崩溃输入作为种子,并通过变异生成新的崩溃输入。这些新产生的输入大多导致相同的崩溃,但是代码覆盖率的提升很可能导致相同的漏洞通过不同的代码路径触发。能够触发相同根本原因的崩溃但路径不同的多个输入,可以为开发人员提供对漏洞根本原因的新的认识。但是由于模糊测试的随机性,模糊器更可能添加或者删除与漏洞无关的代码来产生新的崩溃输入。而且,分析人员需要花费更多的精力分析和调试额外的崩溃输入。
[0009](5)在软件测试中,符号执行用于为程序的每个执行路径生成一个测试输入。一个程序的所有执行路径都可以使用执行树来表示。现有技术提出了基于符号执行的程序崩溃根本原因分析技术,分别针对缓冲区溢出、整数溢出(Integer Overflow)、内存释放后重用、内存重复释放、字符串格式化(Format String)五种漏洞形式实现基于符号分析的根本原因分析策略以及程序修复建议。但是该方法只能分析预设的漏洞模式,无法分析根本原因复杂的漏洞。
[0010]因此,现有的漏洞根本原因定位方法有的局限于某些漏洞类型,有的没有提供对漏洞的解释,难以在实际中应用。

技术实现思路

[0011]为解决上述现有漏洞根本原因自动定位技术的目标程序漏洞类型的局限性和缺乏对漏洞的解释的问题。针对上述问题,本专利技术提出一种基于栈哈希的漏洞根因自动定位方法,包括:以输入数据对目标程序进行模糊测试,根据测试结果,若该输入数据导致该目标程序崩溃,则以该输入数据为崩溃输入,反之则为非崩溃输入;获取该崩溃输入和该非崩溃输入于程序执行中,对应测试指令的指令信息和指令调用时的函数调用栈哈希值,作为谓词构建信息;基于所有该输入数据的控制流转换,构建该目标程序的控制流图,根据该谓词构建信息和该控制流图,为该测试指令生成对应程序行为的谓词;以排序方式从该谓词中选出根因谓词,以该根因谓词对应的测试条件作为导致该目标程序崩溃的解释。
[0012]本专利技术所述的漏洞根因自动定位方法,其中该谓词包括用于语义描述的布尔表达式、该测试指令的指令地址和谓词分数,该谓词分数表示表示当谓词结果为真的输入导致该目标程序崩溃的概率;对于每条测试指令,保留谓词分数具有最大值的谓词作为该测试指令的谓词。
[0013]本专利技术所述的漏洞根因自动定位方法,其中该谓词分数其中,P1表示崩溃输入的谓词预测结果正确的概率,P2表示非崩溃输入的谓词预测结果正确的概率。
[0014]本专利技术所述的漏洞根因自动定位方法,以谓词分数高于根因阈值的谓词及其所对应的测试指令为该根因谓词。
[0015]本专利技术还提出一种基于栈哈希的漏洞根因自动定位系统,包括:数据集构建模块,用于以输入数据对目标程序进行模糊测试,根据测试结果,若该输入数据导致该目标程序崩溃,则以该输入数据为崩溃输入,反之则为非崩溃输入;程序信息提取模块,用于获取该崩溃输入和该非崩溃输入于程序执行中,对应测试指令的指令信息和指令调用时的函数调用栈哈希值,作为谓词构建信息;谓词构建模块,用于基于所有该输入数据的控制流转换,
构建该目标程序的控制流图,根据该谓词构建信息和该控制流图,为该测试指令生成对应程序行为的谓词;谓词排序模块,用于以排序方式从该谓词中选出根因谓词,以该根因谓词对应的测试条件作为导致该目标程序崩溃的解释。
[0016]本专利技术所述的漏洞根因自动定位系统,其中该谓词包括用于语义描述的布尔表达式、该测试指令的指令地址和谓词分数,该谓词分数表示表示当谓词结果为真的输入导致该目标程序崩溃的概率;对于每条测试指令,保留谓词分数具有最大值的谓词作为该测试指令的谓词。
[0017]本专利技术所述的漏洞根因自动定位系统,其中该谓本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于栈哈希的漏洞根因自动定位方法,其特征在于,包括:以输入数据对目标程序进行模糊测试,根据测试结果,若该输入数据导致该目标程序崩溃,则以该输入数据为崩溃输入,反之则为非崩溃输入;获取该崩溃输入和该非崩溃输入于程序执行中,对应测试指令的指令信息和指令调用时的函数调用栈哈希值,作为谓词构建信息;基于所有该输入数据的控制流转换,构建该目标程序的控制流图,根据该谓词构建信息和该控制流图,为该测试指令生成对应程序行为的谓词;以排序方式从该谓词中选出根因谓词,以该根因谓词对应的测试条件作为导致该目标程序崩溃的解释。2.如权利要求1所述的漏洞根因自动定位方法,其特征在于,该谓词包括用于语义描述对应测试条件的布尔表达式、该测试指令的指令地址和谓词分数,该谓词分数表示表示当谓词结果为真的输入导致该目标程序崩溃的概率;对于每条测试指令,保留谓词分数具有最大值的谓词作为该测试指令的谓词。3.如权利要求2所述的漏洞根因自动定位方法,其特征在于,该谓词分数其中,P1表示崩溃输入的谓词预测结果正确的概率,P2表示非崩溃输入的谓词预测结果正确的概率。4.如权利要求2所述的漏洞根因自动定位方法,其特征在于,以谓词分数高于根因阈值的谓词为该根因谓词。5.一种基于栈哈希的漏洞根因自动定位系统,其特征在于,包括:数据集构建模块,用于以输入数据对目标程序进行模糊测试,根据测试结果,若该输入数据导致该目标程序崩溃,则以该输入数据为崩溃输入,反之则为非崩溃输入;程序信息提取模块,用...

【专利技术属性】
技术研发人员:武成岗康妍舒航王喆赖远明王伟
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:

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

1