CN113010890A - 一种应用程序安全检测方法、装置、电子设备和存储介质 - Google Patents

一种应用程序安全检测方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN113010890A
CN113010890A CN202110286737.4A CN202110286737A CN113010890A CN 113010890 A CN113010890 A CN 113010890A CN 202110286737 A CN202110286737 A CN 202110286737A CN 113010890 A CN113010890 A CN 113010890A
Authority
CN
China
Prior art keywords
path
memory
path edge
edge
application program
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.)
Granted
Application number
CN202110286737.4A
Other languages
English (en)
Other versions
CN113010890B (zh
Inventor
李昊峰
孟海宁
郑恒杰
曹立庆
陆杰
李炼
高琳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongke Tianqi Shanxi Software Security Technology Research Institute Co ltd
Original Assignee
Zhongke Tianqi Shanxi Software Security Technology Research Institute Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhongke Tianqi Shanxi Software Security Technology Research Institute Co ltd filed Critical Zhongke Tianqi Shanxi Software Security Technology Research Institute Co ltd
Publication of CN113010890A publication Critical patent/CN113010890A/zh
Application granted granted Critical
Publication of CN113010890B publication Critical patent/CN113010890B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供一种应用程序安全检测方法、装置、电子设备和存储介质,该方法包括:获取待检测应用程序;根据所述待检测应用程序构建过程间控制流程图;利用预设的IFDS算法对所述过程间控制流程图做可达性分析,以生成对应的路径边;在进行可达性分析过程中,根据得到的路径边所对应的语句类型,确定常用路径边,将所述常用路径边存储至内存。上述方案提供的安全检测方法,通过仅将常用路径边存储至内存,节省了内存资源,提高了IFDS算法的扩展性。

Description

一种应用程序安全检测方法、装置、电子设备和存储介质
技术领域
本申请涉及网络安全技术领域,尤其涉及一种应用程序安全检测方法、装置、电子设备和存储介质。
背景技术
目前,为了对应用程序进行安全检测,通常将检测应用程序对应的Java程序分析问题抽象为过程间分布式子集问题(inter-proceduralfinite,distributesubset,简称: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算法对过程间控制流程图做可达性分析,以生成对应的路径边;在进行可达性分析过程中,根据得到的路径边所对应的语句类型,确定常用路径边,将常用路径边存储至内存。上述方案提供的安全检测方法,通过仅将常用路径边存储至内存,节省了内存资源,提高了IFDS算法的扩展性。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明实施例进行描述。
首先,对本申请所基于的应用程序安全检测系统的结构进行说明:
本申请实施例提供的应用程序安全检测方法、装置、电子设备和存储介质,适用于终端设备,以对终端设备中的应用程序的信息泄露情况进行检测。如图1所示,为本申请实施例基于的应用程序安全检测系统的结构示意图,主要包括程序采集装置、内存和用于进行安全检测的应用程序安全检测装置。具体地,程序采集装置用于采集正在运行的待检测应用程序,并将其发送至应用程序安全检测装置,该装置将待检测应用程序对应的常用路径边存储至内存。
本申请实施例提供了一种应用程序安全检测方法,用于对应用程序的信息泄露情况进行检测。本申请实施例的执行主体为电子设备,比如服务器、台式电脑、笔记本电脑、平板电脑及其他可用于对应用程序进行安全检测的电子设备。
如图2所示,为本申请实施例提供的应用程序安全检测方法的流程示意图,该方法包括:
步骤201,获取待检测应用程序。
需要解释的是,终端设备中可以设有多个应用程序,待检测应用程序具体可以指正在执行的至少一个应用程序。
步骤202,根据待检测应用程序构建过程间控制流程图。
具体地,可以采用现有的过程间控制流程图构建工具,构建待检测应用程序对应的过程间控制流程图。
步骤203,利用预设的IFDS算法对过程间控制流程图做可达性分析,以生成对应的路径边。
其中,路径边的生成过程具体参考现有的IFDS算法,本申请实施例不做限定。
步骤204,在进行可达性分析过程中,根据得到的路径边所对应的语句类型,确定常用路径边,将常用路径边存储至内存。
具体地,在实际运行中,大部分路径边仅被访问过一次,因此,本申请实施例提供的应用程序安全检测方法在将路径边存储到内存之前,首先根据各路径边对应的语句类型,确定常用路径边,并将常用路径边存储至内存,其他路径边则不存储至内存。其他的路径边依然在WorkList进行进一步传播。
其中,本申请实施例提供的IFDS算法主要用于检测待检测应用程序中是否存在流向泄漏点的敏感数据,具体的检测过程可以参考现有技术,本申请实施例不做限定。
在上述实施例的基础上,为了进一步提高常用路径边的确定结果的可靠性,作为一种可实施的方式,在一实施例中,在利用预设的IFDS算法对过程间控制流程图做可达性分析,以生成对应的路径边之后,该方法还包括:
步骤301,获取待检测应用程序的别名信息;
步骤302,在进行可达性分析的过程中,根据别名信息,判断是否有与所得到的路径边的目标节点存在别名关系的关联节点;
步骤303,若有,则生成目标节点与关联节点之间的路径边,并将路径边作为常用路径边存储至内存。
需要解释的是,主要可以根据别名信息判断是否存在“A=B”的情况,若存在,则确定有与节点A存在别名关系的关联节点(节点B)。
进一步地,在一实施例中,可以生成以关联节点为源节点的路径边,并将路径边作为常用路径边存储至内存。
其中,如图3所示,为本申请实施例提供的示例性的应用程序路径边结构示意图。其中,图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算法的性能。
具体地,在一实施例中,根据得到的路径边所对应的语句类型,确定常用路径边,包括:判断路径边对应的语句类型是否为循环语句或调用语句;当路径边对应的语句类型为循环语句或调用语句时,确定该路径边为常用路径边。
具体地,由于循环语句通常执行次数较多,且导致循环的路径边循环传播,因此为了避免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算法是可靠的,并且可以终止。
在上述实施例的基础上,为了进一步节省内存资源,作为一种可实施的方式,在一实施例中,在将常用路径边存储至内存之后,该方法还包括:
步骤401,根据内存中各常用路径边对应的函数、源数据流值和/或目的数据流值,对常用路径边进行分组,得到有序的多个路径边集合;
步骤402,监控内存当前的存储量与预设的存储阈值之间的关系;
步骤403,当内存当前的存储量大于预设的存储阈值时,根据各路径边集合对应的顺序,按照预设交换比率在内存中选取待交换路径边集合,并将所选取的待交换路径边集合交换至磁盘。
具体地,本申请实施例的目的是以最低的成本,高效地将内存中的数据交换到磁盘,具体可以将紧密访问的数据组合在一起,以便可以将数据批量存储到磁盘/从磁盘批量加载。
需要解释的是,待检测应用程序对应的路径边是插入在WorkList中的,并且按照各路径边的生成顺序排列,即WorkList是一种存储路径边的队列。
具体地,将紧密访问的数据(函数、源数据流值和/或目的数据流值相同)对应的路径边划分为一组,以得到对应的路径边集合。将路径边进行分组存储。
示例性的,本申请实施例提供了如下分组规则:
根据函数进行分组:按包含函数即{<sm,*>→<*,*>}分组的路径边;
根据函数+源数据流值进行分组:按源节点,即{<sm,d>→<*,*>}分组的路径边;
根据函数+目标数据流值进行分组:按其包含函数和目标节点的数据流值,即{<sm,*>→<*,d>}分组的路径边;
根据源数据流值分组:按源节点的数据流值,即{<*,d>→<*,*>}分组的路径边;
根据目标数据流值分组:按目标节点的数据流值,即{<*,*>→<*,d>}分组的路径边。
其中,根据实验结果,按源数据流值分组策略具有最佳的总体性能。按函数分组策略将太多的路径边组合在一起。因此,每次磁盘访问都需要花很长的时间才能将大量路径边加载到内存中,导致超时频繁(3小时内)。另一方面,按函数+源数据流值以及按函数+目标数据流值分组中只有很少的路径边,导致磁盘访问频繁和性能较差。
其中,存储阈值和交换比率可以根据实际情况进行设定。示例性的,若存储阈值为90%,交换比率为50%,则当内存当前的存储量超出90%时,从WorkList末尾抽取待交换路径边集合,并将其交换至磁盘,直至交换比率达到50%为止。
相应的,在一实施例中,当磁盘中存储的任一路径边集合中任一路径边被访问时,将路径边所属的路径边集合交换回内存。
具体地,本申请实施例将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()回收没有引用的对象的内存。
具体地,在一实施例中,该方法还包括:
步骤501,根据可达性分析结果,确定待检测应用程序对应的可达路径;
步骤502,根据可达路径,判断待检测应用程序是否有敏感数据达到泄漏点;
步骤503,当有敏感数据到达泄漏点时,根据内存中的常用路径边进行溯源分析,以得到对应的溯源分析结果。
相反的,在一实施例中,当没有敏感数据到达泄漏点时,确定待检测应用程序没有发生信息泄露。
具体地,当确定待检测应用程序发生了信息泄露时,相关管理人员可以根据得到的溯源分析结果,针对性地解决信息泄露问题。
其中,基于本申请实施例提供的基于的磁盘辅助的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。
其中,获取模块,用于获取待检测应用程序;构建模块,用于根据待检测应用程序构建过程间控制流程图;分析模块,用于利用预设的IFDS算法对过程间控制流程图做可达性分析,以生成对应的路径边;存储模块,用于在进行可达性分析过程中,根据得到的路径边所对应的语句类型,确定常用路径边,将常用路径边存储至内存。
关于本实施例中的应用程序安全检测装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例提供的应用程序安全检测装置,用于执行上述实施例提供的应用程序安全检测方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种电子设备,用于执行上述实施例提供的应用程序安全检测方法。
如图6所示,为本申请实施例提供的电子设备的结构示意图。该电子设备60包括:至少一个处理器61和存储器62;
存储器存储计算机执行指令;至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行如上实施例提供的应用程序安全检测方法。
本申请实施例提供的一种电子设备,用于执行上述实施例提供的应用程序安全检测方法,其实现方式与原理相同,不再赘述。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上任一实施例提供的应用程序安全检测方法。
本申请实施例的包含计算机可执行指令的存储介质,可用于存储前述实施例中提供的应用程序安全检测方法的计算机执行指令,其实现方式与原理相同,不再赘述。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种应用程序安全检测方法,其特征在于,包括:
获取待检测应用程序;
根据所述待检测应用程序构建过程间控制流程图;
利用预设的IFDS算法对所述过程间控制流程图做可达性分析,以生成对应的路径边;
在进行可达性分析过程中,根据得到的路径边所对应的语句类型,确定常用路径边,将所述常用路径边存储至内存。
2.根据权利要求1所述的方法,其特征在于,在利用预设的IFDS算法对所述过程间控制流程图做可达性分析,以生成对应的路径边之后,所述方法还包括:
获取所述待检测应用程序的别名信息;
在进行可达性分析的过程中,根据所述别名信息,判断是否有与所得到的路径边的目标节点存在别名关系的关联节点;
若有,则生成所述目标节点与关联节点之间的路径边,并将所述路径边作为常用路径边存储至内存。
3.根据权利要求2所述的方法,其特征在于,还包括:
生成以所述关联节点为源节点的路径边,并将所述路径边作为常用路径边存储至内存。
4.根据权利要求1所述的方法,其特征在于,所述根据得到的路径边所对应的语句类型,确定常用路径边,包括:
判断所述路径边所对应的语句类型是否为循环语句或调用语句;
当所述路径边对应的语句类型为循环语句或调用语句时,确定所述路径边为常用路径边。
5.根据权利要求1所述的方法,其特征在于,在将所述常用路径边存储至内存之后,所述方法还包括:
根据内存中各常用路径边对应的函数、源数据流值和/或目的数据流值,对所述常用路径边进行分组,得到有序的多个路径边集合;
监控所述内存当前的存储量与预设的存储阈值之间的关系;
当所述内存当前的存储量大于预设的存储阈值时,根据各路径边集合对应的顺序,按照预设交换比率在所述内存中选取待交换路径边集合,并将所选取的待交换路径边集合交换至磁盘。
6.根据权利要求5所述的方法,其特征在于,还包括:
当磁盘中存储的任一路径边集合中任一路径边被访问时,将所述路径边所属的路径边集合交换回内存。
7.根据权利要求1所述的方法,其特征在于,还包括:
根据可达性分析结果,确定所述待检测应用程序对应的可达路径;
根据所述可达路径,判断所述待检测应用程序是否有敏感数据达到泄漏点;
当有敏感数据到达泄漏点时,根据内存中的常用路径边进行溯源分析,以得到对应的溯源分析结果。
8.一种应用程序安全检测装置,其特征在于,包括:
获取模块,用于获取待检测应用程序;
构建模块,用于根据所述待检测应用程序构建过程间控制流程图;
分析模块,用于利用预设的IFDS算法对所述过程间控制流程图做可达性分析,以生成对应的路径边;
存储模块,用于在进行可达性分析过程中,根据得到的路径边所对应的语句类型,确定常用路径边,将所述常用路径边存储至内存。
9.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至7任一项所述的方法。
CN202110286737.4A 2021-02-26 2021-03-17 一种应用程序安全检测方法、装置、电子设备和存储介质 Active CN113010890B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110220252 2021-02-26
CN2021102202525 2021-02-26

Publications (2)

Publication Number Publication Date
CN113010890A true CN113010890A (zh) 2021-06-22
CN113010890B CN113010890B (zh) 2023-02-07

Family

ID=76409309

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110286737.4A Active CN113010890B (zh) 2021-02-26 2021-03-17 一种应用程序安全检测方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN113010890B (zh)

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050149904A1 (en) * 2001-05-25 2005-07-07 Microsoft Corporation Method for enhancing program analysis
CN102073587A (zh) * 2010-12-27 2011-05-25 北京邮电大学 一种程序中不可达路径的静态检测方法
US20140130156A1 (en) * 2012-11-02 2014-05-08 International Business Machines Corporation Refinement-based security analysis
CN105446881A (zh) * 2015-11-26 2016-03-30 福建工程学院 一种程序不可达路径的自动检测方法
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 西安电子科技大学 基于静态污点数据分析的隐私泄漏漏洞检测确认方法
CN109144882A (zh) * 2018-09-19 2019-01-04 哈尔滨工业大学 一种基于程序不变量的软件故障定位方法及装置
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 宁波中科天齐信息技术有限公司 基于变量关联规则的缓冲区溢出检测方法
CN111506900A (zh) * 2020-04-15 2020-08-07 北京字节跳动网络技术有限公司 漏洞检测方法、装置、电子设备及计算机存储介质
CN111723382A (zh) * 2020-07-24 2020-09-29 江西师范大学 动态Android程序漏洞验证方法和装置
CN111813675A (zh) * 2020-07-08 2020-10-23 北京嘀嘀无限科技发展有限公司 Ssa结构解析方法、装置、电子设备和存储介质

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050149904A1 (en) * 2001-05-25 2005-07-07 Microsoft Corporation Method for enhancing program analysis
CN102073587A (zh) * 2010-12-27 2011-05-25 北京邮电大学 一种程序中不可达路径的静态检测方法
US20140130156A1 (en) * 2012-11-02 2014-05-08 International Business Machines Corporation Refinement-based security analysis
CN105446881A (zh) * 2015-11-26 2016-03-30 福建工程学院 一种程序不可达路径的自动检测方法
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注入缺陷检测方法、系统、设备及存储介质
CN109144882A (zh) * 2018-09-19 2019-01-04 哈尔滨工业大学 一种基于程序不变量的软件故障定位方法及装置
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 宁波中科天齐信息技术有限公司 基于变量关联规则的缓冲区溢出检测方法
CN111506900A (zh) * 2020-04-15 2020-08-07 北京字节跳动网络技术有限公司 漏洞检测方法、装置、电子设备及计算机存储介质
CN111813675A (zh) * 2020-07-08 2020-10-23 北京嘀嘀无限科技发展有限公司 Ssa结构解析方法、装置、电子设备和存储介质
CN111723382A (zh) * 2020-07-24 2020-09-29 江西师范大学 动态Android程序漏洞验证方法和装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
AMITABHA ROY 等: "X-Stream: Edge-centric Graph Processing using Streaming Partitions", 《SOSP"13: PROCEEDINGS OF THE TWENTY-FOURTH ACM SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES》 *
CATHRIN WEISS 等: "Database-Backed Program Analysis for Scalable Error Propagation", 《2015 IEEE/ACM 37TH IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING》 *
王蕾 等: "基于稀疏框架的静态污点分析优化技术", 《计算机研究与发展》 *
祖曰然: "基于Tile的纹理合成算法研究与应用", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 *

Also Published As

Publication number Publication date
CN113010890B (zh) 2023-02-07

Similar Documents

Publication Publication Date Title
JP5425286B2 (ja) データ処理システムのメモリ使用状況を追跡する方法
US8185880B2 (en) Optimizing heap memory usage
JP5868429B2 (ja) 領域に基づくガベージ・コレクタを用いてクラスを漸進的にアンロードするための方法、コンピュータ・プログラム製品、および装置
CN102362464B (zh) 内存访问监测方法和装置
US20110264880A1 (en) Object copying with re-copying concurrently written objects
US8429633B2 (en) Managing memory to support large-scale interprocedural static analysis for security problems
CN102142032B (zh) 一种分布式文件系统的数据读写方法及系统
CN103455424A (zh) 基于VxWorks操作系统的动态内存泄漏检测方法及装置
CN111324427A (zh) 一种基于dsp的任务调度方法及装置
KR102581849B1 (ko) 해제후 사용 메모리 손상 버그들의 근본 원인 식별 기술들
CN113010891B (zh) 一种应用程序安全检测方法、装置、电子设备和存储介质
Iwabuchi et al. NVM-based hybrid BFS with memory efficient data structure
CN113010890B (zh) 一种应用程序安全检测方法、装置、电子设备和存储介质
CN111858393A (zh) 内存页面管理方法、内存页面管理装置、介质与电子设备
CN115391341A (zh) 分布式图数据处理系统、方法、装置、设备及存储介质
CN111581157A (zh) 一种对象存储平台以及对象操作方法、装置和服务器
CN113238857B (zh) 一种基于内存池的map映射表多线程遍历方法及装置
US20090063594A1 (en) Computer system memory management
CN114328030B (zh) 一种文件数据备份方法、系统及存储介质
Xu et al. Graphsd: a state and dependency aware out-of-core graph processing system
van Dijk et al. Wüpstream: efficient enumeration of upstream features (GIS cup)
CN108196790B (zh) 数据管理方法、存储设备及计算机可读存储介质
Cheng et al. On-the-fly branching bisimulation minimization for compositional analysis
CN114625719A (zh) 一种基于移动滤波框架的动态集合管理方法和系统
Nakagawa et al. Preliminary analysis of a write reduction method for non-volatile main memory on jikes rvm

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