Android应用程序第三方库的恶意行为隔离技术综述

2017-11-01 17:14湛家伟左奇伟牛莹姣王跃武
计算机应用与软件 2017年10期
关键词:访问控制内核开发者

湛家伟 左奇伟 牛莹姣 王跃武

1(中国科学院数据与通信保护研究教育中心 北京 100093)

2(中国科学院信息工程研究所 北京 100093)

3(中国科学院大学 北京 100049)

4(工业和信息化部产业发展促进中心 北京 100846)

Android应用程序第三方库的恶意行为隔离技术综述

湛家伟1,2,3左奇伟4牛莹姣1,2王跃武1,2

1(中国科学院数据与通信保护研究教育中心 北京 100093)

2(中国科学院信息工程研究所 北京 100093)

3(中国科学院大学 北京 100049)

4(工业和信息化部产业发展促进中心 北京 100846)

Android应用程序第三方库的大量使用,提高了移动软件的开发效率,同时也带来了新的安全问题。目前的Android系统只提供一种粗粒度的权限控制机制,第三方库会与其所在主应用具有相同的权限,导致第三方库权限过大,对用户隐私造成严重威胁。目前,越来越多的学者开始对第三方库的恶意行为进行研究,取得了一定的成果。通过对恶意第三方库隔离技术的相关背景和已有方案进行综述,分析出现有研究工作中存在的问题,并对未来研究方向进行展望。

Android 第三方库 隔离 恶意行为

0 引 言

Android作为目前市场占有率最高的移动终端操作系统,其开放性策略吸引了大量的用户和研究人员,但同时也带来了许多安全问题。据TrendForce公司发布的2015年全球智能手机市场情况报告显示,2015年全球智能手机销量高达12.92亿部[1],同比增长10.3%,其中使用Android系统的手机占比高达80%以上。Google Play商店应用程序数量在2014年就超过了Apple store,达到143万,2015年Google Play应用程序下载量破500亿,是Apple store下载量的两倍。

Android应用开发者通过使用不同功能特性的第三方库,能显著节省开发成本,因此,开发者越来越多地依赖于第三方库的使用。Android系统只提供了一种粗粒度的权限控制机制,第三方库与其所在的主应用程序具有相同的权限。每个第三方库通常只需要一小部分权限即可完成相应的功能,而开发者往往会申请大量权限,导致第三方库权限过大,对用户隐私造成严重威胁。目前,越来越多的学者开始研究第三方库相关的恶意行为,并提出了很多解决方案。本文将介绍Android应用程序第三方库相关背景,对已有的隔离技术进行总结,最后对未来的研究工作进行展望。

1 背 景

本节将对Android平台相关安全机制进行介绍,包括:隔离沙箱、Permission机制、常见隔离技术。

1.1 Android隔离沙箱

Android为了保障每个应用的运行过程不受其他应用的影响,为每个应用提供了一个隔离沙箱,如图1所示。应用程序在安装时会被分配了唯一的UID,借助Linux平台基于UID的自主访问控制机制(DAC),可以对应用的资源进行有效保护。每个应用程序都运行在独立的进程空间,不能直接访问其他应用的资源,应用间的交互需要借助进程间通信技术(IPC)。

图1 Android隔离沙箱示意图

1.2 Permission机制

在Android平台上,受保护的系统资源一般分为两类:用户空间资源和内核空间资源。用户空间资源主要包括:四大组件(Activity、Service、Broadcast Receiver、ContentProvider),短信、联系人、地理位置等,一般由Framework层的系统服务提供权限控制。内核空间资源主要包括:网络、NFC、蓝牙等,一般由Linux内核通过UGO(U代表用户,G代表组,O代表其他)来提供权限控制。

图2为Permission机制的整体框架图,主要包括三个步骤:开发者进行权限申请,安装时用户授权以及运行时系统检查。无论应用程序想访问哪种类型的资源,都需要在AndroidManifest.xml文件里申请相应的权限。在应用安装时,由用户手动选择是否授予其所申请的权限。PackageManagerService(PMS)是Android系统的一个核心服务,位于system_server进程,负责系统中Package的管理,应用程序的安装、卸载、信息查询等。在上述安装过程中,PMS会对AndroidManifest.xml文件进行解析,同时将每个应用的权限信息进行存储。

