当前位置:首页 期刊杂志

基于权限的Android应用风险评估方法

时间:2024-05-04

卜同同 曹天杰

摘 要:针对Android权限机制存在的问题以及传统的应用风险等级评估方法的不足,提出了一种基于权限的Android应用风险评估方法。首先,通过对应用程序进行逆向工程分析,提取出应用程序声明的系统权限、静态分析的权限以及自定义的权限,和通过动态检测获取应用程序执行使用到的权限;然后,从具有恶意倾向的组合权限、“溢权”问题和自定义权限三个方面对应用程序进行量性风险评估;最后,采用层次分析法(AHP)计算上述三个方面的权重,评估应用的风险值。对6245个软件样本进行训练,构建自定义权限数据集和具有恶意倾向的权限组合数据集。实验结果表明,与Androguard相比,所提方法能更精确地评估应用软件的风险值。

关键词:Android安全;风险评估;应用权限;量性评估;静态分析;动态检测

中图分类号: TP309.2

文獻标志码:A

Abstract: Focusing on the problems existing in Android permission mechanism and poor capability of traditional measurement methods of Android software security, a risk assessment method of Android APP based on permission was proposed. Firstly, the system permissions declared by application, the permissions obtained through static analysis and custom permissions were extracted by reverse-engineering analysis of application. At the same time, the permissions used by executing application were extracted through dynamic detection. Secondly, quantitative risk assessment of applications was performed from three aspects: permission combination of hiding malicious intent, “over-privilege” problem and custom permission vulnerability. Finally, the Analytic Hierarchy Process (AHP) evaluation model was adopted to calculate the weights of three aspects above for estimating risk value of application. In addition, custom permission data set and permissions combination dataset with hiding malicious intent were built by training 6245 software samples collected from application store and VirusShare. The experimental results show that the proposed method can assess risk value of application software more accurately compared with Androguard.

Key words: Android security; risk assessment; application permission; quantitative assessment; static analysis; dynamic detection

0 引言

随着移动互联网的快速发展,手机逐渐成为用户连接网络和存储个人信息最重要的设备,在人们生活中处于越来越重要的地位。根据国际数据公司(International Data Corporation, IDC)的统计[1],智能手机公司在2017年的出货量为14.6亿部,其中约85%的设备运行Android平台。与此同时,Android系统的开放性吸引了更多的应用程序开发者;而Android应用程序的多样性同样吸引了越来越多的用户开始尝试并使用Android系统的智能手机,但是这也是信息科技(Information Technology, IT)专家的焦虑之源。由于智能手机中存放着大量高度隐私的个人数据,故智能手机比PC掌握用户更多的敏感数据,吸引了更多的黑客注意,这对于Android生态系统以及用户个人数据的安全性提出了更高的安全要求。

为了保证护用户数据的安全隐私及系统资源,Android操作系统采用了沙盒机制,在默认情况下,Android应用只能访问有限的系统资源,除此之外,Android OS还采用了权限机制来限制对敏感资源的访问。虽然自Android 6.0以来,Android平台采用了动态权限授予机制,允许用户在安装应用程序以后,可以撤销或授予应用程序敏感权限进行敏感操作,以保证用户数据的安全和隐私;但是,动态权限授予机制依赖于用户对于Android权限有充分的认识,并能妥善地管理应用权限这个前提。然而Bagheri等[2]学者的研究表明只有极少的用户关注并熟悉Android动态运行时权限。此外,非专业用户并不知道,在危险权限组的第一个权限使用提醒时授予该应用此权限并不再主动撤销授权。该应用在拥有此项权限的状态下,再申请使用此危险权限组的其他权限时,Android系统会在不与用户交互的情况下直接授权。Android粗粒度的权限授予机制、Android应用开发者的过度申请权限、多个应用利用自定义权限漏洞而提升权限和第三方应用市场不完善的审核机制等,使得Android软件大量存在“溢权(over-privilege)”和权限泄露等问题,从而导致Android应用的质量良莠不齐。由此可见,Android采用的权限机制对用户数据安全性进行保护的方法并不能够达到理想的安全防御效果。为了保护用户,Android应用市场非常需要更好的风险评估方法来定量评估应用程序可能带来的威胁。

1 相关工作

权限是Android系统安全模型的第一道防线,能保证应用安全地访问敏感数据以及跨应用交互。Google[3]提供了关于正确使用Android权限模型的建议和最佳做法,但最终依靠应用程序开发人员将其正确用于产品中。

近年来Android权限机制存在的问题被越来越多的研究学者所关注。Felt等[4]提出了Android应用程序存在“溢权”现象:很多Android应用程序开发人员为了后续再开发或收集用户偏好信息等原因,在软件开发中突破了“最小权限原则”,在应用程序清单文件中申请过多的权限,使得多达三分之一的应用程序存在“溢权”问题。

张锐等[5]提出了采用卡方检验计算各权限属性对于分类结果的影响大小,利用权限之间以及权限和惡意倾向的相关性,去除冗余权限特征、对权限属性聚类,提取具有代表性的权限特征,并进一步减少冗余后,利用基于不同权限特征权重的改进朴素贝叶斯算法进行软件分类,能够初步检测Android应用软件是否有恶意倾向。实验表明,应用的权限组合才是决定应用威胁性的关键。

Google验证了文献[6]中提出的严重的自定义权限漏洞,恶意软件开发者可以利用这些漏洞来开发应用来获得对关键平台和应用程序资源的未经授权的访问。利用这些漏洞,应用软件可以绕过请求用户授予/拒绝权限的交互界面而直接获取高风险的系统资源,并且还可以未经授权访问其他应用程序的受保护组件。这严重违反了Android运行时权限模型中应始终保持的一个关键安全原则:没有用户交互授权,不应授予应用任何危险的运行时权限。Android上自定义的两种权限漏洞攻击为自定义权提升攻击和混淆代理攻击。

权限信息是检测Android软件的关键因素之一。大量研究学者针对权限存在的问题来评估应用程序的隐私风险或安全等级。Hamed等[7]提出了一种主动的面向用户的方法,让用户意识到授予Android应用程序权限所涉及的隐私风险。该模型的参数是权限及其相互作用的严重性和相对重要性。徐君锋等[8]通过对Android软件逆向分析,根据不同系统权限安全等级划分,给定安全范围内的安全系数,并对Android软件进行初步安全评分;同时结合Android软件的认证强度和第三方应用市场上的违规记录,再综合度量软件的最终安全信用指数。文献[9]中提出使用静态代码指标作为预测器,首先对静态代码度量进行初步风险评分,在进一步作数据处理确定各个静态代码度量的风险等级,最后选择合适的静态代码度量来预测和评估与Android应用程序相关的安全和隐私风险。Android多准则应用程序信任评估器(Multi-criteria App Evaluator of TRust for AndrOID, MAETROID)[10]是一个用来评估Android应用程序的可信度的框架,可以评估应用程序对用户造成风险的概率。在部署时对应用程序进行多准则分析,返回一个简单易懂的应用程序风险等级评估,即判断应用程序是可信还是中等风险或高风险,旨在帮助用户决定是否要安装新的应用程序。该框架以应用程序所申请的权限集合、从市场收集到的应用程序质量和受欢迎程度作为一组元数据。

2 评估方法

目前的研究主要是针对应用程序本身的代码元数据数量进行统计分析,并没有将自定义权限漏洞放入应用风险评估中。本文针对Android权限机制存在的问题,提出一种由具有恶意倾向的系统权限组合检测评估模块、系统权限的“溢权”的检测评估模块和自定义权限漏洞的检测评估模块构成的定量应用风险评估方法。

2.1 具有恶意倾向的权限组合检测评估

应用程序可以通过申请组合的权限来实现对用户隐私信息的窃取和传播。例如,APP_M申请了连接网络和读取联系人这组权限,就存在未经用户同意而收集用户通信录信息,为进一步的广告推广、甚至电话或者短信诈骗助力。文献[11]的实验结果证明,应用程序的权限组合能够检测Android应用软件是否有恶意倾向,是判定应用程序威胁性的重要因素,但它并没考虑应用本身的用途,只考虑了权限本身。例如,位置定位权限对于导航和地图类应用程序是必要权限,对于健身运动类应用是非必要权限,对于主题壁纸类应用是非需权限。通过对收集的良性应用程序进行逆向工程,提取权限信息样本,根据各类应用程序的使用概率,将每类单个应用权限分为三个威胁级别。

