一种应用程序间组件能力泄露动态检测方法和系统的制作方法

文档序号:9826205阅读:279来源:国知局
一种应用程序间组件能力泄露动态检测方法和系统的制作方法
【技术领域】
[0001]本发明属于移动平台访问控制技术领域,具体涉及一种应用程序间组件能力漏洞的动态检测方法和系统。
【背景技术】
[0002]随着移动终端设备的发展,智能手机已经成为人们日常生活中必不可少的一部分。根据IDC 2015年8月份发布的世界范围内智能手机系统的市场份额报告显示,自2012年以来,Android操作系统一直以绝对优势的市场占有率位列榜首,其中,2015年第二季度,An droid的市场占有率为82.8%。作为当前最流行的智能终端操作系统,Android安全形势日益严峻。由于Android应用程序开发的低门槛性,使得Android应用程序数量迅速增长。根据AppBrain统计的数据显示,截止2015年11月,Google Play应用市场上有效的应用已经超过180万个。除了Google的官方应用市场,国内第三方应用市场也得到蓬勃发展,比达咨询发布的《2015年5月中国第三方安卓应用商店市场研究报告》显示,截止2015年5月,国内第三方应用市场以80.0%的市场份额占据主导地位。然而,国内第三方应用市场安全审查力度不足,导致应用市场上存在大量恶意、漏洞的应用程序。除此之外,Android作为开源的操作系统,不同厂商在Google发布Android新版本后会进行不同的定制,从而引入一些系统漏洞,且Android碎片化严重,导致系统漏洞无法及时修复。在巨大的利益驱动下,恶意厂商或团队会利用系统及应用程序中存在的漏洞,执行恶意操作,严重威胁着Android手机用户的隐私、财产等安全。
[0003]Android应用程序由组件组成,应用程序之间的通信主要通过组件间通信来实现。尽管Android系统设计了权限机制来保护Android系统的敏感资源和功能,由于应用程中漏洞的存在以及Android权限机制本身存在的缺陷,使得没有权限的应用程序可以利用组件漏洞来获取敏感信息,执行敏感操作,从而导致组件能力发生泄露。针对组件能力泄露,研究者已提出部分应对策略,如静态审查应用程序中存在的漏洞。由于Android是基事件驱动的系统,并且频繁使用组件间通信,静态分析的方法无法捕获所有的数据流和控制流,而且Android运行时包含大量Android应用程序正常运行所需要的代码库,静态分析很难兼顾准确性与效率。此外,目前大部分基于静态分析方法的检测工具针对单个应用程序进行分析,而现实中的很多安全威胁是由应用程序之间的交互引入的,已有的静态分析方法无法检测。与此同时,一些研究人员提出了基于策略的强制访问控制系统,根据策略匹配,来控制应用程序间的通信,尽管研究人员努力提出详尽的策略来控制组件间通信,也会存在误报的情况,导致正常的应用程序通信被阻止,使应用程序崩溃等。

【发明内容】