图2 Permission机制架构图

运行时的权限检查针对不同类型的资源也分为用户空间和内核空间两类。当应用访问用户空间资源时,会首先与ServiceManager进程进行通信,找到提供相应资源的系统服务并向其发出请求。随后,该服务向system_server进程发起检查,查询应用是否被授予了相应的权限。当应用启动时,由system_server进程负责将权限转换为Linux组发送给zygote进程用于进程创建。zygote在收到请求后创建一个新的子进程并将其设置到相应的组。此后,该进程访问内核资源时,就会由Linux UGO负责权限控制。

Permission机制是一种粗粒度的权限控制机制,使得第三方库权限过大,引发用户隐私窃取等安全问题。由于Permission机制在权限申请和检查时都是以UID(一个应用程序对应一个唯一UID)作为最小控制单元,因此使得第三方库具有和整个应用一样的权限。另外,由于权限不会在运行时被更改,一旦被授予,第三方库会一直拥有相应的权限,直到应用程序被卸载。即使第三方库原本是善意的,但攻击者依然可以对其进行篡改,重新编译后伪装成原先的库,导致开发者误用恶意的第三方库。

1.3 应用程序隔离技术

利用应用程序隔离技术,可以有效地保护用户隐私,提高数据安全性。文献[14]对Android平台上常用的应用隔离技术进行了分类,如图3所示,主要分为:应用层隔离[14]、系统层隔离[15]、虚拟机隔离[16-17],下面将对这三种技术分别进行介绍:

(1) 应用层隔离

应用层的隔离主要通过扩充中间件和内核,对应用间的通信方式进行强制访问控制(MAC),以达到隔离的目的。例如,TrustDroid[14]提供了一种实用的轻量级的Android隔离框架,通过对中间件层和内核进行扩展,实现不同信任等级间应用和数据的隔离。此类方案对系统性能影响小,但可信计算基础(TCB)较大,隔离性较差。

(2) 系统层的隔离

系统层的隔离主要通过构建一个特殊的中间件层来达到隔离的目的。例如,AirBag[15]构建了一个额外的中间层运行环境,能有效地隔离恶意应用。

(3) 虚拟机隔离

虚拟机层的隔离通常表现为在一个设备上运行两个操作系统。例如,L4Android[16]和Cells[17]提出了类似的解决方案,能在一个物理设备上运行多个虚拟设备。此类方案TCB最小,隔离性最好,但对手机性能影响最大。

图3 Android平台上常用的隔离技术分类

2 Android应用程序第三方库

2.1 第三方库的分类

按照运行环境,第三方库可以分发Java库和Native库[7]。Android应用程序运行时结构如图4所示。由图可知,Native库直接运行在Linux内核上,Java库运行在虚拟机上,都可以被应用程序使用。

图4 Android应用程序运行时结构图

Java库存在的形式多种多样,最终都以字节码的形式被虚拟机加载运行,访问内存空间时需要受到虚拟机的管控。Native库通常采用C/C++编写,以so库的形式存在,不能单独执行,需要先加载到内存再通过JNI(Java Native Interface)供上层调用,访问内存空间时不受虚拟机的限制。相比于Java库,Native库运行速度快,逆向难度大,能有效地与操作系统底层进行交互,也被应用开发者广泛使用。

2.2 第三方库的恶意行为

随着Android应用程序第三方库的大量使用,其权限滥用现象也越来越严重,带来许多安全问题。广告库是最常见的第三方库,文献[3]的研究表明,几乎50%的免费应用内嵌有第三方公司提供的广告库。许多学者对广告库的潜在安全风险进行了研究[2-3],发现很多广告库访问用户敏感信息时,并没有对用户进行提示,同时也没有在开发者文档里进行注明。除广告库外,开发者还会大量使用一些具有其他功能特征的第三方库,例如,用户界面、游戏引擎、网络通信、数据分析等,也会对用户隐私造成严重威胁。文献[2]对100 000个应用程序进行了分析,发现所有类型的第三方库,在开发者指南里没有明确指出的情况下,大多都会秘密地使用系统API来访问用户的隐私信息,包括:账户信息、电话状态、地理位置等。

3 Android恶意第三方库隔离技术

根据第三方库与主应用的运行环境的不同,可以将第三方库相关的隔离技术分为两类:进程间隔离和组件间隔离,下面分别对其进行介绍。

3.1 进程间隔离技术

进程间隔离技术的一般架构如图5所示,通过将第三方库迁移到单独进程里,实现对第三方库的权限隔离。

图5 进程间隔离技术架构图

AdSplit[8]和AFrame[9]将广告库作为一个单独的应用程序来运行,使得应用开发者不需要为广告库申请任何权限,能有效地限制广告库的恶意行为。NativeGuard[10]采用了类似的方法,但主要是针对Native库。AdDroid[11]构建了一个新的Android系统服务,将应用的广告功能进行统一管理,实现两者间的进程间隔离。LayerCake[12]将用户界面相关的库与主应用分离,为Android应用提供安全的第三方可嵌入用户界面库。上述方案中,第三方库与主应用运行在不同进程,因此所有交互都需要使用进程间通信。

3.2 组件间隔离技术

组件间隔离技术在不迁移第三方库的前提下,也能实现应用内的权限隔离。FLEXDROID[2]和Compac[13]主要针对Permission机制的粗粒度控制缺陷进行改进,从而提供组件间的权限隔离。相比于Compac,FLEXDROID针对某些依赖JNI和动态代码执行的第三方库进行了处理。图6为组件间隔离技术的一般架构图,实线框表示已有模块,虚线框表示新添加的模块。

图6 组件间隔离技术架构图

下面针对这些模块进行介绍:

(1) 策略配置模块

策略接口模块主要负责为开发者提供针对第三方库进行细粒度权限控制的接口。开发者对第三方库的功能有着清晰的认识,因此,由开发者制定第三方库的权限策略能准确的对其行为进行管控。每个运行在Android平台上的应用程序,其权限信息由开发者在AndroidManifest.xml文件里面去配置申请。为了更好地与Android原生Permission机制兼容,多数方案选择通过在该文件里加入特殊的标签,来给开发者提供第三方库的权限控制接口。

(2) 信息提取模块

信息提取模块主要负责在应用访问敏感资源时,实时获取相关信息。Android原有的Permission机制仅仅需要UID来作为权限检查的依据,为了能够实现细粒度的权限控制,组件权限检查模块需要得到更多的应用程序运行时信息。要针对第三方库进行权限控制,权限检查模块首先需要识别出当前请求来至于哪个第三方库。另外,由于库与库之间经常会存在相互调用,因此函数库的调用序列对于组件权限检查模块是必不可少的信息。信息提取模块通过HOOK虚拟机,修改进程间通信等方式,可以实时获取目标线程的运行时信息,为组件权限检查提供判断依据。

(3) 权限检查模块

权限控制模块负责接收并处理运行时信息,同时根据开发者配置的策略进行细粒度检查。该模块同时还负责安装应用时对第三方库的权限信息进行存储,主要针对用户空间的资源,一般通过扩展已有的Android系统服务实现。

(4) ACL检查模块

针对内核空间的资源,需要ACL[5](访问控制列表)来进行细粒度控制。ACL是一个文件/目录的访问控制列表,可以针对任意指定的用户/组分配RWX权限。通过移植并修改ACL,使其支持组件级的权限控制,可以在运行时保护内核空间资源不被恶意第三方库的非法使用。

3.3 其他相关技术

(1) 隐私泄露检测技术

此类方案主要目的是保护用户隐私数据,防止数据被非法访问。例如,TainDroid[18]通过在Dalvik虚拟机中的数据加入污点传播机制,能对敏感数据流进行实时监控,有效防止敏感数据的泄露,但此方案对系统性能影响较大。Brahmastra[31]提供了针对一种自动化测试工具,用于检测第三方库的潜在威胁。MAdFraud[32]采用了动态分析技术来检测主应用程序恶意点击广告库的行为。

(2) 细粒度权限控制技术

此类方案主要针对Permission机制存在的问题,采用细粒度权限控制方案,来对应用程序进行管控。Apex[19]和Kirin[20]允许用户只授予应用部分权限,并在安装时执行用户选择的策略,Saint[21]在此基础上,为用户提供了运行时的细粒度权限控制接口。文献[22-23]采用自适应的方式,根据上下文环境来动态的配置应用的权限。AppCage[33]采用软隔离技术来限制JNI的内存访问区域,增强虚拟机的安全性。

(3) 强制访问控制技术

此类方案主要通过将强制访问控制引入Android平台,来加强系统的安全性。文献[24-26]利用强制访问控制机制,对应用程序间的权限提升问题进行处理。SEAndroid[27]将SELinux扩展到Android系统,对内核层和框架层实施强制访问控制,在Android 4.3版本中被引进。FlaskDroid[28-29]和SEDalvik[30]分别针对Android组件和Dalvik虚拟机实现了强制访问控制。

4 现有工作中存在的问题

4.1 进程间隔离技术存在的问题

进程间隔离技术能有效地将第三方库与主应用进行隔离,实现细粒度的权限访问控制,但也存在着一些不足。

(1) 对系统性能影响大

广告库与主应用交互较少,不需要太频繁的进程间通信,因此采用进程间隔离的方案对系统性能影响较小。当该类方案扩展到其他第三方库时,由于存在像网络通信、游戏引擎这类需要与主应用大量交互的第三方库,此时会导致大量额外的进程间通信,严重影响系统性能。

(2) Java库的处理不完善

Java库具有大量动态特性,包括:类继承、多线程、反射、JNI调用、动态代码加载等,使得第三方库与主应用的交互方式变得复杂,进程间隔离相关的方案难以对其界限进行区分。

4.2 组件间隔离技术存在的问题

组件间隔离技术能有效弥补Permission机制的不足,实现组件间的权限访问控制,但也在着一些限制。

(1) 无法应对混淆技术

目前的应用程序都会采用混淆技术对自身的代码进行压缩、优化和混淆,增加逆向攻击难度,保护应用安全。由于策略信息由开发者提供,混淆技术会使得隔离系统不能有效地识别出第三方库,无法提供预先的功能。此种情况下,只能依靠开发者将需要隔离的第三库进特殊处理。

(2) Native库的处理不完善

Java库在运行时有着非常清晰的栈信息,可以有效地识别出第三方库的调用序列,在权限检查时利用最小权限原则对调用者的权限进行检查,而Native库的栈信息可读性相对较差,需要额外的处理。另外,使用ACL来限制内核空间资源时,会使得每次文件访问时,都需要对请求者的栈信息进行提取,分析出相应的第三方库信息,并进行权限检查,如此会导致系统效率低下。

(3) 存在潜在威胁

由于组件间隔离技术并没有对第三方库的内存空间进行隔离,使得恶意第三方库有机会利用Native代码对主应用的内存空间进行篡改,影响其他库的运行。

5 恶意第三方库隔离技术的展望

随着第三方库在Android平台的大量使用,其恶意行为导致的隐私安全问题受到了广泛关注,许多学者都提出了各自的解决方案,能在一定程序上隔离第三方库的恶意行为,但也存在一些不足,本节将对第三方库隔离技术的未来方向进行展望。

(1) 将第三方库进行分类处理

由于每种技术方案都有其优劣,可以针对不同特性的第三方库采取不同的隔离方案。例如,针对Java库可以采用组件间隔离技术,对其动态特性采取相应的措施,就能对其权限进行有效的控制。针对与主应用交互较少的第三方库,可以采用进程隔离技术,实现内存空间的隔离,更大限度地对恶意行为进行限制。

(2) 引入针对恶意应用的隔离技术

目前攻击者的手段层出不穷,已有的方案大多只是针对第三方库的权限进行隔离,通过引入恶意应用隔离技术,可以进一步防止数据免于恶意第三方库的危害。例如,Cgroup[7]技术可以有效地限制并隔离进程组所使用的CPU、内存、IO等物理资源;利用创建和挂载文件系统,可以实现第三方库的文件级隔离;利用设备虚拟化技术,将驱动等底层系统资源进行隔离。上述方案都可以借鉴参考,引入到针对第三方库的恶意行为隔离方案中。

6 结 语

本文对Android应用程序第三方恶意行为的隔离技术进行了综述。首先介绍第三方库的相关背景知识,Permission机制的原理及其存在的缺陷。然后对目前Android恶意应用的隔离技术进行了描述,接着详细介绍了恶意第三方库的隔离技术,并对其优缺点进行分析。最后根据现有研究工作中存在的问题,对未来的研究工作进行展望。