定义1 根据单个权限pi在该类应用程序的必要性,其威胁值取为1,3,5中的一个:

T(pi)=1, pi对该类应用程序有明显的必要性3, pi对该类应用程序有一定的必要性5, pi对该类应用程序有很弱的必要性

在影音播放类中:网络连接、访问网络状态和写入外部存储等权限明显很必要;而读取短信和发送短信在用户登录过程中有一定的必要性;写短信和使用指纹硬件等权限在该类应用的必要性很弱。在各类应用中,权限的必要性越强,其威胁性越小。采用层次分析法(Analytic Hierarchy Process, AHP)计算单个权限的威胁值T(pi)。

不同的权限组合有不同的安全威胁值,根据有恶意倾向的组合权限不同的收集来源定义组合权限的威胁级别。

定义2 权限组合pci的威胁性级别值为:

T(pci)=1, pci来自相关文献的实验结果3, pci来自Mal_Per_group5, pci来自典型的利用权限组合的攻击

其中,Mal_Per_group的收集在3.1.2节中详述。具有恶意倾向的权限组合检测算法如下所示。

RRper_group为从应用程序请求的权限组中去除待评估App所属类常用权限组的非空真子集的剩余权限组。该方法根据式(1)计算该应用程序由于使用的权限的组合带来的风险。

其中:T(pci)为Mal_Per_group中具有恶意倾向的权限组和的威胁值,λm代表具有恶意倾向的权限组合在应用风险评估中的权重。

2.2 “溢权”检测评估

手机应用软件管理着大量的用户个人信息,例如:身份证、地址、通信记录、短信、邮箱等,这为通过不同方法来分析用户和操纵这些数据获得利益提供了新的契机。不仅恶意软件,甚至有些合法软件也滥用这些信息。例如:Twitter手机软件在没得到用户同意的情况下,将用户的个人信息公之于众。在应用被允许执行敏感操作时,用户数据有可能被修改甚至丢失。

Android应用软件普遍存在着“溢权”问题。例如,38.5%的学习帮助类应用程序为了定向推广自己的应用软件,而申请危险权限组PHONE中的READ_PHONE_STATE来读取用户手机状态。若应用程序在清单文件中申请的权限,不存在于静态分析得到的权限列表中,则该应用程序就拥有过度权限。此时,过度權限集是申请的权限集与静态分析得到的权限集的差集;反之,若一个权限存在静态分析得到的权限中,而不存在应用程序在清单文件中申请的权限时,则称该权限为提升权限;然后,将其与从动态执行获取的日志文件中提取的动态权限列表相比较,两者的差集记为静默权限。

该方法将应用程序申请的系统权限列表记为Rper_list,将静态分析的系统权限列表记为Sper_list,将动态分析得到的系统权限列表记为Dper_list。系统权限的“溢权”检测的详细步骤如算法2所述。

本文提出的风险评估方法根据式(2)计算由系统权限的“溢权”带来的风险:

其中:T(opi)代表Oper_list中的系统权限对应的保护等级的权重,λo表示了“溢权”问题评估应用程序安全时的权重。

2.3 自定义权限的风险评估

Android提供一组权限标签来保护系统和用户资源。与此同时,Android平台允许不受信任的第三方应用声明自己的自定义权限,来限制其他应用程序对该应用程序组件的访问。简而言之,Android的权限模型是通过使用一组名为权限的安全标签,规范对平台和应用程序资源的访问。为了保护平台资源(例如,麦克风、互联网等),平台使用由系统本身引入的预定义权限集。权限模型还为平台提供更细粒度的安全性,以此保护不同应用程序或系统组件之间的进程间通信(Inter-Process Communication, IPC),为此Android引入了自定义权限:这些是应用程序定义的权限,允许开发人员通过其他应用程序控制对其应用程序组件的访问。实际上,在第三方应用程序中使用自定义权限非常常见。根据本文对各个应用市场顶级免费应用程序的研究,约72%的应用程序定义了自定义权限。其中30%的自定义权限的保护等级为Normal,即只要申请了就可以使用,如表1所示。

