CN113010891B - 一种应用程序安全检测方法、装置、电子设备和存储介质 - Google Patents
一种应用程序安全检测方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN113010891B CN113010891B CN202110287918.9A CN202110287918A CN113010891B CN 113010891 B CN113010891 B CN 113010891B CN 202110287918 A CN202110287918 A CN 202110287918A CN 113010891 B CN113010891 B CN 113010891B
- Authority
- CN
- China
- Prior art keywords
- memory
- path
- edge
- application program
- path edge
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种应用程序安全检测方法、装置、电子设备和存储介质,该方法包括:从内存中获取待检测应用程序对应的常用路径边;根据各常用路径边对应的函数、源数据流值和/或目的数据流值,对常用路径边进行分组,得到有序的多个路径边集合;监控内存当前的存储量与预设的存储阈值之间的关系;当内存当前的存储量大于预设的存储阈值时,根据各路径边集合对应的顺序,按照预设交换比率在内存中选取待交换路径边集合,并将所选取的待交换路径边集合交换至磁盘。上述方案提供的安全检测方法,通过采用磁盘辅助的方式存储常用路径边,节省了内存资源,提高了IFDS算法的扩展性。
Description
技术领域
本申请涉及网络安全技术领域,尤其涉及一种应用程序安全检测方法、装置、电子设备和存储介质。
背景技术
目前,为了对应用程序进行安全检测,通常将检测应用程序对应的Java程序分析问题抽象为过程间分布式子集问题(inter-procedural finite,distribute subset,简称:IFDS),根据IFDS分析结果确定应用程序的安全性。
但是,IFDS算法是内存密集型算法,对于某些应用程序,需要超过100GB的RAM内存预算,内存消耗较大。实践中,大容量内存需求明显限制了基于IFDS的工具的部署。
发明内容
本申请提供一种应用程序安全检测方法、装置、电子设备和存储介质,以解决现有技术的内存需求较高等缺陷。
本申请第一个方面提供一种应用程序安全检测方法,包括:
从内存中获取待检测应用程序对应的常用路径边;
根据各常用路径边对应的函数、源数据流值和/或目的数据流值,对所述常用路径边进行分组,得到有序的多个路径边集合;
监控所述内存当前的存储量与预设的存储阈值之间的关系;
当所述内存当前的存储量大于预设的存储阈值时,根据各路径边集合对应的顺序,按照预设交换比率在所述内存中选取待交换路径边集合,并将所选取的待交换路径边集合交换至磁盘。
可选的,还包括:
当磁盘中存储的任一路径边集合中任一路径边被访问时,将所述路径边所属的路径边集合交换回内存。
可选的,在从内存中获取待检测应用程序对应的常用路径边之前,所述方法还包括:
获取待检测应用程序;
根据所述待检测应用程序构建过程间控制流程图;
利用预设的IFDS算法对所述过程间控制流程图做可达性分析,以生成对应的路径边;
将所生成的路径边作为常用路径边存储至内存。
可选的,在从内存中获取待检测应用程序对应的常用路径边之前,所述方法还包括:
获取待检测应用程序和所述待检测应用程序的别名信息;
根据所述待检测应用程序构建过程间控制流程图;
利用预设的IFDS算法对所述过程间控制流程图做可达性分析,以生成对应的路径边;
在进行可达性分析过程中,根据得到的路径边所对应的语句类型和/或所述别名信息,确定常用路径边,将所述常用路径边存储至内存。
可选的,所述根据得到的路径边所对应的语句类型,确定常用路径边,包括:
判断所述路径边所对应的语句类型是否为循环语句或调用语句;
当所述路径边对应的语句类型为循环语句或调用语句时,确定所述路径边为常用路径边。
可选的,所述根据所述别名信息,确定常用路径边,包括:
根据所述别名信息,判断是否有与所得到的路径边的目标节点存在别名关系的关联节点;
若有,则生成所述目标节点与关联节点之间的路径边,并将所述路径边作为常用路径边存储至内存。
可选的,还包括:
根据可达性分析结果,确定所述待检测应用程序对应的可达路径;
根据所述可达路径,判断所述待检测应用程序是否有敏感数据达到泄漏点;
当有敏感数据到达泄漏点时,根据内存中的常用路径边进行溯源分析,以得到对应的溯源分析结果。
本申请第二个方面提供一种应用程序安全检测装置,包括:
获取模块,用于从内存中获取待检测应用程序对应的常用路径边;
分组模块,用于根据各常用路径边对应的函数、源数据流值和/或目的数据流值,对所述常用路径边进行分组,得到有序的多个路径边集合;
监控模块,用于监控所述内存当前的存储量与预设的存储阈值之间的关系;
交换模块,用于当所述内存当前的存储量大于预设的存储阈值时,根据各路径边集合对应的顺序,按照预设交换比率在所述内存中选取待交换路径边集合,并将所选取的待交换路径边集合交换至磁盘。
可选的,所述交换模块,还用于:
当磁盘中存储的任一路径边集合中任一路径边被访问时,将所述路径边所属的路径边集合交换回内存。
可选的,所述获取模块,还用于:
获取待检测应用程序;
根据所述待检测应用程序构建过程间控制流程图;
利用预设的IFDS算法对所述过程间控制流程图做可达性分析,以生成对应的路径边;
将所生成的路径边作为常用路径边存储至内存。
可选的,所述获取模块,还用于:
获取待检测应用程序和所述待检测应用程序的别名信息;
根据所述待检测应用程序构建过程间控制流程图;
利用预设的IFDS算法对所述过程间控制流程图做可达性分析,以生成对应的路径边;
在进行可达性分析过程中,根据得到的路径边所对应的语句类型和/或所述别名信息,确定常用路径边,将所述常用路径边存储至内存。
可选的,所述获取模块,具体用于:
判断所述路径边所对应的语句类型是否为循环语句或调用语句;
当所述路径边对应的语句类型为循环语句或调用语句时,确定所述路径边为常用路径边。
可选的,所述获取模块,具体用于:
根据所述别名信息,判断是否有与所得到的路径边的目标节点存在别名关系的关联节点;
若有,则生成所述目标节点与关联节点之间的路径边,并将所述路径边作为常用路径边存储至内存。
可选的,所述装置还包括检测模块,用于:
根据可达性分析结果,确定所述待检测应用程序对应的可达路径;
根据所述可达路径,判断所述待检测应用程序是否有敏感数据达到泄漏点;
当有敏感数据到达泄漏点时,根据内存中的常用路径边进行溯源分析,以得到对应的溯源分析结果。
本申请第三个方面提供一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一个方面以及第一个方面各种可能的设计所述的方法。
本申请第四个方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一个方面以及第一个方面各种可能的设计所述的方法。
本申请技术方案,具有如下优点:
本申请提供的应用程序安全检测方法、装置、电子设备和存储介质,通过从内存中获取待检测应用程序对应的常用路径边;根据各常用路径边对应的函数、源数据流值和/或目的数据流值,对常用路径边进行分组,得到有序的多个路径边集合;监控内存当前的存储量与预设的存储阈值之间的关系;当内存当前的存储量大于预设的存储阈值时,根据各路径边集合对应的顺序,按照预设交换比率在内存中选取待交换路径边集合,并将所选取的待交换路径边集合交换至磁盘。上述方案提供的安全检测方法,通过采用磁盘辅助的方式存储常用路径边,节省了内存资源,提高了IFDS算法的扩展性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例基于的应用程序安全检测系统的结构示意图;
图2为本申请实施例提供的应用程序安全检测方法的流程示意图;
图3为本申请实施例提供的示例性的应用程序路径边结构示意图;
图4为本申请实施例提供的示例性的应用程序安全检测方法的流程示意图;
图5为本申请实施例提供的应用程序安全检测装置的结构示意图;
图6为本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对本申请所涉及的名词进行解释:
路径边:以某条语句的数据流值为节点,连接另一条语句的某个数据流值构成的节点,这样的边称为路径边。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
目前,为了对应用程序进行安全检测,通常将检测应用程序对应的Java程序分析问题抽象为过程间分布式子集问题(inter-procedural finite,distribute subset,简称:IFDS),根据IFDS分析结果确定应用程序的安全性。但是,IFDS算法是内存密集型算法,对于某些应用程序,需要超过100GB的RAM内存预算,内存消耗较大。实践中,大容量内存需求明显限制了基于IFDS的工具的部署。
针对上述问题,本申请实施例提供的应用程序安全检测方法、装置、电子设备和存储介质,通过从内存中获取待检测应用程序对应的常用路径边;根据各常用路径边对应的函数、源数据流值和/或目的数据流值,对常用路径边进行分组,得到有序的多个路径边集合;监控内存当前的存储量与预设的存储阈值之间的关系;当内存当前的存储量大于预设的存储阈值时,根据各路径边集合对应的顺序,按照预设交换比率在内存中选取待交换路径边集合,并将所选取的待交换路径边集合交换至磁盘。上述方案提供的安全检测方法,通过采用磁盘辅助的方式存储常用路径边,节省了内存资源,提高了IFDS算法的扩展性。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明实施例进行描述。
首先,对本申请所基于的应用程序安全检测系统的结构进行说明:
本申请实施例提供的应用程序安全检测方法、装置、电子设备和存储介质,适用于终端设备,以对终端设备中的应用程序的信息泄露情况进行检测。如图1所示,为本申请实施例基于的应用程序安全检测系统的结构示意图,主要包括程序采集装置、内存和用于进行安全检测的应用程序安全检测装置。具体地,程序采集装置用于采集正在运行的待检测应用程序,并将其发送至应用程序安全检测装置,该装置将待检测应用程序对应的常用路径边存储至内存。
本申请实施例提供了一种应用程序安全检测方法,用于对应用程序的信息泄露情况进行检测。本申请实施例的执行主体为电子设备,比如服务器、台式电脑、笔记本电脑、平板电脑及其他可用于对应用程序进行安全检测的电子设备。
如图2所示,为本申请实施例提供的应用程序安全检测方法的流程示意图,该方法包括:
步骤201,从内存中获取待检测应用程序对应的常用路径边。
需要解释的是,当预设的IFDS算法对待检测应用程序的过程间控制流程图做可达性分析时,生成对应的路径边,并自动将这些路径边存储至内存。
具体地,在一实施例中,在从内存中获取待检测应用程序对应的常用路径边之前,该方法还包括:获取待检测应用程序;根据待检测应用程序构建过程间控制流程图;利用预设的IFDS算法对过程间控制流程图做可达性分析,以生成对应的路径边;将所生成的路径边作为常用路径边存储至内存。
需要解释的是,终端设备中可以设有多个应用程序,待检测应用程序具体可以指正在执行的至少一个应用程序。
其中,具体可以采用现有的过程间控制流程图构建工具,构建待检测应用程序对应的过程间控制流程图。路径边的生成过程具体参考现有的IFDS算法,本申请实施例不做限定。
步骤202,根据各常用路径边对应的函数、源数据流值和/或目的数据流值,对常用路径边进行分组,得到有序的多个路径边集合。
示例性的,本申请实施例提供了如下分组规则:
根据函数进行分组:按包含函数即{<sm,*>→<*,*>}分组的路径边;
根据函数+源数据流值进行分组:按源节点,即{<sm,d>→<*,*>}分组的路径边;
根据函数+目标数据流值进行分组:按其包含函数和目标节点的数据流值,即{<sm,*>→<*,d>}分组的路径边;
根据源数据流值分组:按源节点的数据流值,即{<*,d>→<*,*>}分组的路径边;
根据目标数据流值分组:按目标节点的数据流值,即{<*,*>→<*,d>}分组的路径边。
其中,根据实验结果,按源数据流值分组策略具有最佳的总体性能。按函数分组策略将太多的路径边组合在一起。因此,每次磁盘访问都需要花很长的时间才能将大量路径边加载到内存中,导致超时频繁(3小时内)。另一方面,按函数+源数据流值以及按函数+目标数据流值分组中只有很少的路径边,导致磁盘访问频繁和性能较差。
步骤203,监控内存当前的存储量与预设的存储阈值之间的关系。
具体地,可以利用预设的数据采集装置,实时采集内存当前的存储量,以监控内存当前的存储量与预设的存储阈值之间的关系。
步骤204,当内存当前的存储量大于预设的存储阈值时,根据各路径边集合对应的顺序,按照预设交换比率在内存中选取待交换路径边集合,并将所选取的待交换路径边集合交换至磁盘。
其中,存储阈值和交换比率可以根据实际情况进行设定。示例性的,若存储阈值为90%,交换比率为50%,则当内存当前的存储量超出90%时,从WorkList末尾抽取待交换路径边集合,并将其交换至磁盘,直至交换比率达到50%为止。
需要解释的是,待检测应用程序对应的路径边是插入在WorkList中的,并且按照各路径边的生成顺序排列,即WorkList是一种存储路径边的队列。
具体地,本申请实施例的目的是以最低的成本,高效地将内存中的数据交换到磁盘,具体可以将紧密访问的数据组合在一起,以便可以将数据批量存储到磁盘/从磁盘批量加载。
具体地,将紧密访问的数据(函数、源数据流值和/或目的数据流值相同)对应的路径边划分为一组,以得到对应的路径边集合。将路径边进行分组存储。
相应的,在一实施例中,当磁盘中存储的任一路径边集合中任一路径边被访问时,将路径边所属的路径边集合交换回内存。
具体地,本申请实施例将WorkList中排序靠前的路径边称为活跃路径边,因为这些路径边即将被访问,因此,需将这些活跃路径边保留在内存中。然而大多数路径边仅被访问一次。因此,将所有不活跃边交换到磁盘是合理的,因为这些路径边已被访问,再次被访问的可能性较小。
示例性的,DiskDroid分组交换路径边,符号g(p)表示路径边p的组。在PathEdge中存储p意味着整个组g(p)也在内存中。有时将所有活跃的组都保存在内存中是不够的。因此,本申请实施例强制执行交换比率,即要交换出的内存组的百分比。本申请实施例选择交换出g(p),其中p位于WorkList的末尾,直到达到交换比率(默认为50%)。由于WorkList是一个有序队列,最后访问队列末尾的路径边。因此,本申请实施例首先交换出去WorkList的尾部的路径边集合。
其中,为了分组交换路径边,本申请实施例将散列映射PathEdge重新组织为两级映射。第一级映射的key用于对路径边进行分组,值是边的组,以原形式实现为散列映射。路径边组以单独的文件存储在磁盘中,其名称由组key唯一标识。此外,新创建的路径边组与从磁盘加载的组(旧PathEdge)分离,存储在新PathEdge中。本申请实施例提供了一种将路径边组写入磁盘的有效方法:丢弃OldPathEdge中的组,并将NewPathEdge中的组附加到由其key唯一标识的文件中。其中,路径边由3个整数值存储,一个针对源数据流值,一个针对目标数据流值,一个针对目标位置。本申请实施例维护一个散列映射以及一个数组,以获得数据流值的整数,并有效地从整数中恢复数据流值。本申请实施例采用JDK API缓冲数据输入流和缓冲输出流读/写文件。
示例性的,当内存使用率(内存当前的存储量)超出到给定内存预算的90%时,触发磁盘交换进程。为了交换出不活跃的组(组具体指上述路径边集合),首先遍历WorkList以获取所有活跃组的key。然后,根据新PathEdge、旧PathEdge,Incoming以及EndSum四种结构,将所有非活跃组(包括路径边组,以及Incoming和EndSum中的分组数据)交换出去。当达到交换比率时,调用system.gc()回收没有引用的对象的内存。
在上述实施例的基础上,为了进一步节省内存资源,作为一种可实施的方式,在一实施例中,在从内存中获取待检测应用程序对应的常用路径边之前,该方法还包括:
步骤301,获取待检测应用程序和待检测应用程序的别名信息;
步骤302,根据待检测应用程序构建过程间控制流程图;
步骤303,利用预设的IFDS算法对过程间控制流程图做可达性分析,以生成对应的路径边;
步骤304,在进行可达性分析过程中,根据得到的路径边所对应的语句类型和/或别名信息,确定常用路径边,将常用路径边存储至内存。
具体地,本申请实施例提供的应用程序安全检测方法,通过在将IFDS算法所生成的路径边存储至内存之前,首先确定所生成的路径边是否为常用路径边,并仅将常用路径边存储至内存,从而节省了内存资源。
具体地,在一实施例中,根据得到的路径边所对应的语句类型,确定常用路径边,包括:
步骤3041,判断路径边所对应的语句类型是否为循环语句或调用语句;
步骤3042,当路径边对应的语句类型为循环语句或调用语句时,确定路径边为常用路径边。
其中,如图3所示,为本申请实施例提供的示例性的应用程序路径边结构示意图。
具体地,由于循环语句通常执行次数较多,且导致循环的路径边循环传播,因此为了避免IFDS算法出现重复分析等情况,将循环语句作为常用语句。若n是循环的第一条语句,例如图3中的第6行语句,该语句为循环语句。如果不存储导致循环的路径边,分析可能会在循环中永远传播路径边,并且永远不会终止。若p来自于过程间边,即n是一个函数入口,例如图3中的第11行语句,该语句为函数调用语句,或者n是一个出口节点,其中d与proc(n)的形式参数有关,或者n是一个返回点,其中d与调用点的实际参数有关。过程间流通常会产生很高的重新计算开销。例如,在函数入口处重新计算路径边可能会导致被调用函数中的所有其他路径边均被重新计算。
具体地,经实验证明,上述实施例提供的应用程序安全检测方法中的IFDS算法与原IFDS算法在处理路径边时会生成相同的路径边集,即两种算法收集的常被访问边集相同。并且,本申请实施例提供的IFDS算法收集所有常被访问边时,由于循环/函数入口处的路径边是HotEdge,因此WorkList中的剩余路径边只能沿前向CFG边传播。因此,如果在传播p中生成p′,则p′不能生成路径边p。最终,WorkList为空集,算法终止。即本申请实施例提供的通过HotEdge选择器优化的IFDS算法是可靠的,并且可以终止。
具体地,在一实施例中,根据别名信息,确定常用路径边,包括:
步骤3043,根据别名信息,判断是否有与所得到的路径边的目标节点存在别名关系的关联节点;
步骤3044,若有,则生成目标节点与关联节点之间的路径边,并将路径边作为常用路径边存储至内存。
需要解释的是,主要可以根据别名信息判断是否存在“A=B”的情况,若存在,则确定有与节点A存在别名关系的关联节点(节点B)。
进一步地,在一实施例中,可以生成以关联节点为源节点的路径边,并将路径边作为常用路径边存储至内存。
其中,图3中的第5行语句对应的路径边为目标节点01.g与对应的关联节点02.f.g之间的路径边。
示例性的,若路径边p=<*,*>→<n,d>,其中,p来自于污点分析工具FlowDroid中的后向IFDS传播。将污染值存储到对象字段时,FlowDroid开始后向传播以搜索别名,在后向传播中标识的别名生成新的路径边(目标节点与关联节点之间的路径边),然后前向传播。每当后向IFDS传播生成新路径边<*,*>→<n,d>时,本申请实施例将新边<n,d>存储在散列映射中,其中d∈D[n]。若d′∈D[n′],则路径边<*,*>→<n′,d′>被视为HotEdge,提高了HotEdge查询效率。因此,本申请实施例提供的常用路径确定方法可以显著提高IFDS算法的性能。
具体地,在一实施例中,该方法还包括:
步骤401,根据可达性分析结果,确定待检测应用程序对应的可达路径;
步骤402,根据可达路径,判断待检测应用程序是否有敏感数据达到泄漏点;
步骤403,当有敏感数据到达泄漏点时,根据内存中的常用路径边进行溯源分析,以得到对应的溯源分析结果。
相反的,在一实施例中,当没有敏感数据到达泄漏点时,确定待检测应用程序没有发生信息泄露。
具体地,当确定待检测应用程序发生了信息泄露时,相关管理人员可以根据得到的溯源分析结果,针对性地解决信息泄露问题。
其中,基于本申请实施例提供的基于的磁盘辅助的IFDS算法,本申请实施例配套提供了一个新的污点分析工具:DiskDroid,具体可以用于检测Android应用程序中的信息泄露。在利用18个应用程序分别对DiskDroid和现有的污点分析工具FlowDroid进行测试时,FlowDroid需要使用10到60GB的RAM,而DiskDroid可以用不足10GB的RAM对它们进行分析,同时DiskDroid的性能比FlowDroid略微提高了11.2%。此外,对于22个应用程序,FlowDroid需要超过60GB的RAM,而在10GB的RAM下,DiskDroid可以在3小时内分析每个应用程序,这使得该工具可部署到个人桌面电脑。
示例性的,如图4所示,为本申请实施例提供的示例性的应用程序安全检测方法的流程示意图。其中,HotEdge表示常用路径边。图4所示的应用程序安全检测方法为图2所示的方法的一种示例性的实现方式,二者实现原理相同,在此不再赘述。
本申请实施例提供的应用程序安全检测方法,通过从内存中获取待检测应用程序对应的常用路径边;根据各常用路径边对应的函数、源数据流值和/或目的数据流值,对常用路径边进行分组,得到有序的多个路径边集合;监控内存当前的存储量与预设的存储阈值之间的关系;当内存当前的存储量大于预设的存储阈值时,根据各路径边集合对应的顺序,按照预设交换比率在内存中选取待交换路径边集合,并将所选取的待交换路径边集合交换至磁盘。上述方案提供的安全检测方法,通过采用磁盘辅助的方式存储常用路径边,节省了内存资源,提高了IFDS算法的扩展性。并且,内存中所存储的常用路径边是有选择地存储的,而不是IFDS算法生成的全部路径边,进一步节省了内存资源。
本申请实施例提供了一种应用程序安全检测装置,用于执行上述实施例提供的应用程序安全检测方法。
如图5所示,为本申请实施例提供的应用程序安全检测装置的结构示意图。该应用程序安全检测装置50包括获取模块51、分组模块52、监控模块53和交换模块54。
其中,获取模块,用于从内存中获取待检测应用程序对应的常用路径边;分组模块,用于根据各常用路径边对应的函数、源数据流值和/或目的数据流值,对常用路径边进行分组,得到有序的多个路径边集合;监控模块,用于监控内存当前的存储量与预设的存储阈值之间的关系;交换模块,用于当内存当前的存储量大于预设的存储阈值时,根据各路径边集合对应的顺序,按照预设交换比率在内存中选取待交换路径边集合,并将所选取的待交换路径边集合交换至磁盘。
关于本实施例中的应用程序安全检测装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例提供的应用程序安全检测装置,用于执行上述实施例提供的应用程序安全检测方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种电子设备,用于执行上述实施例提供的应用程序安全检测方法。
如图6所示,为本申请实施例提供的电子设备的结构示意图。该电子设备60包括:至少一个处理器61和存储器62;
存储器存储计算机执行指令;至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行如上实施例提供的应用程序安全检测方法。
本申请实施例提供的一种电子设备,用于执行上述实施例提供的应用程序安全检测方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上任一实施例提供的应用程序安全检测方法。
本申请实施例的包含计算机可执行指令的存储介质,可用于存储前述实施例中提供的应用程序安全检测方法的计算机执行指令,其实现方式与原理相同,不再赘述。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (9)
1.一种应用程序安全检测方法,其特征在于,包括:
从内存中获取待检测应用程序对应的常用路径边;
根据各常用路径边对应的函数、源数据流值和/或目的数据流值,对所述常用路径边进行分组,得到有序的多个路径边集合;
监控所述内存当前的存储量与预设的存储阈值之间的关系;
当所述内存当前的存储量大于预设的存储阈值时,根据各路径边集合对应的顺序,按照预设交换比率在所述内存中选取待交换路径边集合,并将所选取的待交换路径边集合交换至磁盘;
所述方法还包括:
根据可达性分析结果,确定所述待检测应用程序对应的可达路径;
根据所述可达路径,判断所述待检测应用程序是否有敏感数据达到泄漏点;
当有敏感数据到达泄漏点时,根据内存中的常用路径边进行溯源分析,以得到对应的溯源分析结果;
其中,所述路径边为以某条语句的数据流值为节点,连接另一条语句的某个数据流值构成的节点的边。
2.根据权利要求1所述的方法,其特征在于,还包括:
当磁盘中存储的任一路径边集合中任一路径边被访问时,将所述路径边所属的路径边集合交换回内存。
3.根据权利要求1所述的方法,其特征在于,在从内存中获取待检测应用程序对应的常用路径边之前,所述方法还包括:
获取待检测应用程序;
根据所述待检测应用程序构建过程间控制流程图;
利用预设的IFDS算法对所述过程间控制流程图做可达性分析,以生成对应的路径边;
将所生成的路径边作为常用路径边存储至内存。
4.根据权利要求1所述的方法,其特征在于,在从内存中获取待检测应用程序对应的常用路径边之前,所述方法还包括:
获取待检测应用程序和所述待检测应用程序的别名信息;
根据所述待检测应用程序构建过程间控制流程图;
利用预设的IFDS算法对所述过程间控制流程图做可达性分析,以生成对应的路径边;
在进行可达性分析过程中,根据得到的路径边所对应的语句类型和/或所述别名信息,确定常用路径边,将所述常用路径边存储至内存。
5.根据权利要求4所述的方法,其特征在于,所述根据得到的路径边所对应的语句类型,确定常用路径边,包括:
判断所述路径边所对应的语句类型是否为循环语句或调用语句;
当所述路径边对应的语句类型为循环语句或调用语句时,确定所述路径边为常用路径边。
6.根据权利要求4所述的方法,其特征在于,所述根据所述别名信息,确定常用路径边,包括:
根据所述别名信息,判断是否有与所得到的路径边的目标节点存在别名关系的关联节点;
若有,则生成所述目标节点与关联节点之间的路径边,并将所述路径边作为常用路径边存储至内存。
7.一种应用程序安全检测装置,其特征在于,包括:
获取模块,用于从内存中获取待检测应用程序对应的常用路径边;
分组模块,用于根据各常用路径边对应的函数、源数据流值和/或目的数据流值,对所述常用路径边进行分组,得到有序的多个路径边集合;
监控模块,用于监控所述内存当前的存储量与预设的存储阈值之间的关系;
交换模块,用于当所述内存当前的存储量大于预设的存储阈值时,根据各路径边集合对应的顺序,按照预设交换比率在所述内存中选取待交换路径边集合,并将所选取的待交换路径边集合交换至磁盘;
所述装置还包括检测模块,用于:
根据可达性分析结果,确定所述待检测应用程序对应的可达路径;
根据所述可达路径,判断所述待检测应用程序是否有敏感数据达到泄漏点;
当有敏感数据到达泄漏点时,根据内存中的常用路径边进行溯源分析,以得到对应的溯源分析结果;
其中,所述路径边为以某条语句的数据流值为节点,连接另一条语句的某个数据流值构成的节点的边。
8.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至6任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110221126 | 2021-02-26 | ||
CN2021102211261 | 2021-02-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113010891A CN113010891A (zh) | 2021-06-22 |
CN113010891B true CN113010891B (zh) | 2023-02-07 |
Family
ID=76409400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110287918.9A Active CN113010891B (zh) | 2021-02-26 | 2021-03-17 | 一种应用程序安全检测方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113010891B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113734665A (zh) * | 2021-09-29 | 2021-12-03 | 夏日阳光智能科技(苏州)有限公司 | 一种ai智能垃圾机器人智能收纳垃圾袋控制方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073587A (zh) * | 2010-12-27 | 2011-05-25 | 北京邮电大学 | 一种程序中不可达路径的静态检测方法 |
CN105608003A (zh) * | 2015-12-17 | 2016-05-25 | 西安电子科技大学 | 基于控制流分析和数据流分析的Java程序静态分析方法 |
CN106778254A (zh) * | 2016-11-24 | 2017-05-31 | 四川无声信息技术有限公司 | 隐私泄露检测方法及系统 |
CN106940773A (zh) * | 2017-01-10 | 2017-07-11 | 西安电子科技大学 | 基于静态污点数据分析的隐私泄漏漏洞检测确认方法 |
CN109426722A (zh) * | 2017-09-01 | 2019-03-05 | 深圳市源伞新科技有限公司 | Sql注入缺陷检测方法、系统、设备及存储介质 |
CN109656779A (zh) * | 2018-12-07 | 2019-04-19 | 广州市百果园信息技术有限公司 | 内存监控方法、装置、终端和存储介质 |
CN110633434A (zh) * | 2019-07-19 | 2019-12-31 | 北京无限光场科技有限公司 | 一种页面缓存方法、装置、电子设备及存储介质 |
CN111102980A (zh) * | 2019-11-14 | 2020-05-05 | 广东博智林机器人有限公司 | 路径生成方法、装置及电子设备 |
CN111382427A (zh) * | 2020-01-06 | 2020-07-07 | 宁波中科天齐信息技术有限公司 | 基于变量关联规则的缓冲区溢出检测方法 |
CN111723382A (zh) * | 2020-07-24 | 2020-09-29 | 江西师范大学 | 动态Android程序漏洞验证方法和装置 |
CN111813675A (zh) * | 2020-07-08 | 2020-10-23 | 北京嘀嘀无限科技发展有限公司 | Ssa结构解析方法、装置、电子设备和存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6904590B2 (en) * | 2001-05-25 | 2005-06-07 | Microsoft Corporation | Methods for enhancing program analysis |
US8973131B2 (en) * | 2012-11-02 | 2015-03-03 | International Business Machines Corporation | Refinement-based security analysis |
CN105446881A (zh) * | 2015-11-26 | 2016-03-30 | 福建工程学院 | 一种程序不可达路径的自动检测方法 |
CN111740884B (zh) * | 2020-08-25 | 2021-06-25 | 云盾智慧安全科技有限公司 | 一种日志处理方法及电子设备、服务器、存储介质 |
-
2021
- 2021-03-17 CN CN202110287918.9A patent/CN113010891B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073587A (zh) * | 2010-12-27 | 2011-05-25 | 北京邮电大学 | 一种程序中不可达路径的静态检测方法 |
CN105608003A (zh) * | 2015-12-17 | 2016-05-25 | 西安电子科技大学 | 基于控制流分析和数据流分析的Java程序静态分析方法 |
CN106778254A (zh) * | 2016-11-24 | 2017-05-31 | 四川无声信息技术有限公司 | 隐私泄露检测方法及系统 |
CN106940773A (zh) * | 2017-01-10 | 2017-07-11 | 西安电子科技大学 | 基于静态污点数据分析的隐私泄漏漏洞检测确认方法 |
CN109426722A (zh) * | 2017-09-01 | 2019-03-05 | 深圳市源伞新科技有限公司 | Sql注入缺陷检测方法、系统、设备及存储介质 |
CN109656779A (zh) * | 2018-12-07 | 2019-04-19 | 广州市百果园信息技术有限公司 | 内存监控方法、装置、终端和存储介质 |
CN110633434A (zh) * | 2019-07-19 | 2019-12-31 | 北京无限光场科技有限公司 | 一种页面缓存方法、装置、电子设备及存储介质 |
CN111102980A (zh) * | 2019-11-14 | 2020-05-05 | 广东博智林机器人有限公司 | 路径生成方法、装置及电子设备 |
CN111382427A (zh) * | 2020-01-06 | 2020-07-07 | 宁波中科天齐信息技术有限公司 | 基于变量关联规则的缓冲区溢出检测方法 |
CN111813675A (zh) * | 2020-07-08 | 2020-10-23 | 北京嘀嘀无限科技发展有限公司 | Ssa结构解析方法、装置、电子设备和存储介质 |
CN111723382A (zh) * | 2020-07-24 | 2020-09-29 | 江西师范大学 | 动态Android程序漏洞验证方法和装置 |
Non-Patent Citations (4)
Title |
---|
Database-Backed Program Analysis for Scalable Error Propagation;Cathrin Weiss 等;《2015 IEEE/ACM 37th IEEE International Conference on Software Engineering》;20150817;第586-597页 * |
X-Stream: Edge-centric Graph Processing using Streaming Partitions;Amitabha Roy 等;《SOSP"13: Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles》;20131103;第472-488页 * |
基于Tile的纹理合成算法研究与应用;祖曰然;《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》;20140815(第08期);第I138-1405页 * |
基于稀疏框架的静态污点分析优化技术;王蕾 等;《计算机研究与发展》;20190315;第56卷(第03期);第480-495页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113010891A (zh) | 2021-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5425286B2 (ja) | データ処理システムのメモリ使用状況を追跡する方法 | |
US10114749B2 (en) | Cache memory system and method for accessing cache line | |
US8938603B2 (en) | Cache system optimized for cache miss detection | |
US8555259B2 (en) | Verifying function performance based on predefined count ranges | |
CN102362464B (zh) | 内存访问监测方法和装置 | |
US8429633B2 (en) | Managing memory to support large-scale interprocedural static analysis for security problems | |
CN103455424A (zh) | 基于VxWorks操作系统的动态内存泄漏检测方法及装置 | |
CN102142032B (zh) | 一种分布式文件系统的数据读写方法及系统 | |
CN108108127A (zh) | 一种文件读取方法及系统 | |
CN102831068A (zh) | 一种内存操作记录的处理方法及装置 | |
CN111324427A (zh) | 一种基于dsp的任务调度方法及装置 | |
US10102046B2 (en) | In-memory data analytic system that provides an integrated tracking mechanism for explicit memory resources | |
US20090049271A1 (en) | Consolidation of matching memory pages | |
CN102662799B (zh) | 数据备份的方法、服务器及热备份系统 | |
US20140229683A1 (en) | Self-disabling working set cache | |
CN113010891B (zh) | 一种应用程序安全检测方法、装置、电子设备和存储介质 | |
US20130173961A1 (en) | Memory-leak identification | |
CN115391341A (zh) | 分布式图数据处理系统、方法、装置、设备及存储介质 | |
US9274946B2 (en) | Pre-leak detection scan to identify non-pointer data to be excluded from a leak detection scan | |
CN114297630A (zh) | 恶意数据的检测方法、装置、存储介质及处理器 | |
CN113010890B (zh) | 一种应用程序安全检测方法、装置、电子设备和存储介质 | |
CN114625719A (zh) | 一种基于移动滤波框架的动态集合管理方法和系统 | |
CN108196790B (zh) | 数据管理方法、存储设备及计算机可读存储介质 | |
CN111581157A (zh) | 一种对象存储平台以及对象操作方法、装置和服务器 | |
Brim et al. | Randomization helps in LTL model checking |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
OR01 | Other related matters | ||
OR01 | Other related matters |