[1] TrendForce Reports Steady Smartphone Shipments Resulted in Just 1% Drop in Global Mobile DRAM Revenue for 4Q15 [EB/OL].2016.http://press.trendforce.com/node/view/2336.html.

[2] Jaebaek Seo, Daehyeok Kim, Donghyun Cho, et al. FLEXDROID:Enforcing In-App Privilege Separation in Android[C]//Proceedings of the Network and Distributed System Security Symposium (NDSS), 2016.

[3] Grace M C, Zhou W, Jiang X, et al. Unsafe exposure analysis of mobile in-app advertisements[C]//ACM Conference on Security and Privacy in Wireless and Mobile Networks. ACM, 2012:101-112.

[4] Stevens R, Gibler C, Crussell J, et al. Investigating user privacy in android ad libraries[C]//Workshop on Mobile Security Technologies (MoST), 2012.

[5] acl[EB/OL]. Linux man page. http://linux.die.net/man/5/acl.

[6] CGROUPS[EB/OL].http://www.kernel.org/doc/Documentation/cgroups/cgroups.txt.

[7] Android ndk[EB/OL]. http://developer.android.com/tools/ sdk/ ndk /index.html.

[8] Shekhar S, Dietz M, Wallach D S. AdSplit: separating smartphone advertising from applications[J]. Dissertations & Theses-Gradworks, 2012, 54(1):99.

[9] Zhang X, Ahlawat A, Du W. AFrame: isolating advertisements from mobile applications in Android[C]//Computer Security Applications Conference. ACM, 2013:9-18.

[10] Sun M, Tan G. NativeGuard:protecting android applications from third-party native libraries[C]//Proceedings of the 2014 ACM conference on Security and privacy in wireless & mobile networks. ACM, 2014:165-176.

[11] Pearce P, Felt A P, Nunez G, et al. Addroid: Privilege separation for applications and advertisers in android[C]//Proceedings of the 7th ACM Symposium on Information, Computer and Communications Security, 2012.

[12] Roesner F, Kohno T. Securing embedded user interfaces: Android and beyond[C]//Presented as part of the 22nd USENIX Security Symposium, 2013.

[13] Wang Y, Hariharan S, Zhao C, et al. Compac: enforce component-level access control in android[C]//ACM Conference on Data and Application Security and Privacy. ACM, 2014:25-36.

[14] Bugiel S, Davi L, Dmitrienko A, et al. Practical and lightweight domain isolation on Android[C]//ACM Workshop on Security and Privacy in Smartphones and Mobile Devices. ACM, 2011:51-62.

[15] Wu C, Zhou Y, Patel K, et al. AirBag: Boosting Smartphone Resistance to Malware Infection[C]//Proceedings of the Network and Distributed System Security Symposium (NDSS), 2014.

[16] Lange M, Liebergeld S, Lackorzynski A, et al. L4Android: a generic operating system framework for secure smartphones[C]//ACM Workshop on Security and Privacy in Smartphones and Mobile Devices. ACM, 2011:39-50.

[17] Andrus J, Dall C, Hof A V, et al. Cells: A Virtual Mobile Smartphone Architecture[C]//Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles, 2011.

[18] Enck W, Gilbert P, Chun B-G, et al. Taintdroid: An information-flow tracking system for realtime privacy monitoring on smartphones[C]//Proceedings of the 9th USENIX Conference on Operating Systems Design and Implementation, 2010.

[19] Nauman M, Khan S, Zhang X. Apex:extending android permission model and enforcement with user-defined runtime constraints[C]//Proceedings of the 5th ACM Symposium on Information, Computer and Communications Security(AsiaCCS), 2010.

[20] Enck W, Ongtang M, McDaniel P. On lightweight mobile phone application certification[C]//Proceedings of the 16th ACM Conference on Computer and Communications Security(CCS), 2009.

[21] Ongtang M, McLaughlin S, Enck W, et al. Semantically rich application-centric security in android[C]//Proceedings of the 2009 Annual Computer Security Applications Conference(ACSA), 2009.

[22] Roesner F, Kohno T, Moshchuk A, et al. User-driven access control: Rethinking permission granting in modern operating systems[C]//Proceedings of the 2012 IEEE Symposium on Security and Privacy(SP) , 2012.

