一种应用程序漏洞的检测装置及方法制造方法及图纸

技术编号:38359099 阅读:10 留言:0更新日期:2023-08-05 17:29
本发明专利技术公开了一种应用程序漏洞的检测装置及方法,该装置包括:过程间控制流图构建模块、前向求解器、优化模块、后向求解器和流敏感路径生成器。该装置在前向求解器与后向求解器的传播过程中忽略了激活点,进而牺牲流敏感性,以避免大量数据流值被复制,减少了数据流值的数量,并通过流敏感路径生成器恢复流敏感性,利用深度搜索算法生成流敏感污点传播路径,保证了多求解器IFDS算法的性能和可扩展性,进而可以准确检测出待检测应用程序的漏洞。洞。洞。

【技术实现步骤摘要】
一种应用程序漏洞的检测装置及方法


[0001]本专利技术涉及软件安全
,尤其是涉及一种应用程序漏洞的检测装置及方法。

技术介绍

[0002]随着信息化的不断发展,软件对人们生活的影响越来越大,在国民经济和国防建设中具有越来越重要的地位。如何提高软件质量,保证其行为的可信性,是学术界和工业界共同关注的重要问题。要解决该问题,应加强软件开发过程管理,在全生命周期采取各种方法和技术提升软件质量。由于软件系统的复杂性,在编码实现完成之后,甚至在软件产品发布、被广泛使用之后,往往还有各种各样的缺陷和漏洞,各种软件测试和分析技术是发现这些缺陷、漏洞的有效手段。
[0003]程序分析指的是:对计算机程序进行自动化的处理,以确认或发现其特性,比如性能、正确性、安全性等程序分析的结果可用于编译优化、提供警告信息等,比如被分析程序在某处可能出现指针为空、数组下标越界的情形等。程序分析总体可以分为静态分析和动态分析,涉及的基础理论包括抽象解释、约束求解、自动推理等。数据流分析通过分析程序状态信息在控制流图中的传播来计算每个静态程序点(语句)在运行时可能出现的状态。
[0004]现有的数据流分析采用IFDS分析框架,即将检测应用程序对应的Java程序分析问题抽象为过程间可分配子集问题(inter

proceduralfinite,distributesubset,简称:IFDS),这些问题通常需要使用多个交互的IFDS求解器进行求解,IFDS分析框架解决了过程间、上下文敏感、流敏感的有限可分配子集问题,其中数据流值集D是有限的,传递函数F在meet算子上满足可分配性。
[0005]现有IFDS的实现采用了Tabulation算法,Tabulation算法为一种IFDS求解器,该算法解决了从程序的过程间CFG(控制流图)扩展而来的超图中的图可达性问题(过程间有效路径的可达性)。超图中的节点是每个程序点上的数据流值集(D)中的元素(节点<n,d>表示程序点n的数据流值d∈D),边E表示传递函数。当且仅当节点<n,d>从起始节点<s0,0>可达时,数据流值d在n处成立,其中s0为程序的入口点。在过程内,这相当于解决一个一般的图可达性问题。在过程间,分析要求从调用点传播到被调用的被调用函数f(通过调用边到f的CFG)的数据流值只能返回到同一调用点,即通过匹配调用边和返回边实现上下文敏感。
[0006]FlowDroid是最先进的基于IFDS的污点分析工具。超图G
#IP
中的每个节点表示程序点处的数据流值(即具有固定长度的访问路径),并且沿程序的ICFG(过程间控制流图)传播数据流值。meet算子为∪,因为如果访问路径在其任何传入的控制流路径中被污染,则访问路径在连接点处被视为被污染。在FlowDroid中,前向IFDS求解器向前传播污点值,每当污点值被分配到堆位置(如字段或数组)时,就会产生后向IFDS求解器,用于搜索别名。通过向后向求解器注入上下文来提高上下文敏感性。当后向IFDS求解器发现别名污点值时,会产生一个新的前向IFDS求解器。对于流敏感性,数据流值用一个激活点(即后向IFDS求解器的启动程序点)进行扩展,并且只有当一个值到达激活点时才被认为是污点。
[0007]但是FlowDroid的数据流值的数量过多,导致分析过程中内存和时间消耗过多,从而影响多求解器IFDS算法的性能和可扩展性,使其无法分析较大的应用程序,从而无法正常检测出存在的漏洞。

技术实现思路

