谷歌集英聚智,Android仍遗安全课题

2012-06-12 13:09:19来源: 日经电子
   

  Android作为软件平台是危险的。美国谷歌公司正在全力采取措施消除这种印象。借助彻底检查应用和各种漏洞对策,Android的安全度正在快速提升。然而,无论该公司再怎样集聚智慧,仍有堵塞不了的漏洞。为什么Android无法变得安全?

  Android是美国谷歌公司开发的数码产品软件平台。以智能手机的快速普及和应用软件(以下简称应用)的自由发布为背景,质疑Android危险性的大众媒体和安全领域研究者的呼声越来越大(注1)。

(注1)在这里,“ Android的危险性”是指用户在不知情的情况下个人信息和行动信息被盗取,Android终端系统被控制,从而成为攻击的平台。

  俄罗斯的计算机安全公司卡巴斯基实验室(Kaspersky Lab)表示,在感染手机的恶意软件*中,针对Andorid的在2011年4月仅占整体的4.64%,而2012年3月竟然增加到了81.73%(图1)。据称这种增加趋势如今还在持续。即便如此,谷歌依然断言“Android足够安全”。

图1:激增的Android恶意软件
截止2011年4月,攻击手机的恶意软件中,针对Android的仅为4%左右,而到2012年3月,比例已经超过了81%。(图:《日经电子》根据卡巴斯基实验室数据制作)

*恶意软件:以恶意目的制作的软件。病毒是恶意软件的一种。

  安全公司认为“Android危险”,而谷歌认为“Android足够安全”。究竟谁的说法是正确的?实际上,二者的说法都有道理。Android平台虽然日渐安全,但在原理上依然残留着着恶意软件容易蔓延的土壤(注2)。

(注2)对于用户,使用智能手机时的风险除了意外安装恶意软件之外,还包括遗失和被盗后被他人获取内部信息,但这是包括Android在内的所有终端面临的共同危险,本文对此不予不讨论。

  谷歌公司意欲保护用户、硬件和软件开发者的自由,这就给了攻击者钻空子的机会。要想确保安全,只要加大限制即可,但这也就剥夺了自由。这种“自由与限制的两难”是Android安全问题的本质。在谷歌的安全措施上,体现出数码产品安全对策存在的根本性困难。

攻击始自应用安装

  Android发生的绝大多数安全问题都是以应用安装为起点的。

  用户通过安装应用受到攻击的类型大致分成两种。一种是正式取得了Android的安全机构——“权限”的应用,因非法目的取得个人信息,或执行非法操作。权限是指应用为操作Android内管理的数据,或是利用Android提供的功能而向用户索要的许可。因为利用应用的功能会显示在安装画面上,所以用户可以根据画面判断应用是否危险(图2)。

图2:用户如果允许便可取得个人信息
Android的应用安装画面需要用户许可。此时会显示利用的信息和功能。用户据此如果判断存在危险,即可避免安装非法应用。

  但提示权限的画面上的说明不易理解,用户很难看懂应用要取得的信息内容。因此,用户不确认权限内容便同意安装的事例频发。

  另一种攻击方式是在应用中埋设攻击Android系统程序漏洞*的代码,以篡夺管理者权限(root权限)从而控制系统。篡夺了root权限的应用不经用户的许可便可安装其他应用以及盗取终端内的信息等。从权限的内容看不出有危险的征兆(注3)。

(注3)权限被破解与漏洞遭到攻击的恶意软件清除方法不同。前者通过卸载可以复原,但若root权限被篡夺,系统遭到篡改,则除了重刷ROM以外别无他法。

*漏洞,指有可能被恶意用于攻击的安装缺陷和问题。英语的表述是vulnerability。攻击者可以通过突破作漏洞篡夺管理者权限、拒绝服务的攻击(DoS:denial of service)等。

Android 4.0基本完成

  直到2011年上半年,Android对于上述两种攻击还基本毫无防备。因为Android的官方应用市场“Android Market(现在的Google Play)”没有应用审查,谁都可以轻易发布非法应用。

  然而,近来谷歌开始出台了一连串安全强化措施(图3)。首先,从2011年下半年开始,谷歌未经发布便开始了名为“Bouncer”(开发代码)的恶意软件检测系统(注4)的运用。并在2011年11月公开了源代码的Android 4.0中基本完成了防御典型漏洞攻击的机构。

图3:安全对策正在强化的Android
此前,安装恶意软件、漏洞遭到攻击导致系统被篡改的危险性颇高。随着Android 4.0的推出,高水平的安全功能已基本完备。