[23] Conti M, Nguyen V T N, Crispo B. CRePE: Context-Related Policy Enforcement for Android[C]//Information Security-, International Conference, ISC 2010, Boca Raton, Fl, Usa, October 25-28, 2010, Revised Selected Papers. DBLP, 2011:331-345.

[24] Bugiel S, Davi L, Dmitrienko A, et al. XManDroid: A New Android Evolution to Mitigate Privilege Escalation Attacks[R]. Technische Universität Darmstadt, Technical Report,2011:1-18.

[25] Bugiel S, Davi L, Dmitrienko A, et al. Towards Taming Privilege-Escalation Attacks on Android[J].Proceedings of Annual Network & Distributed System Security Symposium, 2012, 130(130):346-360.

[26] Dietz M, Shekhar S, Pisetsky Y, et al. Quire: lightweight provenance for smart phone operating systems[C]//Proceedings of the 20th USENIX Conference on Security Symposium, 2011.

[27] Smalley S, Craig R. Security enhanced (SE) android: Bringing flexible mac to android[C]//Proceedings of 20th Annual Network & Distributed System Security Symposium (NDSS), 2013.

[28] Bugiel S, Heuser S, Sadeghi A. Towards a framework for android security modules: Extending se android type enforcement to android middleware. Tech. Rep. TUD-CS-2012-0231[R]. Center for Advanced Security Research Darmstadt, Nov. 2012.

[29] Bugiel S, Heuser S, Sadeghi A. Flexible and fine-grained mandatory access control on Android for diverse security and privacy policies[C]//Proceedings of the 22nd USENIX conference on Security symposium, 2013.

[30] Bousquet A, Briffaut J, Clévy L, et al. Mandatory Access Control for the Android Dalvik Virtual Machine[C]//The Workshop on Usenix Federated Conferences. 2013.

[31] Bhoraskar R, Han S, Jeon J, et al. Brahmastra: Driving Apps to Test the Security of Third-Party Components[C]//The 23rdUsenix Security Symposium,2014:1021-1036.

[32] Crussell J, Stevens R, Chen H. MAdFraud: investigating ad fraud in android applications[C]//Proceedings of the 12th Annual International Conference on Mobile Systems, Applications, and Services, 2014.

[33] Zhou Y, Patel K, Wu L, et al. Hybrid User-level Sandboxing of Third-party Android Apps[C]//ACM Symposium on Information, Computer and Communications Security. ACM, 2015:19-30.

ASURVEYONISOLATIONTECHNOLOGYAGAINSTMALICIOUSBEHAVIOROFTHIRDPARTYLIBRARIESOFANDROIDAPPLICATION

Zhan Jiawei1,2,3Zuo Qiwei4Niu Yingjiao1,2Wang Yuewu1,2

1(DataAssuranceandCommunicationSecurityResearchCenter,ChineseAcademyofSciences,Beijing100093,China)2(InstituteofInformationEngineering,ChineseAcademyofSciences,Beijing100093,China)3(UniversityofChineseAcademyofSciences,Beijing100049,China)4(IndustryDevelopmentandPromotionCenter,MinistryofIndustryandInformationTechnologyofthePeople’sRepublicofChina,Beijing100846,China)

The extensive use of third party libraries in Android applications improves the efficiency of mobile software development and brings new security issues. The current Android system only provides a coarse grained permission control mechanism. The third party libraries with its host application have the same permissions, resulting in third party libraries permissions are too large, serious threats to user privacy. At present, more and more scholars began to study the malicious behavior of the third party libraries, and achieved some results. We reviewed the background and existing schemes of malicious third party libraries isolation technology, analyzed the existing problems in the research work, and looked forward to the future research direction.

Android Third party library Isolation Malicious behavior

TP3

A

10.3969/j.issn.1000-386x.2017.10.054

2016-12-16。十三五网络空间安全专项项目(2016YFB0800102)。湛家伟,硕士生,主研领域:系统安全。左奇伟,高工。牛莹姣,助理研究员。王跃武,副研究员。

猜你喜欢
访问控制内核开发者
一种跨策略域的林业资源访问控制模型设计
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
微软发布新Edge浏览器预览版下载换装Chrome内核
云计算访问控制技术研究综述
ONVIF的全新主张:一致性及最访问控制的Profile A
“85后”高学历男性成为APP开发新生主力军
16%游戏开发者看好VR
从操作系统层面谈信息安全与自主访问控制