从表1可以看出,应用程序自定义保护等级为Dangerous的权限较少,而绝大多数的自定义权限的保护等级为Signature和Normal。自定义权限提升攻击通过在清单文件中声明保护级别为Signature或Normal的自定义权限,并将此自定义权限设置为系统权限组的一部分,而Android系统允许第三方开发者将自定义权限声明为系统权限组的一部分,使应用程序可以绕过用户权限授予界面,并自动获取任何危险的系统权限。故该方法中自定义权限的保护级别为Signature或Normal的权重比保护级别为Dangerous和SignatureorSystem大,而在混淆代理攻击中,攻击者利用缺乏Android自定义权限的命名约定,来对一个使用自定义权限保护组件的受害者应用程序发起攻击。故该方法对从各大官网收集到应用程序的分析,提取应用程序的自定义权限存入自定义权限数据集CPer_set中,对待测试的APP的自定义权限进行检查并对CPer_set进行补充。

自定义权限通过为IPC提供安全性,在支持Android平台的可重用性方面发挥了重要作用;因此,对其正确操作的任何威胁都可能导致应用程序和平台本身的安全性受到损害。该模块主要针对由重名的自定义权限带来的混淆代理的可能性进行评估。利用这个自定义权限漏洞,应用可以绕过用户同意屏幕来授予/拒绝权限以获取高风险系统资源,并且还可以未经授权访问其他应用的受保护组件。由于现在Android规定在同一个物理设备上,不允许存在两个应用程序定义相同名称的权限。为了完成这个攻击,恶意应用程序开发者需要开发至少两个应用:

1)定义者攻击应用程序。通过重新使用相同的权限名称来欺骗受害者应用程序的自定义权限,并将保护级别更改为危险。

2)用户攻击应用程序。它只在其清单文件中请求此权限。

编写Python脚本cusPermission.py提取收集到的应用程序自定义的权限,存储为cusPer.set,其存储结构为[权限,权限组,权限定义应用包名称(权限等级),申请该权限的应用包名称];编写getCusPermission.py,提取待检测应用程序在AndroidManifest.xml文件中定义的权限列表cusPlist,该部分检测分为两个模块:数据集获取模块和分析评估模块。

根据式(3)计算由自定义权限漏洞问题带来的风险:

其中:T(cpi)代表自定义权限的定义的保护级别的权重,λc代表自定义权限问题在评估应用程序风险时的权重。

3 方法实现与结果分析

3.1 数据集收集

本文通过检测分析806个应用市场可下载的安卓应用、5439个恶意样本和Android官方网站发布的权限文档,构建各类应用程序常用的组合权限数据集、具有恶意倾向的权限组合数据集和Android原生权限数据集。

3.1.1 多类应用程序常用的组合权限数据集

编写Python脚本从百度手机助手、小米应用商店和华为应用市场爬取下载量较高、获得官方版认证的、安全优质的Android应用软件。相对于官方应用市场没有任何说明的评分,高下载量更能代表用户使用的满意度较高、权限使用在用户的接受范围之内。

該方法共收集了806个不同的安卓应用,主要分为以下类别:影音播放(95)、社交通信(76)、学习帮助(39)、新闻阅读(43)、运动健康(36)、金融理财(80)、游戏娱乐(139)、网上购物(48)、办公工具(36)、拍摄美化(57)、主题壁纸(52)、地图导航(24)、旅游购票(22)、生活实用(59)。例如,影音视听类应用常用的权限组如表2所示。

由于权限组的存在,若授予了权限组中任一权限,该应用若申请同一权限组中的其他权限,系统不再与用户交互而直接为该应用授予其申请该组内的权限。故该类别的权限组还需添加STORAGE组中的READ_EXTERNAL_STORAGE危险权限。

3.1.2 具有恶意倾向的权限组合数据集

本文从VirusShare[12]中获得的5439个恶意样本,对其中50个家族成员数大于10的5048个样本进行反编译字节码操作,并从其清单文件中提取权限,将其家族成员都使用的权限作为权限集的一个权限组合。该方法会对数据集进行进一步去除冗余、计算权限组合的权重,将其存入恶意软件家族常用权限组合的数据集Mal_Per_group。例如:从相关安全网站收集相关的最新的权限攻击实例,将其加入到数据集Mal_Per_group。例如,Android版本在7.1.2及以下都会受到Cloak&Dagger攻击的影响,而该攻击是一种利用权限不匹配问题来访问Android设备的攻击方法,主要通过获取SYSTEM_ALERT_WINDOW和BIND_ACCE-SSIBILITY_SERVICE权限来实施攻击。故Cloak&Dagger恶意软件家族的常用权限组为[SYSTEM_ALERT_WINDOW,BIND_ACCESSIBILITY_SERVICE]。

