APP下载

Android应用程序隐私权限安全研究

2021-03-05付迪阳

信息安全研究 2021年3期
关键词:开发者静态应用程序

钟 越 付迪阳

(四川大学计算机学院 成都 610065)

(2018223049249@stu.scu.edu.cn)

在过去的10年中,智能手机的普及极大地促进了移动应用程序.根据AppBrain的数据显示,截至2018年9月,全球最大的Android应用商店Google Play上的可用应用程序数量已经超过280万.应用程序在我们的日常生活中扮演着极其重要的角色.许多用户在他们的移动设备上存储了大量敏感和私有的数据.这类数据面临遭受恶意收集的风险,这已成为整个Android生态系统的主要威胁.

Android系统由于其开源性,长期以来一直是恶意应用程序攻击的主要目标.其主要漏洞之一是权限机制,Android的权限机制要求应用程序申请需要访问的用户隐私权限(如联系人、SMS、相机和互联网访问等).因此,Android的安全性在很大程度上取决于这种权限机制的有效性.现有的主要威胁是,恶意应用程序可能会请求额外的权限来访问用户的敏感和私有数据.为了尽量减少这种威胁,一些研究人员设计了面向用户的权限提示,以确保智能手机用户被正确地通知应用程序请求的权限.然而,由于Android许可机制的复杂性,这些努力已被证明几乎是无效的.主要原因是大多数用户并不能完全理解Android的权限机制.他们通常只是忽略提示并接受应用程序的权限请求.因此,应用程序可以很容易获得额外的权限,这增加了用户隐私泄露的风险.

1 Android应用程序隐私权限

1.1 Android系统权限机制

Android是Google公司以Linux为内核开发的移动设备开源系统,所以在Android中保留了Linux中的一些安全机制,如Linux中的自主访问控制机制,Android的权限机制其基石就是访问控制机制[1].

为了让用户知道应用程序的隐私权限使用情况,Android要求开发者预先申明需要使用的隐私权限,用户在安装应用程序时需要对这些权限请求进行授权.具体来说,Android系统中每个开发者开发的应用程序被分配1个唯一的用户ID,而每个用户ID访问的权限集合是受限的,没有任何一个Android移动应用程序可以在默认情况下直接访问其他应用程序.开发者在应用程序的开发过程中,必须把要使用的权限通过〈uses-permission〉标签在AndroidManifest.xm1文件中进行申明.而用户在安装移动应用程序前会被告知这个应用程序需要使用的用户隐私权限.只有在这些权限被用户授权的情况下,Android应用程序才能允许在运行过程中使用相关功能.

1.2 Android权限机制存在的问题

通过上文对Android系统权限机制的介绍可知,为了保护用户的隐私,Google公司在Android隐私权限方面已经做了很多工作,然而Android的权限机制仍然存在一些不容忽略的缺点和不足.

首先,Android应用程序的隐私权限机制太过依赖用户的判断,用户通过应用程序的功能和介绍来决定是否同意授权并安装应用程序.然而,期望用户对如此多的应用程序所使用的不同权限保持警觉是不够明智的.Felt等人[2]评估Android用户在安装过程中是否注意、理解和操作权限信息.他们对203个Android用户的调查表明,用户对应用程序的隐私权限表现出较低的关注和理解率.17%的调查受访者在安装过程中会关注应用申请了什么权限,只有3%的调查受访者能够正确理解调查者提出的3个权限问题.Felt等人[2]的研究结果表明,Android权限访问控制机制并不能让大多数用户在安装和使用应用程序时作出安全的决策.

其次,不同于iOS系统在运行时的用户权限访问控制机制,Android权限机制大多是在安装时期确定的[3],尽管Google公司在Android 6.0之后进行了改进,可以在应用程序首次使用权限时询问用户是否授权.但是Android系统并不能根据运行时环境的不同动态修改应用程序的访问隐私资源的能力,而且权限一旦被授权给应用程序后,应用程序就始终拥有该权限.这就使得Android的权限控制具有局限性,用户无法细粒度地对应用程序的隐私权限进行管理,也增加了用户隐私泄露的风险.

1.3 Android权限机制改进方案

对于Android权限机制存在的问题改进方案大致分为2个方面:

一方面是面向用户的,针对用户对Android隐私权限理解的不足,有研究人员试图通过给出更加合理的提示来使用户了解权限.例如,Kelley等人[4]设计了更详细的权限提示框的内容,提醒用户使用特定权限时的后果和隐含的风险.也有学者试图通过学习用户的隐私偏好,自动地为用户配置应用程序的隐私权限.Liu等人[5]和Lin等人[6]通过询问用户隐私权限偏好的问题和研究分析用户隐私配置文件,预测用户重视的隐私权限,从而实现自动化权限配置.针对Android的权限只能在安装或首次使用时确定的问题,有学者开发出细粒度管理应用程序权限的工具,如Nauman等人[7]和Bugiel等人[8]开发了一个细粒度的Android权限使用控制工具,设备中的哪些权限允许被访问,哪些权限不允许被访问都可由用户指定.而且这些决策还能够在运行时期进行,比如在某些特定的地点、特定的时间才能访问某些资源,或者限制某个应用程序每天短信发送的最大数量等.而对于隐私权限的监控方面,雷磊等人[9]通过重打包注入代码的方法,实现对目标应用敏感权限的实时监控.

