CN104992081A - 一种Android应用程序第三方代码的安全增强方法 - Google Patents
一种Android应用程序第三方代码的安全增强方法 Download PDFInfo
- Publication number
- CN104992081A CN104992081A CN201510353989.9A CN201510353989A CN104992081A CN 104992081 A CN104992081 A CN 104992081A CN 201510353989 A CN201510353989 A CN 201510353989A CN 104992081 A CN104992081 A CN 104992081A
- Authority
- CN
- China
- Prior art keywords
- call
- application program
- main
- pms
- application
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 230000008569 process Effects 0.000 claims abstract description 63
- 238000004891 communication Methods 0.000 claims abstract description 13
- 230000007246 mechanism Effects 0.000 claims abstract description 13
- 230000000694 effects Effects 0.000 claims description 16
- 230000000875 corresponding effect Effects 0.000 claims description 13
- 230000002159 abnormal effect Effects 0.000 claims description 6
- 239000003795 chemical substances by application Substances 0.000 claims description 5
- 230000002596 correlated effect Effects 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 238000012546 transfer Methods 0.000 claims description 3
- 238000011156 evaluation Methods 0.000 abstract description 8
- 239000003999 initiator Substances 0.000 abstract 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 9
- 238000012360 testing method Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 102000006479 Heterogeneous-Nuclear Ribonucleoproteins Human genes 0.000 description 1
- 108010019372 Heterogeneous-Nuclear Ribonucleoproteins Proteins 0.000 description 1
- 240000008042 Zea mays Species 0.000 description 1
- 235000005824 Zea mays ssp. parviglumis Nutrition 0.000 description 1
- 235000002017 Zea mays subsp mays Nutrition 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 235000005822 corn Nutrition 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000035515 penetration Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开了一种Android应用程序第三方代码的安全增强方法,包括:在应用程序进程内利用系统异常堆栈数据获取涉及用户隐私数据的调用链,系统根据调用链信息获取发起调用的主体信息,利用进程间通信机制将调用发起者的主体信息发送到系统访问控制评估引擎,评估引擎根据主体信息与第三方代码包列表判断调用来源,根据调用来源执行相应的用户策略,根据用户选择与应用程序权限实施该次调用的权限评估,将评估结果进行缓存,根据评估结果返回相应的数据。本发明能在兼容原有应用程序结构与原有第三方代码框架的基础上以较小的性能开销为代价实现针对Android应用程序第三方代码的安全增强。
Description
技术领域
本发明属于移动安全和访问控制领域,更具体地,涉及一种Android应用程序第三方代码的安全增强方法。
背景技术
国际化标准组织对“计算机安全”的定义为:“为数据处理系统建立和采取的技术和管理的安全保护,保护计算机硬件、软件数据不因偶然和恶意的原因而遭到破坏、更改和泄漏”。作为移动互联网时代计算的主要载体,移动智能终端存储着更多的隐私数据,包括联系人信息、通话记录和地理位置信息等,从而更易产生安全问题,用户隐私数据泄漏可能带来灾难性的后果,因此其安全性需要得到足够的重视。
Android生态的开放性导致应用程序内普遍存在第三方代码,这种第三方代码框架在提高开发者效率的同时为用户带来了一定的安全风险——可能打破用户获取服务与付出隐私之间形成的平衡,原因是第三方代码在不参与应用程序核心功能的条件下出于某些目的同样需要获取用户的个人数据。Android应用程序第三方代码存在的安全威胁在本质上都可以理解为第三方代码对权限的滥用,产生此问题的原因正是系统本身的访问控制机制无法区分隐私访问请求的来源。
为解决Android应用程序第三方代码中所存在的安全问题,国内外的研究人员已经进行了一些探索与研究。AdDroid(Pearce P,Felt A P,NunezG,et al.Addroid:Privilege separation for applications andadvertisers in android.in:Proceedings of the 7th ACM Symposium onInformation,Computer and Communications Security.ACM,2012:71-72.)从最常见的广告库入手,提出一种全新的方案将广告库和主应用程序运行在不同的进程中——广告库与主应用程序分别运行在AdDroid进程和应用程序进程中,进一步利用Android系统本身的访问控制机制将二者在权限上进行隔离,以此达到安全增强的目的。为实现此项改进,方案引入了新的系统级服务处理广告业务并增加相关的应用程序编程接口和权限。也就是说,AdDroid改变原有的第三方代码框架,即增加新的应用程序编程接口调用AdDroid服务获取广告并进行显示。可见,使用AdDroid需要开发者在应用程序中调用新加入的应用程序编程接口,并需要将原有的Android应用程序第三方广告框架进行升级。AdSplit(Shekhar S,Dietz M,Wallach D S.AdSplit:Separating Smartphone Advertising fromApplications.in:USENIX Security Symposium.2012:553-567.)同AdDroid一样,也从广告库入手研究Android应用程序第三方代码的安全性,并提出一种新的安全增强方案。其思路来自于Web应用程序中广告模式——Web广告通常运行在一个单独的Frame中,与主Web应用程序分离。受此模式启发,AdSplit提出将广告库和主应用程序运行在不同的Activity中,并将这两个Activity运行在不同的进程中。这样一来,广告和应用程序本身拥有不同的进程ID与用户ID,即广告与主应用程序隶属于两个独立的访问控制主体,无法共享权限。具体方法是在清单文件中加入相关的描述信息,使应用程序在安装时被解析为两个进程(Activity)运行,通过设置Activity的透明效果使两者同时展现,并将两者的生命周期绑定在一起,使两者同步出现和消失。AFrame(Zhang X,Ahlawat A,Du W.AFrame:isolating advertisements from mobile applications in Android.in:Proceedings of the 29th Annual Computer Security ApplicationsConference.ACM,2013:9-18.)所提出的解决方案类似AdSplit,不同之处主要在于AFrame处理显示流程没有使用透明技术,而使用多重配置的方法;Compac(Wang Y,Hariharan S,Zhao C,et al.Compac:Enforcecomponent-level access control in Android.in:Proceedings of the4th ACM conference on Data and application security and privacy.ACM,2014:25-36.)以Android应用程序第三方代码中所存在的安全问题作为切入点,研究问题产生的技术背景与原因,发现Android访问控制机制中存在粒度较粗的问题,这是Android应用程序第三方代码中存在安全问题的原因。文章中提出一种针对Android访问控制粒度较粗问题的增强方案——Compac(Component Access Control),可以在访问控制的过程中区分主应用程序请求与第三方代码请求,进而将主应用程序与第三方代码在权限上进行隔离。具体方法是通过HOOK虚拟机的mterp方法获取调用链,并通过调用链降低访问控制的粒度,这样一来就能在访问控制评估过程中得到细粒度的主体信息。与此同时,修改清单文件的结构加入第三方代码包的描述信息,在运行时结合细粒度主体信息和第三方代码包信息实施组件粒度的访问控制,阻止第三方代码对用户隐私的肆意读取。
综上所述,当前关于Android应用程序第三方代码的安全增强方案分为两种方法:进程隔离与细化访问控制粒度。已有的解决方案均能在一定程度上解决第三方代码框架中所存在的安全问题,但从实施的角度来看,为达到安全增强的目的,已有解决方案均需要改变原有应用程序结构或者原有第三方代码框架,兼容性较差,不易于实施。
发明内容
针对现有技术的缺陷,本发明的目的是提出一种全新的针对Android应用程序第三方代码的安全增强方案,使之可以在兼容原有应用程序结构与原有第三方代码框架的条件下有效实施第三方代码隐私访问请求的动态评估,保护用户隐私。
为实现上述目的,本发明提供了一种针对Android应用程序第三方代码的安全增强方案,包括以下步骤:
步骤1.应用程序调用系统接口获取用户隐私数据,在应用程序进程内利用系统异常堆栈数据获取此次调用的调用链;
步骤2.通过调用链获取发起调用的细粒度主体信息,并通过与该应用程序的包名对比初步判断是否属于主应用程序代码,若判断结果为否则将所获取细粒度主体信息及相应的隐私数据标识通过进程间通信机制发送至系统包管理服务(Package Manager Service,PMS);反之直接返回隐私数据,结束整个流程;
步骤3.PMS接收步骤2中所发送的数据并结合评估缓存与第三方代码包列表进行访问控制评估,并将评估结果返回至应用程序进程;
步骤4.应用程序进程根据PMS返回结果弹出提示框,接受用户选择;
步骤5.系统根据用户选择创建相应的系统服务代理获取数据,进行相关的权限检查后返回数据,并更新评估缓存。
步骤1具体包括以下子步骤:
1.1应用程序发起隐私数据访问请求,即调用相关的API;
1.2在应用程序所在进程空间的API实现处创建Throwable对象;
1.3通过Throwable对象获取系统调用堆栈信息;
1.4根据系统调用堆栈信息获取本次调用的调用链;
步骤2具体包括以下子步骤:
2.1根据主体信息在调用链中的位置获取该次调用的细粒度主体信息,即发起调用的对象信息;
2.2根据所在进程的上下文信息获取该次调用Context对象;
2.3使用Context对象获取本次调用所属的应用程序包名;
2.4根据主体信息与应用程序包名判断本次调用的主体是否来自于应用程序本身;
2.5若主体属于应用程序代码本身转步骤(5),若主体不属于应用程序代码本身则转步骤(2.6);
2.6在应用程序进程内获取系统包管理服务PMS的远程代理对象;
2.7通过远程代理对象发起与PMS的进程间通信;
2.8将主体信息与涉及的隐私数据标识传输至PMS;
步骤3具体包括以下子步骤:
3.1 PMS所在进程接收应用程序进程所传输的主体信息与隐私数据标识;
3.2将主体信息与第三方代码包列表进行匹配,若主体信息并非属于第三方代码转步骤(3.6),反之执行步骤(3.3);
3.3判断评估缓存中是否存在本次放调用涉及主体的评估记录,若存在执行步骤(3.4),反之执行步骤(3.5);
3.4判断与本次请求主体相关的评估缓存中是否存在本次调用所请求的隐私数据标识,若存在执行步骤(3.6),反之执行步骤(3.5);
3.5向应用程序进程返回false,结束步骤3;
3.6向应用程序进程返回true,结束步骤3;
步骤4具体包括以下子步骤:
4.1接收PMS返回结果;
4.2若PMS返回为true,执行步骤(5),反之执行步骤(4.3);
4.3判断当前线程是否属于主线程,若属于主线程,执行步骤(4.6),反之执行步骤(4.4);
4.4通过线程上下文获取线程对象;
4.5创建Handler,使之运行在主线程中,并以此获取主线程对象;
4.6通过主线程对象获取当前屏幕最顶端的Activity,并获取其Context;
4.7通过Context创建阻塞式提示框,若用户选择允许访问该隐私数据,转步骤(5),反之转步骤(4.8);
4.8将本次调用结果返回空,结束整个调用流程;
步骤5具体包括以下子步骤:
5.1通过PMS代理更新评估缓存;
5.2创建相应的系统服务远程代理,并发起进程间通信向系统级核心服务请求隐私数据;
5.3系统进行权限检查;
5.4若通过权限检查,系统级服务向应用程序返回相应隐私数据,结束调用流程;反之抛出权限检查异常。
通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果:
1、实现了针对第三方代码的用户隐私保护。由于采用了步骤1.1,访问控制主体的描述信息是基于调用链获取的,可以获取细粒度的主体信息,即在访问控制评估的过程中实现细粒度的评估,从而区分第三方代码。
2、兼容原有应用程序结构。由于采用了步骤1.3,本发明可在应用程序运行时通过调用链获取访问控制请求主体信息,并依据所属应用程序包名与存储在系统中的第三方代码包列表实施评估,故不需要改变原有应用程序结构增加相关信息。
3、兼容原有第三方代码框架。在本发明所采取的步骤中,均不涉及改变应用程序第三方代码框架的流程,即本发明可以在不改动第三方代码框架的条件下实施。
4、系统整体开销小。由于采用了步骤1.2,在隐私数据相关的特定应用程序编程接口处开始整体流程,保证了本发明所增加的流程只影响到整体系统所有流程中较小的一部分,即对与隐私数据无关的模块不会产生性能上的影响。
附图说明
图1为本发明整体架构图;
图2为本发明整体流程图;
图3为本发明方法中步骤1的细化流程图;
图4为本发明方法中步骤2的细化流程图;
图5为本发明方法中步骤3的细化流程图;
图6为本发明方法中步骤4的细化流程图;
图7为本发明方法中步骤5的细化流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
以下首先就本发明的技术术语进行解释和说明:
Android:由Google主导开发的基于Linux内核的移动操作系统,以其开放的特性在移动操作系统市场上拥有较高的占有率;
虚拟机:指Android系统中的应用程序运行时,具体指Dalvik虚拟机;
Android应用程序:运行在Android系统中的应用程序,主要由Java语言开发;
主应用程序:Android应用程序的主体部分,即隶属于开发者的代码部分,主要包括应用程序的核心功能模块;
第三方代码:应用程序开发者为引入某一功能模块而引用的第三方开发单位提供的代码;
组件模型:Google提出的Android应用程序逻辑结构模型,即Android应用程序主体上均由Activity、Service、Broadcast Receiver和Content Provider四类组件组成;
安全增强:针对系统中存在的一类安全问题对系统相关安全机制进行改进,以解决此类安全问题;
隐私数据:用户存储在系统中的个人数据,在移动设备中主要包括联系人信息、通话记录、地理位置信息和设备相关信息等;
应用程序编程接口(Application Programming Interface,API):指一些预先定义的函数,其主要目的是让应用程序开发人员调用一组例程功能,而无须考虑其底层的源代码或理解其内部工作机制的细节;
调用链:在本发明中专指进行一次API调用所涉及的函数间跳转,以进程为领域,在Android中一次完整的API调用包含应用程序进程调用链与系统进程调用链两部分;
系统包管理服务(Package Manager Service,PMS):Android系统核心服务之一,负责应用程序包的安装、卸载以及权限的授权评估,运行在系统核心进程中;
软件开发工具包(Software Development Kit,SDK)库:指Android系统提供给开发者使用的应用程序开发包,在系统运行的过程中以共享库的方式存在于所有应用程序空间内,其权限为可读可执行;
Throwable对象:Java异常机制中的基类,其构造函数内一步一步地追踪方法的调用,直到追踪到线程的终端;
TelephonyManager:Android中与手机通信相关服务的客户端,所有与手机通信相关的API均需要通过TelephonyManager进行调用;
Context:本质是描述应用程序的上下文,通过该上下文可以获取系统核心服务的客户端,可以将其理解为组件与系统间沟通的桥梁,没有这个桥梁应用程序无法获取执行系统核心服务的客户端。需要指出的是,Activity与Service作为Android组件模型中的主角,其本身都是Context;
ActivityThread:在Android系统中管理应用程序进程的主线程的执行(相当于普通Java程序的main入口函数),并根据AMS(ActivityManagerService)的要求负责调度和执行Activity、Broadcast和其它组件;
主线程:指Android运行过程中是负责控制UI界面的显示、更新和控件交互的线程,又称UI线程,四大组件均运行在主线程中,在主线程中做耗时操作会导致程序出现卡顿甚至出现ANR(Application Not Responding)异常;
Looper:用于给一个线程添加一个消息队列(MessageQueue),并且循环等待,当有消息时会唤起线程来处理消息的一个工具,直到线程结束为止,可以利用其getMainLooper静态方法获取主线程Looper对象;
Handler:指Android系统中的一个类,主要参与Android系统中的消息传递机制。每一个Handler实例对象均隶属于一个线程,结合消息队列可以接受其他线程发来的消息;
Activity:Android应用程序四大组件之一,主要负责显示内容、与用户交互。在应用程序中,Activity通常表现为一个单独的界面,用于显示一些控件并监听处理用户的事件做出响应,Activity之间可以通过Intent机制进行通信。
以下结合实施例和附图对本发明做进一步说明。
产生Android应用程序第三方代码问题的原因在于应用程序本身与第三方代码隶属于不同的开发单位,应属于两个不同的访问控制主体,而系统在进行访问控制评估的过程中并没有对两者进行区分,导致第三方代码可以利用应用程序的权限读取用户隐私数据。本发明提出一种全新的安全增强方案,其目的是在兼容原有应用程序结构与原有第三方代码框架的条件下实施针对第三方代码隐私访问请求的动态评估。结合系统实现利用异常栈信息细化主体粒度,可在运行时判定请求是否来自于应用程序本身,进一步将已知的第三方代码库包名作为策略存储于系统访问控制评估引擎中,并依此进行访问控制评估。
图1显示了针对Android应用程序第三方代码的安全增强方法整体架构,其中缺角矩形表示经过修改的系统模块。可以看出,本方法主要的工作主要集中在以下两个部分:首先,在涉及隐私数据的API处进行调用链的获取,即修改Android SDK库以获取调用链;其次,修改PMS增加相关函数支持应用程序进程查询其调用是否来自第三方代码,并为评估结果增加缓存模块。
图2显示了针对Android应用程序第三方代码的安全增强方法整体流程,具体包括以下步骤:
步骤1.应用程序调用系统接口获取用户隐私数据,在应用程序进程内利用系统异常堆栈数据获取此次调用的调用链;
步骤2.通过调用链获取发起调用的细粒度主体信息,并通过与该应用程序的包名对比初步判断是否属于主应用程序代码。若判断结果为否则将所获取细粒度主体信息及相应的隐私数据标识通过进程间通信机制发送至系统包管理服务PMS;反之直接返回隐私数据,结束整个流程;
步骤3.PMS接收步骤2中所发送的数据,结合评估缓存与第三方代码包列表进行访问控制评估,并将评估结果发送至应用程序进程;
步骤4.应用程序进程根据PMS返回结果弹出提示框,接受用户选择;
步骤5.系统根据用户选择创建相应的系统服务代理获取数据,进行相关的权限检查后返回数据,并更新评估缓存。
进一步地,如图3所示,所述步骤1包括以下子步骤:
1.1应用程序根据其运行流程执行相关代码,执行至隐私相关API时触发本步骤;
不失一般性,假设该API为TelephonyManager.getDeviceId,对应隐私数据是移动设备国际身份码(International Mobile EquipmentIdentity,IMEI,),其隐私数据标识为“IMEI”;
1.2调用该隐私相关API后,应用程序执行流程进入SDK库;
1.3创建Throwable对象,触发fillInStackTrace方法生成系统调用堆栈;
1.4通过所创建的Throwable对象的getStackTrace方法获取此次调用的系统异常堆栈数据,进一步获取此次调用的调用链;
进一步地,如图4所示,步骤2包括以下子步骤:
2.1根据调用链生成的规则推断调用TelephonyManager.getDeviceId的主体信息在调用链中存在的位置,取出该主体信息,不失一般性,假设该主体信息为com.test.app.subject;
2.2当前步骤所处的执行流程在TelephonyManager领域内,从进程划分的角度属于应用程序进程空间,可通过所在的进程信息直接获取应用程序Context对象;
2.3使用Context对象的getPackageName方法获取本次调用所属的应用程序包名;
2.4根据主体信息与应用程序包名判断本次调用的主体是否来自于应用程序本身;
2.5若主体属于应用程序本身则转步骤5,若主体不属于应用程序本身则转步骤2.6;
2.6通过Context对象的getPackageManager方法获取系统包管理服务PMS远程代理对象;
2.7通过PMS的远程代理对象发起与PMS的进程间通信,将主体信息与涉及的隐私数据标识传输至PMS。
在本例中,主体信息与隐私标识分别是com.test.app.subject和IMEI;
进一步地,如图5所示,步骤3包括以下子步骤:
3.1系统核心进程成功接收应用程序所发送的远程调用指令与数据,即PMS成功接受应用程序的调用;
3.2将主体信息com.test.app.subject与第三方代码包列表进行匹配,若不存在名称为com.test.app.*和com.test.*的第三方代码包则转步骤3.6,反之执行步骤3.3;
3.3判断评估缓存中是否存在com.test.app.*或com.test.*的评估记录,若存在转步骤3.4,反之转步骤3.5;
3.4判断与本次请求主体相关的评估缓存中是否存在“IMEI”标识,若存在转步骤3.6,反之转步骤3.5;
3.5向应用程序进程返回false,结束步骤3;
3.6向应用程序进程返回true,结束步骤3;
进一步地,如图6所示,步骤4包括以下子步骤:
4.1应用程序进程通过进程间通信机制接收系统核心进程返回的数据,即应用程序接收PMS的返回结果;
4.2若PMS返回结果为true,则代表此次请求的主体不属于第三方代码或该主体属于第三方代码但拥有评估缓存,即应该允许此次访问,转步骤5,反之转步骤4.3;
4.3依据ActivityThread类currentActivityThread静态方法判断当前线程是否属于主线程,即UI线程,若属于主线程,转步骤4.6,反之转步骤4.4;
4.4通过Looper类getMainLooper静态方法获取主线程Looper实例对象;
4.5以主Looper实例对象创建Handler,使之运行在主线程中,并在其回调函数内对主线程对象进行初始化,即获取主线程对象,转步骤4.7;
4.6通过ActivityThread类获取主线程对象;
4.7通过主线程对象的getTopActivity方法获取当前系统中的最顶层Activity实例对象,即正在显示的Activity;
4.8通过最顶层Activity实例对象获取其Context对象;
4.9通过Context对象创建阻塞式提示框,若用户选择允许访问该隐私数据,转步骤5,反之转步骤4.10;
4.10本次调用返回空,结束整个调用流程;
进一步地,如图7所示,步骤5包括以下子步骤:
5.1通过步骤2.2中获得的Context对象的getPackageManager方法获取系统包管理服务PMS的远程代理对象;
5.2通过PMS远程代理对象发起进程间通信以更新评估缓存;
5.3创建所调用API相应的系统服务远程代理,并发起进程间通信向系统级核心服务请求隐私数据;
5.4系统级核心服务在返回数据前通过调用PMS相关流程进行权限检查;
5.5若通过权限检查,系统级服务向应用程序返回相应隐私数据,结束调用流程;反之抛出权限检查异常。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种Android应用程序第三方代码的安全增强方法,其特征在于,所述方法包括如下步骤:
步骤1.应用程序调用系统接口获取用户隐私数据,在应用程序进程内利用系统异常堆栈数据获取此次调用的调用链;
步骤2.通过调用链获取发起调用的细粒度主体信息,并通过与该应用程序的包名对比初步判断是否属于主应用程序代码,若判断结果为否则将所获取细粒度主体信息及相应的隐私数据标识通过进程间通信机制发送至系统包管理服务PMS;反之直接返回隐私数据,结束整个流程;
步骤3.PMS接收步骤2中所发送的数据并结合评估缓存与第三方代码包列表进行访问控制评估,并将评估结果发送至应用程序进程;
步骤4.应用程序进程根据PMS返回结果弹出提示框,接受用户选择;
步骤5.系统根据用户选择创建相应的系统服务代理获取数据,进行相关的权限检查后返回数据,并更新评估缓存。
2.如权利要求1所述的方法,其特征在于,所述步骤1具体包括如下子步骤:
1.1应用程序发起隐私数据访问请求,即调用相关的应用程序编程接口(Application Programming Interface,API);
1.2在应用程序所在进程空间的API实现处创建Throwable对象;
1.3通过Throwable对象获取系统调用堆栈信息;
1.4根据系统调用堆栈信息获取本次调用的调用链。
3.如权利要求1或2所述的方法,其特征在于,所述步骤2具体包括如下子步骤:
2.1根据主体信息在调用链中的位置获取该次调用的细粒度主体信息,即发起调用的对象信息;
2.2根据所在进程的上下文信息获取该次调用Context对象;
2.3使用Context对象获取本次调用所属的应用程序包名;
2.4根据主体信息与应用程序包名判断本次调用的主体是否来自于应用程序本身;
2.5若主体属于应用程序代码本身转步骤(5),若主体不属于应用程序代码本身则转步骤(2.6);
2.6在应用程序进程内获取系统包管理服务PMS的远程代理对象;
2.7通过远程代理对象发起与PMS的进程间通信;
2.8将主体信息与涉及的隐私数据标识传输至PMS。
4.如权利要求1或2所述的方法,其特征在于,所述步骤3具体包括如下子步骤:
3.1PMS所在进程接收应用程序进程所传输的主体信息与隐私数据标识;
3.2将主体信息与第三方代码包列表进行匹配,若主体信息并非属于第三方代码转步骤(3.6),反之执行步骤(3.3);
3.3判断评估缓存中是否存在本次放调用涉及主体的评估记录,若存在执行步骤(3.4),反之执行步骤(3.5);
3.4判断与本次请求主体相关的评估缓存中是否存在本次调用所请求的隐私数据标识,若存在执行步骤(3.6),反之执行步骤(3.5);
3.5向应用程序进程返回false,结束步骤3;
3.6向应用程序进程返回true,结束步骤3。
5.如权利要求1或2所述的方法,其特征在于,所述步骤4具体包括如下子步骤:
4.1接收PMS返回结果;
4.2若PMS返回为true,执行步骤(5),反之执行步骤(4.3);
4.3判断当前线程是否属于主线程,若属于主线程,执行步骤(4.6),反之执行步骤(4.4);
4.4通过线程上下文获取线程对象;
4.5创建Handler,使之运行在主线程中,并以此获取主线程对象;
4.6通过主线程对象获取当前屏幕最顶端的Activity,并获取其Context;
4.7通过Context创建阻塞式提示框,若用户选择允许访问该隐私数据,转步骤(5),反之转步骤(4.8);
4.8本次调用返回空,结束整个调用流程。
6.如权利要求1或2所述的方法,其特征在于,所述步骤5具体包括如下子步骤:
5.1通过PMS代理更新评估缓存;
5.2创建相应的系统服务远程代理,并发起进程间通信向系统级核心服务请求隐私数据;
5.3系统进行权限检查;
5.4若通过权限检查,系统级服务向应用程序返回相应隐私数据,结束调用流程;反之抛出权限检查异常。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510353989.9A CN104992081B (zh) | 2015-06-24 | 2015-06-24 | 一种Android应用程序第三方代码的安全增强方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510353989.9A CN104992081B (zh) | 2015-06-24 | 2015-06-24 | 一种Android应用程序第三方代码的安全增强方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104992081A true CN104992081A (zh) | 2015-10-21 |
CN104992081B CN104992081B (zh) | 2018-02-27 |
Family
ID=54303894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510353989.9A Active CN104992081B (zh) | 2015-06-24 | 2015-06-24 | 一种Android应用程序第三方代码的安全增强方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104992081B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106407797A (zh) * | 2016-09-08 | 2017-02-15 | 努比亚技术有限公司 | 应用权限控制装置和方法 |
CN106446672A (zh) * | 2016-07-25 | 2017-02-22 | 中国科学院大学 | 一种Android第三方类库权限隔离方法及装置 |
CN106557691A (zh) * | 2016-10-12 | 2017-04-05 | 北京奇虎科技有限公司 | 监控应用中的第三方sdk方法、装置和加固安装包的装置 |
CN106850545A (zh) * | 2016-12-15 | 2017-06-13 | 华中科技大学 | 一种安卓混合应用的细粒度访问控制方法 |
CN106959874A (zh) * | 2017-03-21 | 2017-07-18 | 联想(北京)有限公司 | 基于操作系统的应用管理方法及应用该方法的电子设备 |
CN108062257A (zh) * | 2017-12-28 | 2018-05-22 | 北京奇虎科技有限公司 | 一种处理堆栈信息的方法及系统 |
CN108399336A (zh) * | 2018-02-11 | 2018-08-14 | 胡丽丽 | 一种安卓应用恶意行为的检测方法及装置 |
CN108932427A (zh) * | 2018-05-18 | 2018-12-04 | 华中科技大学 | 一种Android应用多开环境中限制访问的控制方法及系统 |
CN109255235A (zh) * | 2018-09-17 | 2019-01-22 | 西安电子科技大学 | 基于用户态沙箱的移动应用第三方库隔离方法 |
CN109918930A (zh) * | 2019-03-11 | 2019-06-21 | 维沃移动通信有限公司 | 一种信息保护方法及终端设备 |
CN110727952A (zh) * | 2019-08-30 | 2020-01-24 | 国家计算机网络与信息安全管理中心 | 一种移动应用程序第三方库隐私收集辨识方法 |
CN112231697A (zh) * | 2020-11-05 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 第三方sdk行为的检测方法、装置、介质及电子设备 |
CN112800416A (zh) * | 2020-12-31 | 2021-05-14 | 航天信息股份有限公司 | 一种用于调用链的安全防护系统及方法 |
CN113364671A (zh) * | 2021-06-28 | 2021-09-07 | 刘文平 | 节省流量电量的跨平台办公实时通讯系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116716A (zh) * | 2013-01-25 | 2013-05-22 | 复旦大学 | 一种针对移动平台的低干扰的即时权限授予方法 |
CN103440459A (zh) * | 2013-09-25 | 2013-12-11 | 西安交通大学 | 一种基于函数调用的Android恶意代码检测方法 |
CN104156275A (zh) * | 2014-06-30 | 2014-11-19 | 青岛海信移动通信技术股份有限公司 | 一种安卓Android平台异常处理的方法和装置 |
CN104318171A (zh) * | 2014-10-09 | 2015-01-28 | 中国科学院信息工程研究所 | 基于权限标签的Android隐私数据保护方法及系统 |
-
2015
- 2015-06-24 CN CN201510353989.9A patent/CN104992081B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116716A (zh) * | 2013-01-25 | 2013-05-22 | 复旦大学 | 一种针对移动平台的低干扰的即时权限授予方法 |
CN103440459A (zh) * | 2013-09-25 | 2013-12-11 | 西安交通大学 | 一种基于函数调用的Android恶意代码检测方法 |
CN104156275A (zh) * | 2014-06-30 | 2014-11-19 | 青岛海信移动通信技术股份有限公司 | 一种安卓Android平台异常处理的方法和装置 |
CN104318171A (zh) * | 2014-10-09 | 2015-01-28 | 中国科学院信息工程研究所 | 基于权限标签的Android隐私数据保护方法及系统 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106446672A (zh) * | 2016-07-25 | 2017-02-22 | 中国科学院大学 | 一种Android第三方类库权限隔离方法及装置 |
CN106407797A (zh) * | 2016-09-08 | 2017-02-15 | 努比亚技术有限公司 | 应用权限控制装置和方法 |
CN106557691A (zh) * | 2016-10-12 | 2017-04-05 | 北京奇虎科技有限公司 | 监控应用中的第三方sdk方法、装置和加固安装包的装置 |
CN106850545B (zh) * | 2016-12-15 | 2020-02-21 | 华中科技大学 | 一种安卓混合应用的细粒度访问控制方法 |
CN106850545A (zh) * | 2016-12-15 | 2017-06-13 | 华中科技大学 | 一种安卓混合应用的细粒度访问控制方法 |
CN106959874A (zh) * | 2017-03-21 | 2017-07-18 | 联想(北京)有限公司 | 基于操作系统的应用管理方法及应用该方法的电子设备 |
CN106959874B (zh) * | 2017-03-21 | 2019-11-26 | 联想(北京)有限公司 | 基于操作系统的应用管理方法及应用该方法的电子设备 |
CN108062257A (zh) * | 2017-12-28 | 2018-05-22 | 北京奇虎科技有限公司 | 一种处理堆栈信息的方法及系统 |
CN108399336A (zh) * | 2018-02-11 | 2018-08-14 | 胡丽丽 | 一种安卓应用恶意行为的检测方法及装置 |
CN108399336B (zh) * | 2018-02-11 | 2020-08-28 | 侯殿君 | 一种安卓应用恶意行为的检测方法及装置 |
CN108932427A (zh) * | 2018-05-18 | 2018-12-04 | 华中科技大学 | 一种Android应用多开环境中限制访问的控制方法及系统 |
CN109255235A (zh) * | 2018-09-17 | 2019-01-22 | 西安电子科技大学 | 基于用户态沙箱的移动应用第三方库隔离方法 |
CN109918930A (zh) * | 2019-03-11 | 2019-06-21 | 维沃移动通信有限公司 | 一种信息保护方法及终端设备 |
CN110727952A (zh) * | 2019-08-30 | 2020-01-24 | 国家计算机网络与信息安全管理中心 | 一种移动应用程序第三方库隐私收集辨识方法 |
CN112231697A (zh) * | 2020-11-05 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 第三方sdk行为的检测方法、装置、介质及电子设备 |
CN112800416A (zh) * | 2020-12-31 | 2021-05-14 | 航天信息股份有限公司 | 一种用于调用链的安全防护系统及方法 |
CN113364671A (zh) * | 2021-06-28 | 2021-09-07 | 刘文平 | 节省流量电量的跨平台办公实时通讯系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104992081B (zh) | 2018-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104992081A (zh) | 一种Android应用程序第三方代码的安全增强方法 | |
US11140230B2 (en) | Method and procedure for dynamic services orchestration that runs within an on-device software container | |
US20220086600A1 (en) | Method for activating service based on user scenario perception, terminal device, and system | |
US8893222B2 (en) | Security system and method for the android operating system | |
CN106127036B (zh) | 持续性和弹性的工作者进程 | |
CN103294172B (zh) | 在远程桌面会话中提供多个鼠标输入的方法 | |
US8863157B2 (en) | Method, device, and mobile terminal for API interception | |
US20180357085A1 (en) | Method and apparatus for running android application on windows system | |
Kaur et al. | Google Android a mobile platform: A review | |
CN110955499B (zh) | 处理器核心配置方法、装置、终端及存储介质 | |
US10623417B1 (en) | Software development kit (SDK) fraud prevention and detection | |
CN105094996A (zh) | 基于动态权限验证的Android系统安全增强方法及系统 | |
CN108376066B (zh) | 代码处理装置及代码处理方法 | |
CN112653670A (zh) | 业务逻辑漏洞检测方法、装置、存储介质以及终端 | |
CN110704097A (zh) | 一种数据收集方法、装置及电子设备和存储介质 | |
CN105975333B (zh) | 应用程序运行控制的方法及装置 | |
CN109522131A (zh) | 资源配置方法、装置及设备 | |
CN110704131A (zh) | 一种html5应用调用原生应用的方法和装置 | |
CN112241544A (zh) | 业务系统、访问方法、装置、计算机设备和存储介质 | |
CN113950043B (zh) | 通信方法、装置、存储介质以及终端 | |
CN111666596B (zh) | 一种数据处理方法、设备及介质 | |
CN103034477B (zh) | 一种组件式开放架构模型实现方法 | |
CN105404586A (zh) | 事件触发器及事件触发方法 | |
US20150207661A1 (en) | System and method for providing priority based access to resources for applications | |
US20240152600A1 (en) | Parallel execution of a set of audited privileged actions across worker nodes |
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 |