[0004]针对Android应用程序间组件能力泄露,本发明提出了一种通过追踪跨应用程序通信来动态检测应用程序组件能力漏洞的方法及系统。通过对Android Binder通信机制以及组件通信监控机制的扩展,准确定位执行敏感操作的源组件,根据基于上下文信息的组件调用链,判断组件间通信是否发生能力泄露,并对权限检查机制进行扩展,实时控制应用程序间组件能力泄露导致的非法敏感操作。
[0005]本发明的检测应用程序组件能力漏洞的方法及系统,通过对Android系统的扩展,记录并传播跨程序通信的线程级调用链,利用线程级调用链及组件间通信信息,获取组件级调用链,根据组件级调用链以及细粒度策略,判断组件间通信是否发生能力泄露。通过对权限机制进行扩展,实时控制应用程序间组件能力泄露导致的非法敏感操作。
[0006]具体来说,本发明采用的技术方案如下:
[0007]一种应用程序间组件能力泄露动态检测方法,其步骤包括:
[0008]I)设置Android应用程序线程级调用链初始信息;
[0009]2)扩展Android Binder通信机制,在不同进程之间传递线程级调用链并对其进行扩展;
[0010]3)扩展组件间通信监控机制,捕获组件间通信信息,并根据步骤2)得到的线程级调用链获取组件级调用链;
[0011]4)根据步骤3)得到的组件调用链,追踪Android的跨应用程序通信,在执行敏感操作时,获取当前线程的线程级调用链及组件级调用链,并根据调用链分析组件间通信是否发生组件能力泄露。
[0012]进一步的,还包括步骤5),该步骤扩展Android权限检查机制,根据步骤4)得到的分析结果,实时控制组件能力泄露导致的非法敏感操作。
[0013]进一步的,步骤I)在组件间通信函数被启动时,开始追踪应用程序的通信,包括应用程序内组件通信和应用程序间组件通信。
[0014]进一步的,步骤2)扩展Android Binder通信机制,将调用链信息添加到Binder通信数据结构中并进行传输,从而追踪跨程序通信;在Binder驱动进行数据解析时,根据目标线程的信息进行扩展,即扩展应用程序间通信的线程级调用链。
[0015]进一步的,步骤3)根据线程级调用链获取组件级调用链的方法是:在系统服务ActivityManagerService进行目标组件解析时,记录组件间调用信息,并根据当前进程的线程级调用链ID,查找是否保存与该ID相匹配的组件调用信息,若没有,则将调用和被调用组件的信息保存在ActivityManagerService中,否则,则将被调用组件加入到已有的组件信息中。
[0016]进一步的,步骤4)中利用扩展的系统API,获取当前线程的调用链,分析当前调用链中包含的应用程序,传递的Intent,以及应用程序的权限集,判断是否发生组件能力泄
Mo
[0017]进一步的,步骤5)中扩展Android权限机制,包括扩展Framework权限机制及扩展Linux权限机制,在对敏感操作进行权限检查时,根据步骤4)的分析结果,实时控制组件能力泄露导致的非法敏感操作。
[0018]—种采用上述方法的应用程序间组件能力泄露动态检测系统,其包括:
[0019]调用链初始化模块,用于在组件间通信函数启动时,记录调用链;
[0020]Binder通信监控模块,用于监控Andro id中所有通过Binder机制进行的进程间通信,获取应用程序间通信的线程级调用链;
[0021]组件间通信监控模块,用于监控应用程序内以及应用程序间的组件间通信,生成组件级调用链;
[0022]调用链分析模块,在执行敏感操作时,通过基于上下文信息的调用链,分析程序间通信,判断当前组件的敏感操作是否属于正常行为,若不是,分析是否发生组件能力泄露。
[0023]进一步的,还包括权限机制加强模块,用于扩展Android权限机制,根据调用链分析模块做出决策,当发生组件通信能力泄露时,拒绝对敏感资源的访问。
[0024]本发明的优点和积极效果如下:
[°°25] 本发明通过修改Android Binder机制、组件间通信监控机制以及权限检查机制,追踪应用程序之间的通信,找到触发当前敏感操作的源信息,准确定位执行敏感操作的源组件,根据基于上下文信息的组件调用链,判断组件间通信是否发生能力泄露,在运行时动态监控,实时阻止组件间通信中发生的能力泄露。同时,利用运行时监控的方法,不仅可以追踪单个应用程序内的组件间通信,还可以追踪应用程序之间的组件间通信,从而检测跨应用程序通信中存在的组件能力泄露问题,并进一步对权限机制进行加强,阻止跨应用程序导致的组件通信能力泄露。
【附图说明】
[0026]图1是本发明的一种应用程序间组件能力泄露动态监测系统的模块组成示意图。
【具体实施方式】
[0027]下面通过具体实例和附图,对本发明做进一步说明。
[0028]如图1所示,一种应用程序间组件能力泄露实时检控系统,其步骤包括:
[0029]1、调用链初始化模块
[0030]Android应用程序包含4大组件Activity,Service ,Content Provider ,BroadcastReceiver,应用程间通信主要是通过组件间通信进行的。Android提供了触发组件间通信的函数,即 ICC函数,启动Activity的含有startActivity、startActivityForResult等,启动Serv ice组件的函数有 s tart Serv ice、bindSer V ice等,调用Con tent Provider 的函数有query、insert、delete等,启动Broadcast Receiver的函数sendBroadcast等。本发明修改这些组件间通信函数,在组件间通信被触发时,为当前线程的调用链设置当初始信息,以及设置调用链ID作为调用链的唯一标识。
[0031]为了保证源信息的准确性,在设置调用链时,首先检查当前线程是否存在调用链,若存在,则说明当前组件并不是源组件,不需要设置调用链。调用链初始信息包
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1