3.1.3 Android原生权限

编写Python脚本对Android官方网站的上发布的权限文档进行分析,统计文档中的权限及其级别。目前共有152个原生权限,包括:38个保护等级为normal的权限,27个保护等级为dangerous的权限,10个等级为signature的特殊权限,19个等级为signature|privileged(同API≤23,signatureOr-System)的权限,44个不提供给第三方应用使用的权限,此外还有14个权限在版本更新中不再建议使用的权限。

3.2 权限提取

通过静态分析,对Android安装包(Android Package, APK)文件的逆向分析,从清单文件中提取应用程序申请的系统权限Rper_list;静态分析smali代码提取敏感应用程序编程接口(Application Programming Interface, API),通过收集的map-ping映射得到对应的静态权限列表Sper_list;通过自动运行注入了1000个不同的基于Android的Monkey测试套件的事件,以提取包括被调用的方法在内的运行信息的日志,然后通过分析日志信息,提取动态权限列表Dper_list。其具体过程如图1所示。

3.3 权重计算

本文采用了层次分析法来计算同一层次影响评估结果的各因素的权重。AHP是定性和定量相结合的分析方法。该方法将复杂的问题层次化,对影响决策目标的判断因素进行量化分析,是一种层次权重决策分析方法。

将该方法使用作为指标层的评估因素有:具有恶意倾向的权限组、系统权限的“溢权”、自定义权限漏洞。

构建判断矩阵,并使用Matlab程序实现层次分析方法,计算出具有恶意倾向的权限组权重为:λm=0.3255,系统权限的“溢权”权重为:λo=0.2772,自定义权限漏洞权重为:λc=0.3973。

3.4 实验结果分析

本文所提方法的实验结果表明,应用程序所需的权限数量和自定义的权限数量并不是影响风险值分数的主要因素。从表3可以看出,应用com.xiaoyu.rightone申请的权限数量少于com.imjingjing.jingjing,但是其风险评分明显高于com.imjingjing.jingjing。

此外,统计数据表明,现存的应用都申请了允许访问网络的权限和访问网络状态这两个权限。拍摄美化类应用除了申请必要的拍摄和读写存储器权限外,通常还会申请定位和读取联系人权限;社交通信类的自定义权限最多,主题壁纸类的自定义权限与其他应用程序自定义权限重名的最多,且主题壁纸类申请的权限数较多故风险值平均较高;直播类应用申请的权限最多,平均风险值最高。

Androguard[13]主要用来进行静态分析,提供了很多模块供分析人员使用,有很多静态分析工具都是基于它,其中Androrisk.py模块用于评估APK文件中潜在的风险。该模块主要是利用权限和DEX文件对APK文件进行风险评估,其中将权限按功能分为:隐私权限、普通权限、与收费有关的权限、联网类的权限、信息类的权限、危险权限、签名或系统权限、通话类的权限、签名权限和全球定位系统(Global Positioning System, GPS)权限,通过Fuzzy算法对应用程序风险进行评估。表4展示了两种方法评估的主要因素及最终评估的风险值,其各列名为应用程序在清单文件中申请的系统权限数(Number of system Permissions declared in the Manifest file, NPM)、自定义权限数(Number of Custom Permissions, NCP)、与别的应用程序定义的权限同名的自定义权限个数(Number of Custom permissions with the Same name as those defined by other APPs, NCS这个的缩写是对应表4中的“NSC”吗?为何表示C的Custom,却在S的前面?英文全称正确吗?请明确。缩写是对应表4中的“NSC”,这两处都确定为“NCS”。)、使用Androrisk.py模块得到的风险评估分数(Risk Assessment Scores using Androrisk.py module, RASA)、本文方法对测试应用程序风险评估分数(Risk assessment Scores using this Quantitative Evaluation method, RSQE)。