另一方面主要是面向开发人员,由于Android权限的复杂性,开发人员往往不能够完全了解自己程序调用的API需要申请的权限.Felt等人[10]提出了一组指导原则,以帮助开发者确定最合适的权限申请配置文件,它提醒开发人员加强对权限的理解,在开发过程中不要声明不必要或错误的权限,但由于Android开发文档没有成熟的API描述,该方法可能会出现一些错误.而PScout[11]使用静态分析从Android OS源代码中提取权限规范,并推荐开发人员遵循权限规范配置隐私权限.

2 Android应用程序隐私权限安全风险检测方案

上文对Android应用程序隐私权限研究是基于Android系统本身的权限机制,主要的研究思路是通过各种方法提高用户和开发者对应用程序隐私权限的认知和管理.但是这些方法最终对用户和开发者的影响仍然很小.而且对于应用程序开发者而言,开发者本身并没有规范其隐私权限管理的意愿.相反,一些应用程序开发商为了某些商业利益,会故意申请一些与其应用程序业务和功能无关的权限.Felt等人[12]研究分析了940个应用程序,发现大约1/3的应用程序出现了滥用用户隐私权限的情况.中国互联网应急中心的监测也发现同样的现象,在用户下载量较大的千余移动应用程序中,应用程序平均申请25项权限,其中有超过30%的移动应用程序申请与自身业务无关的权限.所以只是提高用户和开发人员的隐私保护意识显然是不够的.为了解决这个问题,我们需要一种自动化的检测方法,这种方法可以自动地分析和检测应用程序是否申请使用与其功能无关的隐私权限,从而对应用程序是否有隐私泄露风险进行合理的评估.近年来,有学者分别在3个不同的方向进行了探索:1)从描述(App商店的功能简介)中提取应用程序所需的隐私权限;2)基于静态代码分析的方法检测隐私权限风险;3)从隐私政策(privacy policy)中提取应用程序所需的隐私权限.

2.1 基于描述的隐私权限分析

应用程序的描述(description)指的是应用程序在App商店的简介,开发者把自己开发的应用程序功能和特点介绍给用户.用户根据应用程序的描述,决定是否下载这些应用程序.

使用应用程序的描述信息对隐私权限进行分析始于2013年,Whyper[13]使用自然语言处理技术对应用程序的描述进行语义建模,从而提取各种特征词组合作为应用程序的声明功能,并将它们映射到应用程序声明的权限,判断其描述信息中是否与用户隐私相关的3种权限(通讯簿、日历和录音音频)有关,Whyper的实验结果表明,使用应用程序的描述信息可以成功地判断应用程序是否需要某些用户隐私权限.Autocog[14]对Whyper的语义模型进行了改进,并根据API的文档中提取自然语言关键字来关联描述和权限语义.Autocog语义提取的关键组成部分是显式语义分析,它利用如维基百科这样的大语料库来创建一个大规模的语义数据库,这种的分析方法大大缓解了描述语义信息有限的问题.Whyper和Autocog使用的都是自然语言处理特征词提取的方法,通过提取特征词映射到各个隐私权限,最后评估应用程序申请的隐私权限是否与描述相一致.这种方法的缺点在于应用程序的描述信息是有限的,一些应用程序的描述非常简短,通过语义建模的方式提取特征词可能无法提取出太多有效的信息,而且,应用程序开发者未必会把其开发的程序所有功能都在App商店中描述清楚.

针对上述问题,一些学者提出使用LDA主题模型提取应用程序描述文本的特征,用这些主题特征进行聚类,为每类应用程序推断出其合理的权限集合.隐狄利克雷分布(latent Dirichlet allocation, LDA)[15]是一种主题模型,它可以将文档的主题提取出来,并按照概率分布的形式给出,LDA主题模型在自然语言处理领域有广泛的应用.Gorla等人[16]使用LDA主题模型对应用程序描述进行分析,把应用程序调用的隐私接口函数名作为一个自然语言的单词与应用程序描述的语料库一起进行LDA主题建模,通过训练好的模型得到隐私接口出现在每个主题的概率,从而判断应用程序是否需要某个隐私权限.Han等人[17]和Xiao等人[18]则在使用LDA主题模型提取出应用程序的主题特征后,通过协同过滤推荐算法对应用程序应当具有的隐私权限进行分析,其基本思路是描述主题特征相似的应用程序应该给与推荐相似的隐私权限,他们使用良性的应用程序训练这个推荐系统,并使用恶意程序推荐的权限集进行对比,从而得到基于描述的最小用户隐私权限集合,并把最小权限集合与程序实际使用的权限进行对比,分析应用程序隐私权限是否过度使用.TFDroid[19]使用机器学习的方法分析应用程序描述,通过LDA主题模型对描述文本进行特征提取,使用K-Mean算法对应用程序进行分类,然后对每一类的应用程序训练一个One-Class SVM分类器判断其是否有隐私安全风险.

