CN105550594A - 安卓应用文件的安全性检测方法 - Google Patents

安卓应用文件的安全性检测方法 Download PDF

Info

Publication number
CN105550594A
CN105550594A CN201510953538.9A CN201510953538A CN105550594A CN 105550594 A CN105550594 A CN 105550594A CN 201510953538 A CN201510953538 A CN 201510953538A CN 105550594 A CN105550594 A CN 105550594A
Authority
CN
China
Prior art keywords
marked
file
data
statement
pollutional condition
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
CN201510953538.9A
Other languages
English (en)
Other versions
CN105550594B (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.)
Xidian University
Original Assignee
Xidian University
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 Xidian University filed Critical Xidian University
Priority to CN201510953538.9A priority Critical patent/CN105550594B/zh
Publication of CN105550594A publication Critical patent/CN105550594A/zh
Application granted granted Critical
Publication of CN105550594B publication Critical patent/CN105550594B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system

Abstract

本发明公开了一种安卓应用文件的安全性检测方法,主要解决现有安卓应用文件隐私泄露漏洞检测能力不足的问题。其实现步骤是:1.将安卓应用文件中的Dalvik字节码文件进行转换生成Jimple语言;2.从安卓系统文件中提取并分类出与敏感数据有关的输入和输出函数,并对其进行归类,标记出源和输出;3.在Jimple语言上生成虚拟Main函数,根据该函数生成过程间控制流图;4.制定污点传播规则;5.根据过程间控制流图生成污点访问路径;6.根据已标记的源和输出,在污点访问路径上执行污点传播规则,找出数据泄露的路径。本发明减少隐私泄露漏洞的漏报和误报,提高了安全性防护性能,可用于对安卓应用文件的检测。

Description

安卓应用文件的安全性检测方法
技术领域
本发明涉及计算机安全领域,更进一步涉及一种检测方法,可用于对安卓平台上的应用程序进行安全性检测,避免应用程序中存在的隐私数据泄露。
背景技术
安卓系统是当前主流的手机操作系统,安卓系统基于Linux操作系统,以Linux2.6内核作为底层架构。安卓系统包括安卓内核、安卓系统库、安卓应用程序框架层和应用程序层。其中安卓内核系统作为软硬件的抽象层,对内存管理、进程管理、网络协议栈和驱动模型等进行封装,并通过显示驱动、USB驱动、摄像头驱动、蓝牙驱动等底层驱动模块为上层应用提供服务。安卓系统库主要功能是完成对生命周期、堆栈、线程、垃圾回收、安全和异常的管理。安卓应用程序框架层作为应用程序开发的基础,为上层开发提供了丰富的接口。在安卓平台上,开发人员通过访问该层提供的API框架,来编写应用程序。应用程序层提供一些核心的应用程序包,包括电子邮件、短信、地图、浏览器等通用的软件功能。除此之外,开发者所开发的诸如游戏之类的应用程序也是属于该层范围。其中安卓应用程序中的文件,包括XML布局文件、可执行代码的Dex文件以及manifest文件中定义的安卓四大组件。其中Dex文件中主要用于执行的Dalvik字节码。
在计算机安全领域中,将不同的安卓恶意软件进行分类,发现这些恶意软件所引起的一个主要的威胁就是将用户隐私信息泄露给攻击者,这些用户隐私信息包括位置信息、手机联系人信息、图片、SMS手机短信等等。即使应用软件是非恶意的,并且编程方面也注意到安全性的问题,但仍可能会有隐私泄露的威胁,比如说,当这些应用软件包含广告库,为了显示特定的内容信息,这些广告库通常会读取诸如用户位置之类的信息,这样就极易引起用户隐私信息的泄露。
目前用于检测用户隐私信息泄露的方法主要是污点分析,即通过分析应用程序,将可能的恶意数据流向提交给用户分析,或者将检测数据提交给自动化恶意软件检测工具。污点追踪的通常做法是,给定预先设置的源和输出,跟踪敏感的“污点”数据,最终给出这些敏感的“污点”数据何时被污染,何时引起数据泄露。由于安卓应用程序具有多个入口点和回调函数的特点,使得在安卓应用文件上执行污点分析时较为困难,在污点分析过程中常出现漏报和误报的情况,影响分析的准确性。
发明内容
本发明的目的在于针对上述现有方法的不足,提供一种安卓应用文件的安全性检测方法,以减少隐私泄露漏洞的漏报和误报,为用户准确的提供安全性防护依据。
为实现上述目的,本发明的技术方案包括如下步骤:
(1)使用源插件Dexpler将安卓应用文件中的Dalvik字节码文件进行转换生成Jimple语言;
(2)根据自学习算法从安卓系统文件中提取并分类出与敏感数据有关的输入和输出函数,再对提取出的函数进行归类,标记出源和输出;
(3)在Jimple语言上生成虚拟Main函数:
3a)根据安卓应用文件中Activity组件的生命周期状态转换关系,在Jimple语言上添加虚拟判断语句和跳转语句,生成初步的虚拟Main函数;
3b)在初步的虚拟Main函数中加入Activity组件中已注册的回调函数,生成最终的虚拟Main函数;
(4)根据最终的虚拟Main函数生成过程间控制流图:
4a)从安卓应用文件中的xml布局文件和manifest配置文件中提取出入口点;
4b)根据最终的虚拟Main函数,先利用静态程序分析工具Soot生成过程内控制流图,并通过Hero解析器在过程内控制流图上再生成调用图;
4c)根据4a)得到的入口点和4b)得到过的程内控制流图、调用图,生成过程间控制流图;
(5)制定污点传播规则;
5a)将程序中的语句分为普通语句、调用语句、返回语句和调用返回语句;
5b)按语句类型分别对普通语句上的污点传播、调用语句上的污点传播、返回语句上的污点传播及调用返回语句上的污点传播进行规范;
(6)根据过程间控制流图进行数据流分析,找出数据泄露的路径:
6a)在步骤(4)中已生成的过程间控制流图基础上,对被分析文件进行数据流分析,在数据流分析过程中生成污点访问路径;
6b)根据步骤(5)中已制定的污点传播规则和步骤(2)中已标记的源和输出,在步骤6a)中的污点访问路径上进行污点追踪;
6c)根据污点追踪结果,分析筛选出敏感数据的泄露路径。
本发明与现有技术相比具有以下优点:
第一,本发明使用自学习算法从安卓系统文件中提取并标记出源和输出,这些源和输出也可以用于其他污点分析工具,应用广泛,并且如果安卓系统文件版本发生改变,只需重新执行该算法,就可以标记出新的源和输出,操作简单。
第二,本发明通过对安卓应用文件中Activity组件生命周期状态转换关系和回调函数的特殊处理,建立了一种虚拟Main函数,克服了现有技术存在的对安卓应用文件分析的困难。
第三,本发明通过制定污染传播规则,并在污点访问路径上执行这些规则,能够准确的模拟污点传播路径,克服现有技术中存在的对污点信息传递路径不明确引起的污点信息的丢失和误加,从而造成的敏感数据泄露的漏报和错报。
附图说明
图1为本发明的实现总流程图;
图2为本发明中提取源和输出的工作原理图;
图3为本发明中涉及的Activity组件的生命周期状态转换关系图;
图4为本发明中生成虚拟Main方法的流程图;
图5为本发明中生成过程间控制流图的流程图;
图6为本发明中生成数据泄露路径的流程图。
具体实施方式
参照图1,本发明的实现步骤如下:
步骤1,将安卓应用文件中的Dalvik字节码文件进行转换生成Jimple语言。
目前将安卓应用文件中的Dalvik字节码文件进行转换生成Jimple语言主要有两种方式:一种是先将Dalvik字节码转化为Java字节码,再将Java字节码转化为Jimple语言,但是这种方法易引起信息的丢失;另一种方法是将Dalvik字节码直接状化为Jimple,当前支持这种转换的唯一工具是Dexpler工具,本发明就是利用Dexpler工具完成对Dalvik字节码文件的转换。
步骤2,从安卓系统文件中提取并标记出源和输出。
目前从安卓系统文件中提取并标记出源和输出的方法,通常是通过人工逐个检查的方法识别出文件中的源和输出,这种方法需要大量的人工参与,对人员相关经验要求较高,本发明提出了一种基于自学习的自动化分析方法,分析方法的工作原理图参照如图2,其具体执行过程如下:
2a)将安卓系统文件中的应用程序接口作为数据划分为训练数据集合和测试数据集合,配置特征数据库;
2b)通过训练数据集合和特征数据库生成训练矩阵,通过测试数据集合和特征数据库生成测试矩阵;
2c)使用训练矩阵训练分类器;
2d)使用训练好的分类器对测试矩阵中的记录进行分类,提取出输入和输出函数;
2e)将已提取出的输入和输出函数再放入测试数据集合中,进行归类,标记出源和输出。
步骤3,生成Activity组件的虚拟Main函数。
参照图4,本步骤的具体实现如下:
3a)生成Activity组件初步的虚拟Main函数:
本步骤的实现是基于图3所示的现有安卓应用文件中Activity组件的生命周期状态转换执行流程图进行,通过在执行流程图上添加虚拟操作,实现在Jimple语言上添加虚拟判断语句和跳转语句,生成初步的虚拟Main函数具体执行过程如下:
3a1)执行onResume()方法之后,添加虚拟判断操作,根据用户操作决定执行不同的分支流程:如果当前Activity发生横竖切屏转换,则转向到onResume()重新执行,如果另一个Activity进入前台页面,则转向到onPause()方法执行;
3a2)执行onPause()方法之后,添加虚拟判断操作,根据用户操作决定执行不同的分支流程:如果用户按下手机返回键、Home键退出或者有来电显示,则转向到onStop()方法执行,如果用户返回Activity界面或有对话框弹出,则转向到onResume()方法执行;
3a3)执行onStop()方法之后,添加虚拟判断操作,根据用户操作决定执行不同的分支流程:如果安卓应用程序被杀死,则转向到onCreate()方法执行,如果用户导航到Activity,则转向到onRestart()方法执行,如果Activity执行完成或者Activity被系统销毁,则转向到onDestory()方法执行;
3b)在初步的虚拟Main函数中加入Activity组件中已注册的回调函数,生成最终的虚拟Main函数。
步骤4,生成过程间控制流图。
参照图5,本步骤的具体实现如下:
4a)从安卓应用文件中的xml布局文件和manifest配置文件中提取出入口点,即通过对布局文件和配置文件进行反编译扫描,提取出xml布局文件中与输入框和按钮有关的元素,并提取出manifest配置文件中声明的公共组件元素,再将提取出的元素作为入口点写入到入口点文件中;
4b)根据最终的虚拟Main函数,先利用静态程序分析工具Soot生成过程内控制流图,并通过Hero解析器在过程内控制流图上再生成调用图,
生成过程内控制流图的工具很多,本发明是主要操作在Jimple语言上,而针对Jimple语言的过程内控制流图的生成工具目前只有Soot工具,本发明就是利用Soot工具生成过程内控制流图的,而用于生成调用图工具有Heros解析器工具和WALA工具,本发明使用了在操作上更为简单的Hero解析器工具;
4c)根据4a)得到的入口点和4b)得到过的程内控制流图、调用图,生成过程间控制流图,具体是通过将调用图中的头结点替换为入口点,将调用图中被调用结点的方法签名替换为过程内控制流图,再将调用图中调用结点的虚参替换为实参,最终将替换后的调用图作为过程间控制流图。
步骤5,制定污点传播规则。
制定污点传播规则可以通过三种方式实现:基于语义规则的污点传播、基于类型的污点传播和基于信息流策略的污点传播,本发明采用的是基于信息流策略的污点传播规则。其实现方案是:先将程序中的语句分为普通语句、调用语句、返回语句和调用返回语句;再按语句类型分别对普通语句上的污点传播、调用语句上的污点传播、返回语句上的污点传播及调用返回语句上的污点传播进行规范,其中:
5a)对普通语句上的污点传播进行规范,是根据普通语句中数据传递关系,规定如下操作:
5a1)将敏感数据定义为污点源,在敏感数据传播过程中,若敏感数据改变了路径上其他元素的值,就将这些元素标记为污染状态,并用被标记为污染状态的元素代表敏感数据;
5a2)设x=y为普通赋值语句,并根据y的污染状态确定x的污染状态:
如果y是污染状态,则x也会被标记为污染状态;
如果y是未污染状态,则基于x的访问路径上的变量也会被标记为未污染状态,其中x表示左操作数,y表示右操作数,=表示赋值操作符;
5a3)设array[i]=y为数组赋值语句,并根据y的污染状态确定数组array的污染状态:
如果y被标记为污染状态,则整个array数组都会被标记为污染状态,如果数组array中被标记为污染状态的元素随后又被其他值覆盖掉,不管其他值是否已被标记为污染状态,整个array数组仍保持污染状态,其中array表示数组,i表示数组下标,i的类型是基本数据类型;
5a4)设x=newObject()为创建新对象的语句,所有基于x的访问路径上的变量都会被标记为未污染状态,其中newObject()表示创建的一个Object类型的对象;
5b)对调用语句上的污点传播进行规范,是根据调用语句中数据传递关系,规定如下操作:
5b1)设c.m(a0,…,an)为调用语句,其中c表示调用对象,m表示被调用方法,a0到an表示方法的参数;
5b2)根据调用对象c的污染状态确定被调用方法中相应对象的污点状态:如果调用对象c在调用方法中被标记为污染状态,就将c替换为this指针,使c的污染信息传递到被调用方法m中,其中被调用方法m中this指针指向的对象与c表示的是同一对象;
5b3)根据调用方法中的实参的污染状态确定被调用方法m中相应虚参的污点状态:如果调用方法中的实参被标记为污染状态,则将被调用方法m标记为污染状态;
5b4)根据调用方法中的静态变量的污染状态确定被调用方法m中静态变量的污点状态:如果静态变量在调用方法中被标记为污染状态,则在被调用方法m中该静态变量仍保持污染状态;
5c)对返回语句上的污点传播进行规范,是根据返回语句中数据传递关系,规定如下操作:
5c1)根据被调用方法m中不可变类型的参数的污染状态确定调用方法相应参数的污点状态:如果被调用方法m中不可变类型的参数被标记为污染状态,则在返回调用方法时,仍保持调用方法中的原参数的污染状态;
5c2)根据被调用方法m中本地局部变量的污染状态确定调用方法中本地局部变量的污点状态:如果被调用方法m中本地局部变量被标记为污染状态,则在返回调用方法时,仍保持调用方法在调用之前的污染状态;
5c3)在返回语句的其他情况下,被调用方法m中所有污点访问路径上的污点状态都会被传递到调用方法中;
5d)对调用返回语句上的污点传播进行规范,是根据调用返回语句中数据传递关系,规定如下操作:
5d1)如果访问路径以参数开始或者调用对象c已被标记为污染状态,需检查参数和调用对象c的污点状态是否允许通过被调用方法m传播:如果参数和c在被调用方法m中被删除,就不允许传播,否则,就允许传播;
5d2)对于本地方法调用,只特殊处理System.arraycopy这个唯一被经常调用的方法,如果该方法的第一个参数在调用之前被标记为污染,则第三个参数也会被标记为污染,对于其他本地方法调用,则规定当有一个参数在调用之前被污染过,则所有的调用参数和返回值都被标记为污染。
步骤6,根据过程间控制流图进行数据流分析,找出数据泄露的路径。
参照图6,本步骤的具体实现如下:
6a)根据步骤(4)中已生成的过程间控制流图,对被分析文件进行数据流分析,在数据流分析过程中生成污点访问路径,即通过在变量修改过程中注入上下文信息,并对指向同一内存空间的对象的属性进行等价拼接,来生成污点访问路径的;
6b)根据步骤(5)中已制定的污点传播规则和步骤(2)中已标记的源和输出,在步骤6a)中的污点访问路径上进行污点追踪,其具体实现是将源作为访问路径的开始结点,将输出作为访问路径的结束结点,遍历访问路径上的各节点,并在经过各节点时执行污点传播规则;
6c)根据污点追踪结果,分析筛选出敏感数据的泄露路径,即通过人工判断的方式删除中间冗余数据,提取出真正有威胁的敏感数据泄漏路径。
符号说明
Activity:Activity是一个安卓应用程序组件,提供一个屏幕,用户可以用来交互;
onResume():用于恢复当前Activity的执行的方法;
onPause():用于暂停当前Activity的执行的方法;
onStop():用于停止当前Activity的执行的方法;
onCreate():OnCreate()是Android中的一个特别的方法,用来表示一个窗口正在生成,其不产生窗口,只是在窗口显示前设置窗口的属性如风格、位置等;
onRestart():用于重新启动当前Activity的方法;
onDestory():用于销毁当前Activity的方法;
System.arraycopy:Java语言中用于实现数组间拷贝的方法。