[0008]因此,本专利技术要解决的技术问题在于克服现有IFDS算法中数据流值的数量过多影响多求解器IFDS算法的性能和可扩展性,从而无法正常检测出存在的漏洞的缺陷,从而提供一种应用程序漏洞的检测装置及方法。
[0009]第一方面,本专利技术实施例公开了一种应用程序漏洞的检测装置,过程间控制流图构建模块、前向求解器、优化模块、后向求解器和流敏感路径生成器;
[0010]所述过程间控制流图构建模块,用于获取待检测应用程序,并基于所述待检测应用程序构建过程间控制流图;
[0011]所述前向求解器,用于获取污点数据流值,基于所述过程间控制流图前向传播所述污点数据流值,当所述污点数据流值被分配至预设堆位置时,将所述污点数据流值发送给所述优化模块;
[0012]所述优化模块,用于接收并发送所述污点数据流值给所述后向求解器;
[0013]所述后向求解器,用于接收所述污点数据流值,并根据所述污点数据流值后向搜索别名;
[0014]所述流敏感路径生成器,用于基于所述前向求解器前向传播污点数据流值确定前向传播路径,基于所述后向求解器后向搜索所述别名确定后向搜索路径,并基于所述前向传播路径与所述后向搜索路径,利用深度搜索算法生成流敏感污点传播路径,以及基于所述流敏感污点传播路径对所述待检测应用程序进行漏洞检测。
[0015]本专利技术提供的一种应用程序漏洞的检测装置,在前向求解器与后向求解器的传播过程中忽略了激活点,进而牺牲流敏感性,以避免大量数据流值被复制,减少了数据流值的数量,并通过流敏感路径生成器恢复流敏感性,生成流敏感污点传播路径,保证了多求解器IFDS算法的性能和可扩展性,进而可以准确检测出待检测应用程序的漏洞。
[0016]可选地,所述过程间控制流图中包括至少一个程序点;
[0017]所述前向求解器,还用于确定所述过程间控制流图中的初始污点节点和路径边,以及,基于所述程序点类型,将所述污点数据流值从所述初始污点节点起始,沿所述路径边的方向前向传播,所述初始污点节点是所述至少一个程序点之一。
[0018]可选地,所述前向求解器,还用于当所述程序点类型为堆访问节点时,所述污点数据流值被分配给预设堆位置。
[0019]可选地,所述前向求解器,还用于当所述程序点类型为调用语句或函数出口时,则利用摘要函数将所述污点数据流值传输给下一程序点。
[0020]可选地,所述流敏感路径生成器,还用于利用所述深度搜索算法确定所述过程间控制流图中控制流不可达的路径,并删除所述控制流不可达的路径。
[0021]可选地,所述流敏感路径生成器,还用于利用所述深度搜索算法确定所述前向传播路径与所述后向搜索路径中数据流不可达的路径,并删除所述数据流不可达的路径。
[0022]可选地,还包括:报告模块;
[0023]所述报告模块,用于基于所述待检测应用程序的漏洞检测结果生成报告,将所述报告发送给用户。
[0024]第二方面,本专利技术实施例还公开了一种应用程序漏洞的检测方法,所述方法包括:
[0025]获取待检测应用程序,并基于所述待检测应用程序构建过程间控制流图;
[0026]获取污点数据流值,基于所述过程间控制流图前向传播污点数据流值,当所述污点数据流值被分配至预设堆位置时,确定前向传播路径;
[0027]基于所述污点数据流值后向搜索别名,确定本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种应用程序漏洞的检测装置,其特征在于,所述装置包括:过程间控制流图构建模块、前向求解器、优化模块、后向求解器和流敏感路径生成器;所述过程间控制流图构建模块,用于获取待检测应用程序,并基于所述待检测应用程序构建过程间控制流图;所述前向求解器,用于获取污点数据流值,基于所述过程间控制流图前向传播所述污点数据流值,当所述污点数据流值被分配至预设堆位置时,将所述污点数据流值发送给所述优化模块;所述优化模块,用于接收并发送所述污点数据流值给所述后向求解器;所述后向求解器,用于接收所述污点数据流值,并根据所述污点数据流值后向搜索别名;所述流敏感路径生成器,用于基于所述前向求解器前向传播污点数据流值确定前向传播路径,基于所述后向求解器后向搜索所述别名确定后向搜索路径,并基于所述前向传播路径与所述后向搜索路径,利用深度搜索算法生成流敏感污点传播路径,以及基于所述流敏感污点传播路径对所述待检测应用程序进行漏洞检测。2.根据权利要求1所述的装置,其特征在于,所述过程间控制流图中包括至少一个程序点;所述前向求解器,还用于确定所述过程间控制流图中的初始污点节点和路径边,以及,基于所述程序点类型,将所述污点数据流值从所述初始污点节点起始,沿所述路径边的方向前向传播,所述初始污点节点是所述至少一个程序点之一。3.根据权利要求2所述的装置,其特征在于,所述前向求解器,还用于当所述程序点类型为堆访问节点时,所述污点数据流值被分配给预设堆位置。4.根据权利要求2所述的装置,其特征在于,所述前向求解器,还用于当所述程序点类型为调...

【专利技术属性】
技术研发人员:李昊峰刘晨曹立庆孟海宁陆杰李炼高琳
申请(专利权)人:中科天齐山西软件安全技术研究院有限公司
类型:发明
国别省市:

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

1