APP下载

Android权限提升漏洞攻击的检测*

2012-06-27沈才樑唐科萍俞立峰樊甫伟

电信科学 2012年5期
关键词:调用漏洞应用程序

沈才樑,唐科萍,俞立峰,樊甫伟

(1.浙江工业职业技术学院 绍兴 312000;2.浙江大学计算机科学与技术学院 杭州 310027;3.丽水广播电视大学 丽水323000;4.杭州师范大学电子商务安全重点实验室 杭州 310036)

1 引言

Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年,由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域。2011年第一季度,Android在全球的市场份额首次超过Symbian系统,跃居全球第一。2012年2月,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。

Android作为一个基于Linux内核的、开放的移动设备平台,近几年得到了快速发展,市场占有率不断上升,各种应用不断涌现,随之而来的是设备信息安全问题不断曝光,Android系统的安全性成为研究热点。Android系统可以分为4层,分别是应用程序层、应用程序框架层、Android本地库及运行环境层和Linux内核层。其安全机制可以分为Linux安全机制、Android特有的安全机制、其他保护机制[1]。

其中,Linux内核安全机制包括可移植操作系统接口(POSIX)用户和文件访问控制。POSIX用户机制保证每一个应用有一个唯一的ID,拥有唯一ID的程序始终运行于自己的进程内,这样使得应用程序运行在一个安全的沙箱内,阻止其他应用程序对其的影响。文件访问控制即Linux文件访问控制机制,这里不再作具体展开。总体而言,由于Android系统基于Linux内核构建,目前针对Linux内核的安全攻击较少[2]。

Android特有的安全机制包括应用程序权限控制、组件封装以及签名机制。应用程序权限控制指Android通过在每台设备上实施了基于权限的安全策略来处理安全问题,采用权限来限制安装应用程序的能力。权限是一段唯一的各不相同的字符串。当某个权限与某个操作和资源对象绑定在一起,必须获得这个权限才能在对象上执行操作[3]。组件封装是指Android应用程序把组件包装在应用程序内,阻止其他应用程序访问它们。这种功能主要通过组件中定义读取操作。如果设置为否,则组件只能被程序本身或拥有同一Android的程序访问。反之,则可以被其他应用程序调用或访问[4]。目前,针对Android应用程序权限控制与组件封装的安全攻击较为常见,而且呈不断增多的趋势。Android签名机制是指所有应用安装都必须有数字证书,但Android签名机制不是十分严格,数字证书不一定是第三方权威认证,可以是自签名的,因此Android签名机制存在应用安全隐患。

2 Android安全机制存在的问题及现有解决方案分析

Android系统基于Linux内核构建,继承了其良好的安全性,但也存在一些安全隐患,特别是针对中间层、应用层的攻击,屡见不鲜。分析其安全机制,主要存在以下几个问题。

·签名机制管理松散,应用程序使用的数字证书可以自签名,无需权威的数字证书机构签名认证,导致恶意程序泛滥。Google采用这样的数字签名策略,是为了增强Android平台的开放性,盲目地修改其数字签名机制,将使设备安装新应用出现问题。

·应用程序权限控制针对单个应用程序能有效地防止权限越级,但是多个应用在组合以后,能轻易提升权限,使得恶意代码获得高级权限,导致信息泄露、系统受到破坏,这也是目前很多恶意代码获得运行的主要途径。

·缺乏对权限的动态运行时监测。权限一经被授权给应用程序后,在应用程序的生命期间,它将不会被移除,即使声明此权限源程序被删除。

目前,针对Android安全的研究已初步开展。Enck W、Ongtang M、McDaniel P在参考文献[3]中对Android整体安全机制做了详细的阐述;在参考文献[5~8]中提出了一个在移动设备上基于主机的入侵检测系统检测恶意软件系统,即 HIDS(host based intrusion-detection system),该系统通过对设备特征的取样,利用机器学习和时序推理方法采集数据,从而推断设备是否感染恶意病毒。目前,国内针对Android安全的研究还处在起步阶段,参考文献[2]介绍了Android安全机制,但是缺乏具体的解决方案。参考文献[3]介 绍 了 KBTA (knowledge-based temporal Abstract ion)、Anomaly Detection、SELinux(security-enhanced linux)3 种恶意软件检测技术,但是这些方法都是针对单个软件,直接测定其是否为恶意软件。本文中提出的通过权限提升漏洞攻击,往往是恶意软件通过访问正常软件的某个组件,从而获得相应的权限,以达到获取个人隐私、攻击系统的目的,直接操作资源的应用往往是正常合法的,甚至是系统应用,而真正的资源调用者却是非法的,因此上述方案中的监测方案往往无法正确监测出这类恶意软件。

3 Android权限提升漏洞攻击原理

Android应用在运行时都运行于自身的进程中,该进程拥有独立的虚拟机实例,不能随便与其他应用相互访问资源。通常Android进程间的通信需要借助于Binder类(一种轻量级的进程通信方式,inter-process communication),但通过应用程序权限控制、组件封装机制的整合使用,病毒代码也能轻易获得其他进程资源的访问权限。图1给出了Android应用程序级别的权限提升漏洞攻击原理。

应用1中的组件1,没有直接访问应用3中的组件1的权限,但是由于应用2中的组件1拥有权限P1,同时却没有访问保护(即任何应用程序组件均可以访问应用2中的组件1),应用3中的组件1的访问处在权限P1的保护中,因此应用2中的组件1有权限访问到应用3中的组件1。因此应用1中的组件可以通过应用2中的组件1,最终访问到应用3中的组件1。很明显这个访问路径跟系统设计时的意图并不一致,这就是Android权限提升漏洞攻击。通过增加应用2中组件1的访问控制保护,即可防止类似权限提升漏洞攻击的发生,然而让每个应用开发者都做到这点是不太现实的,因为并不是每个开发者都会注意,他的应用是否会被其他恶意代码访问而获得越级的权限。

目前,Android权限提升漏洞攻击出现范围广,应用在没有认证的话音通信[9]、文本信息[10]以及下载一些恶意代码[11]、上下文感知的话音记录[12]等。

4 权限提升漏洞攻击监测的关键点

依据第3节的原理分析可以看到,如果阻止恶意软件应用1访问应用2或是在整个访问发生的过程中,通过检查访问是否是直接调用,应用1是否拥有应用2访问资源的权限,那么整个攻击访问链就可以被监测并阻止,因此可以从以下两个关键点开展研究。

·通过加强应用2权限检查,对应用2中组件1的属性进行严格设置,使得应用1类似的恶意软件无法调用应用2(本文后面提到的应用安装前安全检测方法)。

·通过对Android系统中间层的修改,对应用之间的调用进行监测,阻止类似通过间接调用,获得权限的过程,本文提到的运行时IPC(inter-process communication)监测。

5 权限提升漏洞攻击检测系统的设计

依据权限提升漏洞攻击产生的原理,防止权限提升漏洞攻击可以从两方面进行解决:应用安装前安全检测和运行时IPC监测。

5.1 应用安装前安全检测

安装前监测主要是通过分析Android应用配置文件AndroidManifest.xml,根据配置文件组件中标签判定应用是否存在权限提升攻击漏洞。AndroidManifest.xml文件如图2所示。

activity、service、receiver、provoider 组件中均有标签permission、exported。permission标签表明了组件所拥有的权限,exported标签当值为true时,表明该组件能被其他应用访问。而exported标签当值为false时,表示该组件不能被其他应用所访问。exported缺省值需要根据组件是否有intent-filter决定(content providers组件除外,该组件缺省值始终为true),当没有intent-filter时,缺省值为 false,反之有intent-filter时,缺省值为true。

基于以上的分析,可以发现在应用安装前,通过如图3所示的权限提升攻击漏洞检测判定树分析应用的权限,提升攻击漏洞的安全性。

5.2 运行时IPC监测

5.2.1 运行时IPC监测系统结构

运行时IPC监测通过修改Android系统内核,为Android系统添加权限监测中间层,根据判定策略判定应用间访问的合法性。其基本结构如图4所示。

如图4所示,系统中的IPC过程都被监视,当应用A调用应用B去完成一个工作时,系统就会捕捉到这个调用,首先会调用Android系统本身的权限检测,判定应用A是否可以调用应用B,如果判定通过,接着监测系统中决策引擎就会去检查策略库,如果策略库内已有应用A到应用B相应操作的决策路径,那么本次调用就会被允许,如果策略库内没有,则决策引擎根据策略,判定本次调用,如果判定通过,则把该次判定路径添加到策略库内作为缓存,否则判定应用A不能访问应用B。

5.2.2 访问策略制定

访问策略的制定对于系统运行,十分重要。访问策略的制定主要有以下几个因素:是否拥有权限、应用安全级别(这个可以有开发者自行定义,建议把第三方没有权威认证的应用设定为untrusted,把系统应用以及权威认证的应用设定为 trusted)、应用访问方式 (direct或indirect)。下面给出一个访问策略实例防止典型的权限提升攻击:应用X1访问应用 X2,利用 X2,打开浏览器 X3,下载恶意代码。

应用:X1、X2、X3

应用调用L1(X1→X2→X3)

那么整个访问策略返回值为:

X1.trustLevel(untrusted)^X2.trustLevel(trusted)^X3.trustLevel(trusted)^X1.hasPermission(INTERNET)^X2.hasPermission(INTERNET)^X3.hasPermission(INTERNET)^L1.type(indirect)。

访问策略决策引擎,依据以上访问策略,对整个访问调用将作出拒绝访问的建议。当然因为屏蔽所有的间接访问,明显不现实同时也是不可取的。因此我们通过制定安全策略,直接拒绝明显的已知的间接访问权限提升攻击。但对一些未知的不确定的间接访问,系统只能提供给用户适当的操作建议。

6 实验验证

从Android市场下载846个应用,通过应用安装前安全检测,检测出168个应用存在安全攻击漏洞,对这168个通过进一步分析,其中98个应用有自定义intent action,而自定义的intent action实验中由于无法测定其是否与安全密切相关。另有10个应用在其组件中存在着exported为true,但是没有intent-filter,即所有的外部应用均可以访问此组件,该应用存在着权限提升攻击的漏洞;有41个应用存在包含intent-filter的组件,这些组件缺失exported,说明这些组件也能被第三方应用调用;有19个应用,服务组件没有访问权限控制。接着把通过上一次检测的678个应用中的30个,进行运行时IPC检测,在该组检测中,发现其中3个应用软件存在运行时权限提升攻击漏洞,这些应用按安装前安全检测中的判定树无法检测出漏洞,但在实际运行过程中却通过间接访问,获得了应用本身并没有的权限。通过对实验数据的进一步测试,发现本系统在对一些未知的通过间接访问提升权限的攻击,存在着一些不准确的建议。

7 结束语

本文给出了Android系统的安全机制,并给出了权限提升漏洞攻击原理,并提出了安装前漏洞检测与运行时IPC监测两种方法,来防止权限提升漏洞攻击,并对实际应用进行了检验,取得了良好的效果。本文的后续研究将主要在如何通过提高应用安装前漏洞检测成功率以及提升未知权限提升攻击的防范能力。

1 Shabtai A,Fledek Y,Kanonov U,et al.Google android:a comprehensive security assessment.IEEE Security&Privacy,2010

2 符易阳,周丹平.Android安全机制分析.第26次全国计算机安全学术交流会论文集,2011

3 期廖明华,郑力明.Android安全机制分析与解决方案初探.科学技术与工程,2009,26(11):6 351~6 354

4 Enck W,Ongtang M,McDaniel P.Understanding android security.IEEE Security&Pivacy,2009,7(1):53~54

5 Shabtai A,Wiess Y, Kanonov U, et al.Andromaly:a behavioral malware detection framework for Android devices.Intelligent Information Systems,2011

6 ShabtaiA, Kanonov U, EloviciY.Detection, alertand responseto malicious behavior in mobile devices:knowledgebased approach.RAID,2009

7 Shabtai A,Kanonov U,Elovici Y.Intrusion detection on mobile devices using the knowledge based temporal-Abstract method.Systems and Software,2010,83(8):1 527~1 536

8 Shabtai A,Fledel Y,Elovici Y,et al.Using the KBTA method for inferring computer and network security alerts from timestamped,rawsystem metrics.Computer Virology,2009,8(3):267~298

9 Davi L,Dmitrienko A,Sadeghi A-R,et al.Privilege escalation attacks on Android.Proceedings of the 13th Information Security Conference(ISC),2010

10 Enck W,Ongtang M,McDaniel P.Mitigating android software misuse before it happens.Technical Report NAS-TR-0094-2008,Pennsylvania State University,2008

11 Lineberry A,Richardson D L,Wyatt T.These aren't the permissions you're looking for.BlackHat USA,2010

12 Schlegel R,Zhang K,Zhou X,et al.Soundcomber:a stealthyand context-aware sound trojan for smartphones.18th Annual Network and Distributed System Security Symposium(NDSS),Feb 2011

猜你喜欢

调用漏洞应用程序
漏洞
核电项目物项调用管理的应用研究
删除Win10中自带的应用程序
LabWindows/CVI下基于ActiveX技术的Excel调用
基于系统调用的恶意软件检测技术研究
三明:“两票制”堵住加价漏洞
漏洞在哪儿
高铁急救应补齐三漏洞
利用RFC技术实现SAP系统接口通信
关闭应用程序更新提醒