Claims (9)

1.一种安卓应用文件的安全性检测方法,包括如下步骤:
(1)使用源插件Dexpler将安卓应用文件中的Dalvik字节码文件进行转换生成Jimple语言;
(2)根据自学习算法从安卓系统文件中提取并分类出与敏感数据有关的输入和输出函数,再对提取出的函数进行归类,标记出源和输出;
(3)在Jimple语言上生成虚拟Main函数:
3a)根据安卓应用文件中Activity组件的生命周期状态转换关系,在Jimple语言上添加虚拟判断语句和跳转语句,生成初步的虚拟Main函数;
3b)在初步的虚拟Main函数中加入Activity组件中已注册的回调函数,生成最终的虚拟Main函数;
(4)根据最终的虚拟Main函数生成过程间控制流图:
4a)从安卓应用文件中的xml布局文件和manifest配置文件中提取出入口点;
4b)根据最终的虚拟Main函数,先利用静态程序分析工具Soot生成过程内控制流图,并通过Hero解析器在过程内控制流图上再生成调用图;
4c)根据4a)得到的入口点和4b)得到过的程内控制流图、调用图,生成过程间控制流图;
(5)制定污点传播规则;
5a)将程序中的语句分为普通语句、调用语句、返回语句和调用返回语句;
5b)按语句类型分别对普通语句上的污点传播、调用语句上的污点传播、返回语句上的污点传播及调用返回语句上的污点传播进行规范;
(6)根据过程间控制流图进行数据流分析,找出数据泄露的路径:
6a)在步骤(4)中已生成的过程间控制流图基础上,对被分析文件进行数据流分析,在数据流分析过程中生成污点访问路径;
6b)根据步骤(5)中已制定的污点传播规则和步骤(2)中已标记的源和输出,在步骤6a)中的污点访问路径上进行污点追踪;
6c)根据污点追踪结果,分析筛选出敏感数据的泄露路径。
2.根据权利要求1所述的安卓应用文件安全性检测方法,其特征在于步骤(2)根据自学习算法从安卓系统文件中提取并分类出与敏感数据有关的输入和输出函数,再对提取出的函数进行归类,标记出源和输出,按如下步骤进行:
2a)将安卓系统文件中的应用程序接口作为数据划分为训练数据集合和测试数据集合,配置特征数据库;
2b)通过训练数据集合和特征数据库生成训练矩阵,通过测试数据集合和特征数据库生成测试矩阵;
2c)使用训练矩阵训练分类器;
2d)使用训练好的分类器对测试矩阵中的记录进行分类,提取出输入和输出函数;
2e)将已提取出的输入和输出函数再放入测试数据集合中,进行归类,标记出源和输出。
3.根据权利要求1所述的安卓应用文件安全性检测方法,其特征在于步骤4a)中从安卓应用文件中的xml布局文件和manifest配置文件中提取出入口点,是通过对布局文件和配置文件进行反编译扫描,提取出xml布局文件中与输入框和按钮有关的元素,并提取出manifest配置文件中声明的公共组件元素,再将提取出的元素作为入口点写入到入口点文件中。
4.根据权利要求1所述的安卓应用文件安全性检测方法,其特征在于步骤4c)中根据4a)得到的入口点和4b)得到过程内控制流图、调用图,生成过程间控制流图,是通过将调用图中的头结点替换为入口点,将调用图中被调用结点的方法签名替换为过程内控制流图,再将调用图中调用结点的虚参替换为实参,最终将替换后的调用图作为过程间控制流图。
5.根据权利要求1所述的安卓应用文件安全性检测方法,其中步骤5b)中对普通语句上的污点传播进行规范,是根据普通语句中数据传递关系,规定如下操作:
设x=y为普通赋值语句,其中x表示左操作数,y表示右操作数,=表示赋值操作符;
根据x和y的类型确定访问路径:如果x和y是基本数据类型,则访问路径为0,如果x和y是对象类型,则x和y的访问路径由属性长度决定;
将敏感数据定义为污点源,在敏感数据传播过程中,若敏感数据改变了路径上其他元素的值,就将这些元素标记为污染状态,并用被标记为污染状态的元素代表敏感数据;
在x=y中,根据y的污染状态确定x的污染状态:如果y是污染状态,则x也会被标记为污染状态;如果y是未污染状态,则基于x的访问路径上的变量也会被标记为未污染状态;
设array[i]=y为数组赋值语句,其中array表示数组,i表示数组下标,i的类型是基本数据类型;
在array[i]=y中,如果y被标记为污染状态,则整个array数组都会被标记为污染状态,如果数组array中被标记为污染状态的元素随后又被其他值覆盖掉,不管该其他值是否已被标记为污染状态,整个array数组仍保持污染状态;
设x=newObject()为创建新对象的语句,其中newObject()表示创建的一个Object类型的对象;
在x=newObject()中,所有基于x的访问路径上的变量都会被标记为未污染状态。
6.根据权利要求1所述的安卓应用文件安全性检测方法,其中步骤5b)中对调用语句上的污点传播进行规范,是根据调用语句中数据传递关系,规定如下操作:
设c.m(a0,…,an)为调用语句,其中c表示调用对象,m表示被调用方法,a0到an表示方法的参数;
如果调用对象c在调用方法中被标记为污染状态,就将c替换为this指针,使c的污染信息传递到被调用方法m中;
如果调用方法中的实参被标记为污染状态,则将被调用方法m中相应的虚参标记为污染状态;
如果静态变量在调用方法中被标记为污染状态,则在被调用方法m中该静态变量仍保持污染状态;
7.根据权利要求1所述的安卓应用文件安全性检测方法,其中步骤5b)中对返回语句上的污点传播进行规范,是根据返回语句中数据传递关系,规定如下操作:
如果被调用方法m中不可变类型的参数被标记为污染状态,则在返回调用方法时,仍保持调用方法中的原参数的污染状态;
如果被调用方法m中本地局部变量被标记为污染状态,则在返回调用方法时,仍保持调用方法中调用之前的污染状态;
在返回语句的其他情况下,被调用方法m中所有污点访问路径上的污点状态都会被传递到调用方法中;
8.根据权利要求1所述的安卓应用程序安全性检测方法,其中步骤5b)中对调用返回语句上的污点传播进行规范,是根据调用返回语句中数据传递关系,规定如下操作:
如果访问路径以参数开始或者调用对象c已被标记为污染状态,需检查参数和c的污点状态是否允许通过被调用方法m传播:如果参数和c在m中被删除,就不允许传播,否则,就允许传播;
对于本地方法调用,只特殊处理System.arraycopy这个唯一被经常调用的方法,如果该方法的第一个参数在调用之前被标记为污染,则第三个参数也会被标记为污染,对于其他本地方法调用,则规定当有一个参数在调用之前被污染过,则所有的调用参数和返回值都被标记为污染;
9.根据权利要求1所述的安卓应用程序安全性检测方法,其特征在于步骤6a)在步骤(4)中已生成的过程间控制流图基础上,对被分析文件进行数据流分析,在数据流分析过程中生成污点访问路径,是通过在变量修改过程中注入上下文信息,并对指向同一内存空间的不同对象属性的等价拼接,来生成污点访问路径的。
CN201510953538.9A 2015-12-17 2015-12-17 安卓应用文件的安全性检测方法 Active CN105550594B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510953538.9A CN105550594B (zh) 2015-12-17 2015-12-17 安卓应用文件的安全性检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510953538.9A CN105550594B (zh) 2015-12-17 2015-12-17 安卓应用文件的安全性检测方法