2.2 基于静态代码分析的方法检测隐私权限风险

静态代码分析(program static analysis)[20]是指并不需要运行程序代码,仅仅通过分析和扫描程序的语法、数据流、控制流等,检查代码是否满足安全、规范、可靠等指标.静态代码分析在PC端已有相应的研究,而移动端在这个方向的研究是近些年才开始的.

有学者[21-24]通过静态代码分析的方法构建应用程序的数据流和控制流,通过判断隐私敏感数据在良性应用程序和恶意应用程序中不同的行为方式,判断应用程序是否有隐私泄露的风险.由于仅通过分析应用程序的隐私数据流得到的信息是有限的,有一些研究人员[25-30]通过提取UI(用户界面)元素上下文,结合隐私数据流对应用程序的隐私权限安全进行检测.其具体思路是对涉及用户隐私信息的数据流进行跟踪,挖掘与这个数据流有关的UI元素所包含的文本信息,通过机器学习方法比对UI上下文信息和调用的隐私API文档的一致性,从而判断程序的使用隐私权限行为是否符合其UI上下文.还有一种研究方法[31-35]是通过静态代码分析应用程序所使用的API,从API推断合理的隐私权限.Bartel等人[31]和Karim等人[32]使用静态代码分析提取程序使用的API,然后通过关联规则识别每个API所需要的隐私权限.从API到权限的映射关系中得到应用程序应该配置的隐私权限.而Bao等人[33]和Liu等人[34]通过挖掘应用程序使用的API和API描述特征,基于具有相似特性API通常具有相似的权限这样一种思路,使用协同过滤算法为给定的应用程序推荐权限.

基于静态代码分析方法的问题在于,应用程序静态分析比较耗费实验设备的运算能力,如果对复杂的应用程序进行静态代码分析可能需要较长的时间.结合UI元素上下文进行静态分析方法的问题在于UI元素的文本碎片化,从这些碎片化的文本信息很难映射到相应的权限.而对于通过分析程序API进行权限推荐的方法,由于Android的版本频繁更新和丰富的第三方库,API的数量、功能和描述也随之变化,API分析方法可能不适用于新版本的Android系统.

2.3 基于隐私政策的隐私权限分析

所谓隐私政策,是App商店出于对用户个人隐私信息的保护,要求开发者在上传其开发的应用程序时,需要提供1份用户隐私信息使用情况的说明文档,在这个文档里,开发者要明确告知用户其应用程序收集、使用、处理个人信息的目的、方式和范围.

PVDetector[35]分析应用程序隐私使用情况与隐私策略描述的不一致来检测Android应用程序违反隐私政策的行为.PPChecker[36]使用自然语言处理技术分析Android应用程序隐私政策,然后通过比对应用程序实际使用用户隐私权限的情况,判断出应用程序的隐私政策可能会出现的5个问题(incomplete,incorrect,imprecise,inconsistent,unfriendly).Wilson等人[37]将基于机器学习的隐私策略分析与应用程序静态代码分析相结合,判断隐私政策与程序行为不一致情况.而Yu等人[38]则开发出TAPVerifier对隐私政策、描述和程序实际使用的隐私权限进行分析,并在其中进行交叉验证,判断应用程序的隐私安全问题.

基于隐私政策的分析方法优点在于隐私政策就是介绍应用权限的使用情况,其与权限的高相关性使得自然语言处理提取的权限信息更加简单和准确.这种方法的缺点在于隐私政策是开发者自己撰写的,其声明的隐私权限未必是应用程序所必须的.

3 研究总结和展望

本文介绍了Android系统隐私权限安全机制、存在的问题及改良方法,总结了现有的Android应用程序隐私权限安全风险检测方案,并详细介绍了基于描述、静态代码分析和隐私政策3个方向的主要研究思路和技术手段.虽然目前已经有许多关于Android应用程序隐私权限的研究工作,其中一些取得了很好的研究成果.但是现有研究方法都存在着一些问题,需要进一步的优化.无论应用程序的描述、隐私政策和程序代码,其实都在一定程度上体现了程序所需要的隐私权限信息,而单方面的分析方法都没有使用到我们可以获得的全部信息.如何统一这些应用程序信息,从中提取出有效的隐私权限特征,从而更加准确地评估Android应用程序的隐私安全风险将是未来重要的研究方向.

猜你喜欢

开发者静态应用程序
最新进展!中老铁路开始静态验收
静态随机存储器在轨自检算法
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
“85后”高学历男性成为APP开发新生主力军
16%游戏开发者看好VR
油罐车静态侧倾稳定角的多体仿真计算
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序