Androrisk.py模塊是静态检测中的常用方法,从实验结果上看有静态检测本身的局限性,从表4可以看出,其实验结果会有较大的误差;而本文方法相对于Androrisk增加了自定义权限风险评估和系统“溢权”风险评估,能够更精确地评估应用程序的风险。

根据实验结果和三个方面潜在的威胁,为了进一步方便用户理解由于权限机制造成的风险,可将应用程序潜在的风险值划分为四三个风险等级:待测应用程序的风险值为[0,30)区间,则认为应用程序的风险等级为低风险;待测应用程序的风险值为[30,70)区间,则认为应用程序的风险等级为中等风险;待测应用程序的风险值大于70,则认为应用程序的风险等级为高风险。

4 结语

本文通过提取权限信息,提出了一种新的基于权限的Android应用程序风险评估方法。针对应用市场提供的应用程序质量参差不齐和风险等级评估的不透明等问题,该方法通过静态分析和动态检测权限的使用情况,从系统权限和自定义权限带来的威胁,来定量评估应用程序的潜在风险值。实验验证,本文的风险评估方法能有效地度量应用程序的风险,为进一步分析应用程序的安全性提供了参考,但自定义权限数据集还不充分,需要进一步补充完善。

参考文献 (References)

[1] IDC. Smartphone market share [EB/OL]. (2018-02-20)[2018-03-29]. https://www.idc.com/promo/smartphone-market-share/os.

[2] BAGHERI H, KANG E, MALEK S, et al. A formal approach for detection of security flaws in the Android permission system [J]. Formal Aspects of Computing, 2017, 9: 1-20.

[3] Google. Permissions best practices [EB/OL]. (2018-01-20)[2018-03-26]. https://developer.android.google.cn/training/permissions/best-practice.

[4] FELT A P, CHLN E, HANNA S, et al. Android permissions demystified[C]// CCA2011: Proceedings of the 18th ACM Conference on Computer and Communications Security. New York: ACM, 2011:627-638.

[5] 张锐,杨吉云.基于权限相关性的Android恶意软件检测[J].计算机应用,2014,34(5):1322-1325.(ZHANG R, YANG J Y. Android malware detection based on permission correlation[J]. Journal of Computer Applications,2014, 34(5):1322-1325.)

[6] TUNCAY G S, DEMETRIOU S, GANJU K, et al. Resolving the predicament of Android custom permissions[C]// NDSS 2018: Proceedings of the 2018 Network and Distributed System Security Symposium. Piscataway, NJ: IEEE, 2018:1-16.

[7] HAMED A, AYED H K B. Privacy risk assessment and users awareness for mobile APPs permissions[C]// Proceedings of the 2017 International Symposium on Computer Systems and Applications. Piscataway, NJ: IEEE, 2017:1-8.

[8] 徐君锋,王嘉捷,朱克雷,等.基于AHP的安卓应用安全信用指数度量方法[J].清华大学学报(自然科学版),2018,58(2):131-136.(XU J F, WANG J J, ZHU K L, et al. Credit index measurement method for Android application security based on AHP[J]. Journal of Tsinghua University (Science and Technology), 2018,58(2):131-136.)

[9] RAHMAN A, PRADHAN P, PARTHO A, et al. Predicting Android application security and privacy risk with static code metrics[C]// Proceedings of the 2017 IEEE/ACM International Conference on Mobile Software Engineering and Systems. Piscataway, NJ: IEEE, 2017:149-153.

[10] DINI G, MARTINELLI F, MATTEUCCI I, et al. Risk analysis of Android applications: a user-centric solution [J]. Future Generation Computer Systems, 2018, 80: 505-518.

[11] TANG W, JIN G, HE J, et al. Extending Android security enforcement with a security distance model[C]// Proceedings of the 2011 International Conference on Internet Technology and Applications. Piscataway, NJ: IEEE, 2011: 1-4.

[12] VXShare. VirusShare[EB/OL]. [2017-10-09]. https://vir-usshare.com.

[13] DESNOS A, GUEGUEN G, BACHMANN S. Androguard package[EB/OL]. [2017-12-29]. http://androguard.readthedocs.io/en/latest/api/androguard.html.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!