一种基于上下文信息的Android组件间隐私泄露行为识别方法及系统与流程

文档序号:11432536阅读:314来源:国知局

本发明属于移动平台隐私泄露检测技术领域,具体涉及一种android应用程序组件间通信导致的隐私泄露行为识别方法及系统。



背景技术:

随着移动终端设备的发展,智能手机已经成为人们日常生活中必不可少的一部分。在当前流行的智能终端操作系统中,android系统是市场占有率最高的系统。由于android应用程序开发的低门槛性,以及应用市场审查力度不足等原因,导致第三方应用市场上存在大量的漏洞应用程序以及恶意应用程序。手机设备上存储着大量的用户隐私数据,由于漏洞及恶意应用程序的存在,用户的隐私数据在有意或无意的情况下被泄露,严重威胁着android手机用户的隐私安全。

为了减缓android应用程序中存在的隐私泄露问题,一些静态分析方法被提出。部分静态分析方法只针对单个组件,分析组件内的隐私泄露行为,而一些隐私泄露行为是由组件间通信导致的。android应用程序开发者通过开发不同的组件来实现应用程序丰富的功能,此外android系统提供了组件间通信机制,使应用程序不同组件之间进行频繁交互。但是这种组件间通信(icc)机制也会被恶意应用程序利用,从而导致组件间的隐私泄露。为了减缓组件间通信导致的隐私泄露行为,一些研究人员对android应用程序执行了icc分析,但仍存在不足之处,比如,部分已有研究没有把源组件和目的组件链接起来执行数据流分析、考虑组件不全面等。此外,敏感信息的数据流可能是合法的也可能是恶意的,这些已经提出的方法并没有去区分合法的隐私传输行为和恶意的隐私泄露行为。

为了准确的识别android应用程序中组件间通信导致的隐私泄露行为,需要在降低误报率的同时,区分合法和恶意的隐私传输行为。本发明提出了一个静态污点分析工具,检测组件间的隐私传输行为,并基于隐私传输行为路径上的上下文信息,识别组件间通信导致的恶意隐私泄露行为。



技术实现要素:

针对android应用程序组件间通信导致的隐私泄露行为,本发明提出了一种基于上下文信息的android组件间隐私泄露行为识别方法及系统。本发明通过静态解析组件间通信参数,利用概率模型匹配通信组件,提高组件间通信分析的准确性;通过代码插装技术,链接通信组件,并执行静态污点分析,检测应用程序存在的隐私泄露行为。此外,当前大部分静态行为分析方法只进行了隐私相关行为的检测,而没有加以区分,隐私相关的行为并非一定是隐私泄露行为,为了识别组件间通信导致的隐私泄露行为,本发明执行了数据流和控制流分析,提取了敏感行为路径的下文信息,并提出了基于上限文信息的策略,识别恶意的组件间通信导致的隐私泄露。

本发明通过对android应用程序反编译,提取组件间通信参数;利用概率模型以及组件间通信参数匹配相互通信的两个组件,形成组件通信链;根据组件通信链,对应用程序源码进行插桩,实施静态污点分析,获取隐私传输相关的行为。通过提取行为路径上的上下文信息,根据基于上下文信息的策略,识别组件间通信导致的隐私泄露行为。

具体来说,本发明采用的技术方案如下:

一种基于上下文信息的隐私泄露行为识别方法,其步骤包括:

1)android应用程序反编译,提取组件间通信参数信息;

2)根据步骤1)得到的组件间通信参数信息,匹配相互通信的两个组件,构造组件调用链;

3)根据步骤2)得到的组件调用链,对android应用程序执行静态插桩,连接相互通信的两个组件,进一步对插桩后的应用程序代码执行静态污点分析,获取组件间隐私信息传输相关的行为路径;

4)根据步骤3)得到的隐私传输相关的行为路径,提取行为路径上的上下文信息;

5)根据步骤4)得到的行为路径上的上下文信息,判断隐私传输行为是否属于隐私泄露行为。

进一步的,步骤1)通过soot工具将android应用程序反编译生成jimple文件,静态分析jimple文件,获取组件间通信相关的参数信息,包括intent,intentfilter等信息。

进一步的,步骤2)根据提取的组件间通信参数信息,静态匹配相互通信的两个组件,形成组件调用链,并将调用链存储在数据库中。

进一步的,步骤3)根据构造的组件调用链信息,对android应用程序执行静态插桩,连接相互通信的组件,执行静态污点分析,获取隐私信息传输相关的行为路径。

进一步的,步骤4)通过数据流和控制流分析,获取隐私传输相关地行为路径上的上下文信息,上下文信息包括隐私相关的函数、相应的权限、触发事件、环境参数等。其中,利用已有工具flowdroid的分析结果,获取行为路径上隐私相关的函数;利用已有研究pscout中提供的函数及相应的权限的映射,获取隐私相关的函数对应的权限;通过记录所有调用隐私相关函数的入口函数,并根据用户是否参与,可以将触发事件分为ui事件(需要用户参与)和非ui事件(无需用户参与);已知隐私相关的函数调用和相应的触发事件,通过控制流分析,获取一系列控制隐私相关函数调用的环境参数。

进一步的,步骤5)中利用隐私传输行为路径上的上下文信息,分析隐私信息的传输行为,判断隐私传输行为是否属于组件间隐私泄露行为。

一种采用上述方法的隐私泄露行为识别系统,其包括:

应用程序反编译模块,用于将android应用程序反编译生成jimple文件,并静态分析jimple文件,获取组件间通信相关的参数信息;