Publications (2)

Publication Number Publication Date
CN105550594A true CN105550594A (zh) 2016-05-04
CN105550594B CN105550594B (zh) 2018-05-25

Family

ID=55829781

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510953538.9A Active CN105550594B (zh) 2015-12-17 2015-12-17 安卓应用文件的安全性检测方法

Country Status (1)

Country Link
CN (1) CN105550594B (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106203113A (zh) * 2016-07-08 2016-12-07 西安电子科技大学 安卓应用文件的隐私泄露监控方法
CN106778254A (zh) * 2016-11-24 2017-05-31 四川无声信息技术有限公司 隐私泄露检测方法及系统
CN107301347A (zh) * 2017-07-26 2017-10-27 南京邮电大学 一种基于静态分析获取Hbuilder App调用图的方法
CN107330345A (zh) * 2017-07-05 2017-11-07 北京理工大学 一种检测隐私数据泄露的方法和装置
CN107368741A (zh) * 2016-05-13 2017-11-21 南京理工大学 一种基于静态分析的Android应用JavaScript安全漏洞检测方法
CN107886000A (zh) * 2017-11-13 2018-04-06 华中科技大学 一种软件漏洞检测方法、分级响应方法及软件漏洞检测系统
WO2018086294A1 (zh) * 2016-11-14 2018-05-17 平安科技(深圳)有限公司 应用软件安全漏洞检测方法、系统、设备及存储介质
CN108090364A (zh) * 2017-11-29 2018-05-29 链家网(北京)科技有限公司 一种数据泄漏源的定位方法及系统
CN108268773A (zh) * 2016-12-30 2018-07-10 南京理工大学 Android应用升级包本地存储安全性检测方法
CN108334772A (zh) * 2017-01-19 2018-07-27 南京理工大学 一种Android应用签名攻击检测方法
CN108846282A (zh) * 2018-06-04 2018-11-20 西安电子科技大学 基于静态污点分析的安卓应用程序权限泄露漏洞检测方法
CN109078331A (zh) * 2018-07-19 2018-12-25 广州华多网络科技有限公司 模拟按键检测方法、装置、计算机设备及存储介质
CN109214188A (zh) * 2017-06-30 2019-01-15 阿里巴巴集团控股有限公司 一种漏洞分析方法和装置及数据处理方法和装置
CN111723382A (zh) * 2020-07-24 2020-09-29 江西师范大学 动态Android程序漏洞验证方法和装置
CN111966346A (zh) * 2020-09-09 2020-11-20 支付宝(杭州)信息技术有限公司 应用系统的污点分析方法及装置
CN112632551A (zh) * 2021-03-11 2021-04-09 北京邮电大学 一种第三方库信息泄露检测方法及装置
CN113138924A (zh) * 2021-04-23 2021-07-20 扬州大学 一种基于图学习的线程安全代码识别方法
WO2021232279A1 (zh) * 2020-05-20 2021-11-25 深圳市欢太科技有限公司 文件泄露漏洞的检测方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140059690A1 (en) * 2012-02-16 2014-02-27 Nec Laboratories America, Inc. Method for Scalable Analysis of Android Applications for Security Vulnerability
CN104766012A (zh) * 2015-04-09 2015-07-08 广东电网有限责任公司信息中心 基于动态污点追踪的数据安全动态检测方法及系统
CN104834859A (zh) * 2015-04-24 2015-08-12 南京邮电大学 一种Android应用中恶意行为的动态检测方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140059690A1 (en) * 2012-02-16 2014-02-27 Nec Laboratories America, Inc. Method for Scalable Analysis of Android Applications for Security Vulnerability
CN104766012A (zh) * 2015-04-09 2015-07-08 广东电网有限责任公司信息中心 基于动态污点追踪的数据安全动态检测方法及系统
CN104834859A (zh) * 2015-04-24 2015-08-12 南京邮电大学 一种Android应用中恶意行为的动态检测方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
刘涛 等: "Android应用隐私泄露的自动化检测", 《计算机应用与软件》 *
彭智俊 等: "用静态信息流分析检测Android应用中的日志隐患", 《小型微型计算机系统》 *
李远玲: "Soot的Java程序控制流分析及图形化输出", 《计算机系统应用》 *

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107368741A (zh) * 2016-05-13 2017-11-21 南京理工大学 一种基于静态分析的Android应用JavaScript安全漏洞检测方法
CN106203113B (zh) * 2016-07-08 2018-11-16 西安电子科技大学 安卓应用文件的隐私泄露监控方法
CN106203113A (zh) * 2016-07-08 2016-12-07 西安电子科技大学 安卓应用文件的隐私泄露监控方法
WO2018086294A1 (zh) * 2016-11-14 2018-05-17 平安科技(深圳)有限公司 应用软件安全漏洞检测方法、系统、设备及存储介质
CN106778254A (zh) * 2016-11-24 2017-05-31 四川无声信息技术有限公司 隐私泄露检测方法及系统
CN106778254B (zh) * 2016-11-24 2020-05-01 四川无声信息技术有限公司 隐私泄露检测方法及系统
CN108268773A (zh) * 2016-12-30 2018-07-10 南京理工大学 Android应用升级包本地存储安全性检测方法
CN108268773B (zh) * 2016-12-30 2021-12-28 南京理工大学 Android应用升级包本地存储安全性检测方法
CN108334772A (zh) * 2017-01-19 2018-07-27 南京理工大学 一种Android应用签名攻击检测方法
CN109214188B (zh) * 2017-06-30 2022-05-27 阿里巴巴集团控股有限公司 一种漏洞分析方法和装置及数据处理方法和装置
CN109214188A (zh) * 2017-06-30 2019-01-15 阿里巴巴集团控股有限公司 一种漏洞分析方法和装置及数据处理方法和装置
CN107330345B (zh) * 2017-07-05 2020-11-27 北京理工大学 一种检测隐私数据泄露的方法和装置
CN107330345A (zh) * 2017-07-05 2017-11-07 北京理工大学 一种检测隐私数据泄露的方法和装置
CN107301347A (zh) * 2017-07-26 2017-10-27 南京邮电大学 一种基于静态分析获取Hbuilder App调用图的方法
CN107886000A (zh) * 2017-11-13 2018-04-06 华中科技大学 一种软件漏洞检测方法、分级响应方法及软件漏洞检测系统
CN108090364A (zh) * 2017-11-29 2018-05-29 链家网(北京)科技有限公司 一种数据泄漏源的定位方法及系统
CN108090364B (zh) * 2017-11-29 2020-05-08 贝壳找房(北京)科技有限公司 一种数据泄漏源的定位方法及系统
CN108846282A (zh) * 2018-06-04 2018-11-20 西安电子科技大学 基于静态污点分析的安卓应用程序权限泄露漏洞检测方法
CN109078331B (zh) * 2018-07-19 2021-09-21 广州华多网络科技有限公司 模拟按键检测方法、装置、计算机设备及存储介质
CN109078331A (zh) * 2018-07-19 2018-12-25 广州华多网络科技有限公司 模拟按键检测方法、装置、计算机设备及存储介质
WO2021232279A1 (zh) * 2020-05-20 2021-11-25 深圳市欢太科技有限公司 文件泄露漏洞的检测方法、装置、电子设备及存储介质
CN111723382A (zh) * 2020-07-24 2020-09-29 江西师范大学 动态Android程序漏洞验证方法和装置
CN111966346A (zh) * 2020-09-09 2020-11-20 支付宝(杭州)信息技术有限公司 应用系统的污点分析方法及装置
CN111966346B (zh) * 2020-09-09 2022-05-10 支付宝(杭州)信息技术有限公司 应用系统的污点分析方法及装置
CN112632551A (zh) * 2021-03-11 2021-04-09 北京邮电大学 一种第三方库信息泄露检测方法及装置
CN112632551B (zh) * 2021-03-11 2021-09-28 北京邮电大学 一种第三方库信息泄露检测方法及装置
CN113138924A (zh) * 2021-04-23 2021-07-20 扬州大学 一种基于图学习的线程安全代码识别方法
CN113138924B (zh) * 2021-04-23 2023-10-31 扬州大学 一种基于图学习的线程安全代码识别方法

Also Published As

Publication number Publication date
CN105550594B (zh) 2018-05-25

Similar Documents

Publication Publication Date Title
CN105550594A (zh) 安卓应用文件的安全性检测方法
CN107832619B (zh) Android平台下应用程序漏洞自动化挖掘系统及方法
JP5042315B2 (ja) ソースコード内のセキュリティ脆弱性の検出
US8850581B2 (en) Identification of malware detection signature candidate code
US10025688B2 (en) System and method for detecting data extrusion in software applications
CN110225029B (zh) 注入攻击检测方法、装置、服务器及存储介质
CN102243608A (zh) 基于全局数据结构描述的软件安全测试方法
Gao et al. Android testing via synthetic symbolic execution
CN113158189B (zh) 一种恶意软件分析报告生成方法、装置、设备和介质
CN104573503A (zh) 一种内存访问溢出的检测方法及装置
CN105653946A (zh) 基于组合事件行为触发的Android恶意行为检测系统及其检测方法
Ren et al. Making smart contract development more secure and easier
CN109325353A (zh) 一种针对家用路由器的聚类漏洞分析方法
CN112131120B (zh) 一种源代码缺陷检测方法及装置
KR101696694B1 (ko) 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치
CN113987517A (zh) 基于物联网固件的漏洞挖掘方法、装置、设备及存储介质
CN104866764A (zh) 一种基于对象引用图的Android手机恶意软件检测方法
CN112688966A (zh) webshell检测方法、装置、介质和设备
CN111913878A (zh) 基于程序分析结果的字节码插桩方法、装置及存储介质
CN112817877B (zh) 异常脚本检测方法、装置、计算机设备和存储介质
CN101901184A (zh) 检查应用程序漏洞的方法、装置和系统
Ren et al. Scstudio: a secure and efficient integrated development environment for smart contracts
CN111709026B (zh) 静态安全检测方法、装置、计算机设备和存储介质
CN107766253A (zh) 一种基于模型变更的自动维护测试脚本的方法
CN116932381A (zh) 小程序安全风险自动化评估方法及相关设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant