Android平台安全机制浅析
2014-05-14吴善崇
吴善崇,张 权
(国防科学技术大学 电子科学与工程学院,长沙 410073)
Android是Google公司于2007年11月5日推出的一种基于Linux核心的开源智能手机操作系统。自发布以来,该系统以其开放、自由的特性赢得了各大厂商、开发人员以及用户的青睐。近几年,Android平台在移动互联网领域以及其惊人的速度发展,不但智能手机市场,在平板电脑以及智能电视市场也呈现了快速增长的趋势。根据国际数据公司(IDC)数据显示,截至2013年的第二季度,Android平台手机的市场份额已经达到了78.3 ,稳居移动终端操作系统排行榜的首位。随着Android终端的数量越来越庞大,Android系统成为很多黑客的攻击目标。《2013年上半年网秦手机安全报告》指出,2013年上半年,Android平台依然是手机恶意软件感染的重点平台,Android平台感染的比例是95 ,比2012年上半年增长17 。Android系统是一个开放的系统,任何软件不需要官方认证就可以在设备上运行,因此Android系统接触非官方市场App的机会更多。而这些App很容易被恶意软件开发者或黑客等利用,使用户在安装后并没有察觉,直至问题发生才知道,Android系统的安全问题也日益突出[1]。
1 Android平台的系统构架
Android是一个移动设备软件栈,主要用于便携设备,如手机、平板电脑等。其系统架构包含4个层次,如图1所示,自上而下分为应用程序层、应用程序框架层、本地库及运行环境和Linux内核层[2]。
1.1 应用程序层
应用程序层是Android操作系统的用户应用层,它包括一系列核心应用程序包,采用Java语言开发,且在虚拟机上运行,提供了包括内存管理、进程管理、网络管理、安全设置和硬件驱动等在内的基本功能。
图2 Android平台的系统构架
1.2 应用程序框架层
支撑应用层的是应用框架,这是一组用于构建应用的高层构建,允许开发人员完全访问核心应用程序所使用的应用程序接口框架,它是开发者进行Android开发的基础,主要有View、通知管理器、活动管理器等由开发人员直接调用的组件组成。
1.3 本地库及运行环境
应用程序框架中的组件在完成各自任务时都要依赖一些C/C++库,开发人员通过应用框架中的API与本地库交互。Android运行环境包括核心库和Dalvik虚拟机。核心库用Java语言编写,提供大量的Java 5 SE包的子类和一些Android特有的库。
1.4 Linux内核层
库和Android运行时都依赖Linux内核以实现底层的核心服务,例如线程、底层内存管理、网络栈、进程管理和驱动模型,主要提供安全性、驱动、进程管理、内存管理、网络协议栈等核心系统服务。
2 Android平台的安全机制
Android是一个支持多任务的系统,而且每一个应用程序或者系统程序都只在自己的进程中运行。在一定程度上,由于Android采用了Linux内核,每一个应用程序都会被分配用户和组群ID号,在这种情况下,系统和应用程序之间的安全性就大大加强了。而且Android对于像修改系统文件等的特殊操作进行了限制,只有那些得到用户允许的应用程序才能够进行[3]。在Android的框架层,谷歌已经绑定了几种安全机制。这些安全机制大致可以归为三类:Linux机制、运行环境特性和Android固有机制。
2.1 Linux机制
在Linux中,一个用户ID识别一个给定用户,Android系统是一个权限分离的系统,建立在Linux操作系统已有的权限管理机制的基础上,并对Linux操作系统的相关权限管理机制进行了扩展。具体来说,Android为每一个应用程序分配不同的UID,应用程序在安装时被分配用户UID,应用程序在设备的生命周期内,用户UID保持不变[4]。
Android系统中,每安装一个应用程序,系统就会给它分配一个独特的UID。在Linux系统中,所有用户都有UID,其中,除了Root用户对所有文件都有读写和执行的权限之外(其UID等于0),每个用户对于每个文件都有不同的权限,分别为r(可读)、w(可写)和x(可执行)。Android系统中的每个应用程序都会被分配给一个属于自己的用户标志,每个应用程序都有自己的UID,只有携带着该UID,才能存取其所涵盖的有关资料。
Android中每个应用都在不同的进程中运行,每个进程都有不同的UID和权限。Android系统使用沙箱的概念来实现应用程序之间的分离和权限限制,系统为每个应用程序创建一个沙箱,以防止影响其他程序(或者防止受其他程序影响)。
2.2 运行环境
Android操作系统的内存管理单元实现对进程分配不同的虚拟内存空间。从而控制每个进程只能访问自身分配的内存空间,而不能区访问其他进程所占用的内存空间。因此,进程的权限提升的可能性受到限制,因为其不能运行在系统特权级内存空间[5]。
2.3 Android固有机制
在Android系统中,应用程序层最重要的安全机制就是权限控制。这种权限控制能够有效的限制应用程序只能进行权限所赋予的操作。应用程序的权限是由包管理器在安装时赋予的,在运行时由应用程序框架层执行权限控制。在Android系统中大约有一百个内建的权限,这些权限控制如下的操作:拨号(CALL_PHONE)、拍照(CAMERA)、访问互联网(INTERNET)、键值监听(READ_INPUT_STATE)、编写短信(WRITE_SMS)等。任何一个应用程序都需要在安装的时候在配置文件(Android Man - ifest.xml)中声明所要取得的权限[6]。每一种权限都有一个保护级别,而每一种保护级别则代表了此种权限对于系统和其他进程的威胁。保护级别总共分为四种:nor-mal,dangerous,signature,signatureorsys-tem。normal的权限只要申请了就可以使用;dangerous的权限在安装时需要用户确认才可以使用;signature和signature-orsystem的权限需要使用者的app和系统使用同一个数字证书。
通过组件封装,应用程序的内容能被其他程序访问。除此之外,Android组件内容不允许被其他程序访问。这种功能主要通过组件中定义读取(exported)操作。如果设置为否,则组件只能被程序本身或拥有同一ID的程序访问。反之,则可以被其他应用程序调用或访问。
Android中每一个程序都被打包成apk格式以方便安装。apk文件与Java标准jar文件相似,它包含了应用程序所需的全部代码。apk文件也包括所有非代码资源文件,如图片、声音等。Android要求所有应用程序都经过数字签名认证。签名文件通常是Android确认不同应用程序是否来自同源开发者的依据。
3 Android平台存在的安全隐患
尽管Android已经拥有了较好的安全机制来保证系统安全,但是在巨大商业利益的激励下,无数攻击者针对系统及软件漏洞,以各种方式对Android用户展开了各种形式的攻击。
2009年11月10日,Android平台出现了第一个恶意间谍软件-Mobile Spy,随后针对Android平台的攻击与其市场份额一样,呈现了爆炸式的增长。根据网秦“云安全”监测平台统计数据显示,2013年上半年查杀到手机恶意软件51 084款,同比2012年上半年增长189 ;2013年上半年感染手机2102万部,同比2012年上半年增长63.8 。手机恶意软件感染设备数量相较于2012年上半年整体有所增长,其中2013年6月份增长最为迅速,同比2012年6月份增长80 。
目前,Android系统面临的恶意代码种类多样,危害方式及特点各异。恶意扣费是国内最为常见的Android恶意代码的主要功能,并以27 的比例位居2013年上半年Android平台手机恶意软件首位。其中累计查杀到11 304款恶意软件具备通过短信等途径订购SP业务进行恶意扣费的行为,直接感染中国大陆地区逾450万部手机,以其平均日触发扣费行为1次、平均扣费金额1元估算,预计用户单日最高话费损失总计达450万元[7]。
在伪装方式上,恶意代码多采用重新包装的方式隐藏自己,尤其是以隐私窃取类和移动支付类病毒为代表。像a.privacy.FakeTaoBao.a(淘宝杀手)病毒,就是伪装淘宝软件登录界面来混淆用户,使人一眼难辨真假,从而误装该病毒包。当用户点击打开,会提示输入淘宝用户名和密码,但输入完成后,并不会进入淘宝商城,而是以“确保账户安全,需要安装账户安全服务”诱骗用户安装该病毒子包,提示用户输入支付宝的用户名和密码,窃取账号密码,使用户的账号及财产安全受到威胁。
除此之外,现在的病毒也变得更加智能化,制毒者赋予了病毒自行判断的能力。2013年爆发了一款新病毒,当手机中招后,该病毒会先判断手机中是否有制毒者指定的第三方应用,如果检测到有这些应用,病毒才会发作。开始在手机中弹出广告或其他消息,使用户误认为是应用本身弹出的广告,从而蒙蔽用户;如果检测到手机中没有此类应用,那么病毒则不会发作,也不会弹出任何提示,如此便可以更好地隐藏自己,使人不易察觉,更好地掩护其恶意行为,这样不仅损害第三方应用的名誉,更对用户的手机带来一定的危害。
4 Android平台安全问题防范措施
目前,Android系统的安全隐患日趋严峻,不容每一位手机使用者忽视。从Android系统的特性来说,我们首先要从源头上杜绝手机被植入木马,通过正规渠道购买手机,避免手机植入吸费木马。在水货市场购买了手机后,通过手机安全软件进行安全扫描,查杀固件木马。同时,我们在下载应用软件的时候尽量去绿色软件站或者可信站点下载应用软件,在我们下载软件进行安装后需要注意软件的权限,如果安装软件的时候出现敏感高位权限,要特别引起注意。最后,我们作为非专业手机使用者,最好安装一个口碑不错的手机安全软件为我们的手机保驾护航。
5 结束语
尽管Android系统提供了三大安全机制来为系统安全性提供了保证,但是在巨大利益的驱动下,Android系统已经暴露出了巨大的安全威胁,严重地威胁着用户的使用安全,并且随着Android系统市场份额的增加,安全威胁也必将进一步增强。因此,在Android系统现有安全机制之外,急需新的安全机制来防范日益严峻的安全威胁。
[1]网秦.2013年中国大陆地区手机安全报告[EB/OL].(2013-7-16)[2013-9-15].http://cn.nq.com/neirong/2013Q2.pdf.
[2]王覃.Android平台安全支撑系统的设计与实现[D].北京:北京邮电大学,2013:3-24.
[3]刘磊.Android安全体系的分析[D].广东:广东工业大学,2013:5-10.
[4]蒋绍林,王金双,张涛,等.Android安全研究综述[J].计算机应用与软件,2012,29(10):205-210.
[5]刘伟.基于行为模式的Android平台入侵检测系统的设计与实现[D].北京:北京邮电大学,2013:6-17.
[6]王玮.基于Android系统的恶意程序原理分析[J].技术研究,2012,10(17):71-76.
[7]王鹏.Android隐私保护机制的分析与改进[D].北京:北京邮电大学,2013:10-35.