调用链构造模块,用于静态匹配相互通信的组件,构造组件调用链,并存入数据库中,用于应用程序组件插桩;

静态污点分析模块,用于对android应用程序执行组件间静态污点分析,获取组件间隐私传输相关的行为路径;

上下文信息提取模块,用于提取隐私传输行为路径上的上下文信息;

icc隐私泄露行为识别模块,利用隐私传输行为路径上的上下文信息,分析隐私信息的传输行为,判断隐私信息传输行为是否属于组件间隐私泄露行为。

本发明的优点和积极效果如下:

本发明针对android应用程序中组件间通信导致的隐私泄露行为进行分析,通过对android应用程序反编译,提取组件间通信参数,并利用概率模型以及组件间通信参数匹配相互通信的两个组件,形成组件通信链;根据组件通信链,对应用程序源码进行插桩,实施静态污点分析,获取组件间的隐私传输相关的行为。此外,android应用程序中的隐私传输行为并不一定是恶意行为,本发明对获取的组件间隐私传输相关的行为进行了区分,通过提取行为路径上的上下文信息,识别组件间通信导致的隐私泄露行为。

附图说明

图1是本发明的一种基于上下文信息的android组件间隐私泄露行为识别方法的模块组成示意图。

具体实施方式

下面通过具体实例和附图,对本发明做进一步说明。

如图1所示,一种基于上下文信息的android组件间隐私泄露行为识别方法,其步骤包括:

1、应用程序反编译模块

本发明基于jimple文件,执行静态分析,获取android应用程序组件间通信相关的参数信息。具体地,本实施例利用soot工具实现android应用程序反编译。

2、组件调用链构造模块

一条组件间通信链是指一个源组件和一个目的组件之间连接。源组件代码中包含icc函数,并向目的组件发送intent消息。intent消息描述了目的组件的各类信息。为了匹配相互通信的两个组件,android系统在运行时根据intent的参数信息进行intent解析,匹配目的组件。在静态icc分析中,为了准确的分析组件间通信,需要准确的解析icc参数值。本发明利用已有研究ic3中的方法解析icc参数值。根据解析的icc参数值,匹配源组件和目的组件,构造组件调用链。组件匹配的准确性直接影响了icc分析的准确性,为了提高icc分析的准确性,本发明利用已有研究primo中的概率模型来匹配相互通信的组件。

3、静态污点分析模块

android应用程序是基于java开发的程序,但和其它的java的程序不同。由于生命周期函数、回调函数以及icc函数的存在,android应用程序代码具有不连续性。android应用程序是基于组件的应用程序,每个组件具有一系列生命周期函数(如oncreate()函数)、回调函数(如onclick()函数)。除此之外,应用程序内、应用程序间以及应用程序和系统之间存在着频繁的组件间通信,组件间通信通过调用icc函数来进行,如调用startactivity()函数启动activity组件。在android应用程序中,这三类函数不会被应用程序代码直接调用,而是由android操作系统来处理。为了准确的执行静态污点分析,需要考虑android应用程序代码中存在的不连续性问题。本发明利用了已有研究中提出的工具flowdroid和iccta来解决android应用程序代码中存在的不连续性问题。其中,flowdroid提供了android组件生命周期函数和回调函数的建模,iccta给出了通过插装技术解决icc函数导致的不连续性问题的方法。通过对icc执行静态污点分析,得到组件间隐私传输行为的集合。

4、上下文信息提取模块

隐私传输行为由一系列上下文信息触发。本发明考虑的上下文信息包括隐私相关的函数(apisource和apisink),相应的权限(permsource和permsink),触发事件(actevents)以及一系列环境参数(attrenvs)。每一条隐私传输行为路径pathprivacy(source,sink)中,存在一个获取隐私数据的source函数,和一个泄露隐私数据的sink函数,apisource和apisink可以根据已有工具flowdroid的分析结果得到。通过匹配已有研究pscout中提供的api及相应的权限,可以获取permsource和permsink。本发明将触发事件分为ui事件和非ui事件,在分析过程中,本发明记录所有调用隐私相关函数的入口函数,并根据用户是否参与进行分类。为了提取从入口函数到隐私相关函数调用过程中控制条件语句,本发明采用了已有研究appcontext中提出的缩减的过程间控制流图(ricfg)。和过程间控制流图(icfg)相比,ricfg是包含所有从入口点到敏感函数调用路径的icfg子图。已知隐私相关的函数调用和相应的触发事件,可以得到一系列控制敏感函数调用的环境参数。

5、icc隐私泄露行为识别模块

本发明提出了一个基于上下文信息的策略来识别组件间通信导致的隐私泄露行为。本发明针对隐私传输相关的行为进行分析,所以只考虑source函数受权限保护的隐私传输行为pathprivacy(source,sink),也就是

在一条隐私传输相关的数据流路径中,如果隐私传输行为的触发事件属于ui事件,也就是该隐私传输行为是在用户的参与下触发的,本发明认为它是一个敏感行为但不是一个恶意行为。如果触发事件属于非ui事件,本发明会根据隐私传输行为路径上控制条件中的环境参数执行进一步判断。actevents代表了该隐私传输行为中source和sink函数的所有触发事件的集合,nonuievent代表一条隐私传输行为路径上的所有非ui事件的集合,如果存在一个触发事件actevent∈nonuievent,且触发事件对应的控制条件中存在stmtcon属于环境变量attrenvs,该行为被判定为隐私泄露行为。

以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1