(注4)谷歌于2012年2月2日在博客上公开了使用Bouncer的情况(http://googlemobile.blogspot.jp/2012/02/android-and-security.html)。

  其中,Bouncer的效果很显著,“在2011年的上半年到下半年期间,(因Bouncer的采用)下载到恶意软件的Android终端减少了40%。谷歌称“这段时间与杀毒软件公司宣称恶意软件正在增加的时间一致”。


分两个阶段检测恶意软件

  从谷歌公开的信息推测,Bouncer可能采用了以下措施。

  首先,应用开发者为发布而将应用在Google Play上登录的瞬间,Bouncer对应用的检查就开始了。检查分为检查应用文件的“静态分析”和令其实际执行而分析其举动的“动态分析”两个阶段(图4)。静态分析确认的对象估计是应用的签名、文件的构成、使用权限及每个文件的特征等。

图4:意在排除恶意软件的Bouncer
《日经电子》根据谷歌的公开信息等制作了此图。据认为确认的内容包括开发者过去是否发布过恶意软件、文件中是否包含恶意代码、是否存在导致个人信息泄露的行为等。

  动态分析则是在虚拟机上运行恶意软件,确认通信对象、收发数据、系统内部访问的数据等。如果“静”“动”两方分析都没有问题,应用就可以通过Google Play向用户发布。

恶意软件威胁犹存

  因Bouncer的采用,恶意软件在Google Play中流通的可能性降低了。但恶意软件对于Android的威胁却不会完全消失。理由大致有三个。首先,恶意软件的定义模糊。其次,Bouncer有疏漏。最后,在非正规途径流通的应用存在危险。

  关于第一点,也就是恶意软件的定义,广告应用与恶意软件的一种——间谍软件*区别的界限不清会是问题。例如,对于号称将根据用户和用户的举动推送广告,因而收集电话号码、位置信息和邮件地址等信息的应用,应用市场运营者无法判断其收集的目的是广告还是转手个人信息及为未来进行攻击收集信息。对于这一点,谷歌也没有明确的指针,Google Play上依然存在着大量收集个人信息的应用。

*间谍软件,指向外部发送终端用户行为和个人信息等的恶意软件。

Bouncer有疏漏

  关于第二个问题Bouncer的疏漏,卡巴斯基实验室恶意软件高级分析师丹尼斯·马斯勒尼科夫(Denis Maslennikov)指出,“全自动检查不会尽善尽美”。其实,“即使在谷歌开始使用Bouncer的2011年下半年以后,在Google Play上依然发现了几种恶意软件”(马斯勒尼科夫)。

  2012年4月,日本也爆出了证实这种说法的事件:据称有数种可在视频上观看热门游戏的应用在Google Play上发布,并非法盗取了用户的电话簿信息。发觉该现象的NetAgent表示,这些应用至少在6.6万台终端上安装,总计可能有数十万~数百万人的个人信息外流。

  对于广告与恶意软件界限不清的应用和穿过Bouncer疏漏的应用在Google Play上流通的问题,除了用户加以注意之外尚无法规避。

降低心理防线以便实施攻击
  第三个问题,在非正规渠道流通的应用是指在Google Play以外的Web网站上发布的应用和邮件附件所带的应用。这些应用可以在Android中安装。就算Google Play变得再安全,但只要这条渠道存在,恶意软件的威胁就不会消失。杀毒软件开发公司等所说的“Android危险”,主要指的就是这一点。

  当然,Android已经设想到了安装非Google Play应用的危险,并设了保护墙。具体方式就是在安装时发出警告,只要禁止安装“不明来源应用”的选项不关闭,应用就无法安装。

  只是这种方法的效果也非常有限。因为只要攻击者使计降低用户的心理防线,这种方法就会丧失作用。这种伎俩是诉诸于欲望及用户间的信赖关系的。

  日本在2012年1月发现了号称可以观看色情视频,以引诱用户安装的应用(图5)。该应用一经安装,智能手机屏幕上就会定期出现要求付款的页面。催款画面上还会显示在安装时通过取得权限收集到的电话号码和邮件地址。用户出于对“是不是还会通过电话和邮件催缴”的担心,被诈取钱财的可能性就会增加。

图5:降低用户“心理防线”的非法应用示例
该应用自称能观看色情视频,而请求用户安装。安装后,便会显示未付款的警告,还会显示电话号码和邮件地址等。(图片:赛门铁克提供)

以数据溢出来更改处理流程

  对于通过进攻漏洞改变系统的攻击,谷歌分阶段采取了对策。其中最为积极的要数对“缓冲区溢出”攻击的对策。

  缓冲区溢出攻击是指向存储着变量的区域发送超出其容纳量的数据。以显示图像的程序库为例。在此类程序库中,最初存储在图像文件内的分辨率、色数、灰度等属性信息要读取到事先准备的变量区,以计算打开图像需要的存储量。假设为色数准备的存储量为2字节。如果图像文件的属性信息被篡改,向这里发送100字节,则会有98字节溢出到所准备的变量区外。恶意软件就是利用这种原理进行攻击的。如果不确认存储空间,就直接写入数据进行安装,攻击就会得逞。

  Android的OS——Linux的变量主要储存在栈区*,或是堆区*。栈区储存现行处理结束后的返回地址,堆区储存利用函数指示位置的函数指针等。在缓冲区溢出攻击中,这两个区域被改写,从而会改变处理的流程。

*栈区=储存事先决定的变量的区域。

*堆区=程序执行时的动态存储区。

  具体来说,以下两种攻击具有代表性(图6)。一种是事先在发动溢出攻击的数据中嵌入恶意代码(Shell Code),利用改写的返回地址和函数指针指定Shell Code的位置使其执行。另一种是利用改写的返回地址和函数指针调用libc*等,以随心所欲地操作系统。

图6:发送超越边界的数据量的缓冲区溢出攻击
向边界检查疏松的变量存储区(缓冲区)发送超过边界的数据量后,数据将从缓冲区溢出,改写相邻的区域。通过利用这一机制发送非法代码、改写针对的地址区,系统将按照攻击者的想法运行。

*libc是能够执行内存管理、进程管理、文件操作、字符串处理等操作的函数程序库。Android使用的是将Linux标准的GNU libc(glibc)加以精简,并面向Android作了扩展的Bionic libc。

  当缓冲区溢出漏洞存在于可在root权限下执行的程序中时,则侵入手机的Shell Code也将在root权限下执行,因此尤其危险。


已堪比最新OS的Android

  为了应对此类攻击,Android接连安装了称作DEP(data execution prevention)和ASLR(address space layout randomization)的机构。DEP已从2010年12月公开源代码的Android 2.3开始配备。ASLR在Android 2.3中只支持栈区,而在Android 4.0中还支持了堆区和libc区。

  在个人电脑中,DEP和ASLR是分别从2004年、2007年前后开始普遍采用的技术。iOS也从2008年开始支持DEP,在2011年3月完成了对ASLR的支持。至此,“Android终于具有了与现在的主流OS水平基本相同的安全机构”(Fourteenforty技术研究所新技术开发室研究工程师大居司)。

将数据与程序区分开

  DEP是阻止缓冲区溢出攻击写入非法代码并令其执行的机构(图7)。能够使用管理虚拟内存的页表,把内存区分为数据区和程序区。具体来说,当页表的NX(non execution)bit为“1”时指定为数据区,NXbit为“0”时指定为程序区。

图7:阻止数据区中非法代码执行的DEP
用内存控制器把存储空间的数据分为数据和程序。要执行写入数据部分的代码时,会发生异常处理。以此来阻止数据区非法代码执行。

  要执行数据区内存储的程序时,会发生异常处理。因为Shell Code内嵌于栈区和堆区等应当存储数据的区域,所以,代码在意图执行的瞬间就会发生异常处理,从而防止攻击的发生。

  而ASLR顾名思义,是地址空间位置的随机化技术(图8)。每次起动程序时,各区域分配到的地址位置都将发生变化。即使通过缓冲区溢出攻击改写了地址,但由于Shell Code和libc的位置无法确定,因此攻击将以失败告终。

图8:令存储空间上的位置变化的ASLR
通过随机改变栈区和堆区在存储空间上的位置,使攻击者无法推测其在存储空间上的位置。

  另外,在Android的ASLR软件包中,留有部分未随机化的区域,软件包并不完善(注5)。Fourteenforty技术研究所的大居向谷歌提出了这一问题,“得到的回答是,内部已经完成了改善后的版本,下一次发布时将升级”。

(注5) Fourteenforty研究所大居的调查称,执行文件“app_process”和执行共享程序库载入的“linker”的地址空间没有随机化。

除DEP和ASLR外还需要其他机构

  其实,除了缓冲区溢出以外,还有其他能够篡夺root的漏洞。例如,2010年8月21日报告的通称“CVE-2010-EASY”的漏洞:恶意软件用其能够使调试程序“Android’s Debugging Bridge Daemon(adbd)”保持root权限,从而自由改变终端的系统。具体方式是在系统中起动超出设定的进程,使adbd作为最后的进程再次起动。adbd在以root权限结束执行后,将降级至用户权限,此时需要调用setuid进程,但由于该进程无法起动,因此,adbd将停留在root权限上。

  除此之外,Android中能够篡夺root权限的其他漏洞还发现了不少。因此可以说,DEP和ASLR只不过能防止有数的漏洞攻击。

  要解决广泛的漏洞问题,在发现漏洞后迅速提供修复问题的安全补丁是最为有效的手段(参照美国家安全保障局正在开发SEAndroid)。但在Android上,软件包的开发由是由整机企业负责的。而且,“补丁提供属于售后的产品维护。会给整机企业造成负担”(某整机企业的开发人员),所以与新机型的开发相比,安全补丁的提供往往会滞后。因此,在老机型之中,没有补丁发布、可能篡夺root权限的漏洞得不到弥补的机型也为数不少。

  如上所述,谷歌虽然为保卫Android的安全做着最大限度的努力,但课题却依然存在。对是维护用户与开发者的自由还是确保安全这种两难局面的挑战,今后恐怕仍将会继续。 (全文完 记者:中道 理,《日经电子》)


关键字:Android  谷歌

编辑:北极风 引用地址:http://www.eeworld.com.cn/xfdz/2012/0612/article_12819.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
Android
谷歌

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved