基于安卓系统的动态权限泄漏检测系统
2017-10-13张若平柳培忠
◆张若平 柳培忠
基于安卓系统的动态权限泄漏检测系统
◆张若平1柳培忠2
(1.厦门工学院 福建 361000;2.华侨大学工学院 福建 362000)
安卓手机已经为用户的个人信息管理提供了一个基于认证的安全模式,该模式需要每个应用程序通过请求才能安装运行。通过研究目前主流的八种流行的安卓手机,发现大部分手机未能正确执行安全模型,一些特权可以很容易被其他未使用的应用程序获取。为了验证这些问题的存在,本文研发一种动态系统权限泄漏检测系统。实验研究结果表明:一个没有获得认证的应用程序可以获取安卓系统的权限,可以未经使用者许可的情况下,消灭用户数据、发送短信、记录用户的通话进程。
安卓手机;权限泄漏;动态检测
0 前言
据友盟发布的2013年上半年移动互联网数据报告显示,截至今年二季度,中国活跃智能设备已经超过5亿, 3.4亿台为安卓设备约占70%[1]。主要原因是智能机终端为用户提供的功能强大的服务和带来的便利,现有的智能手机功能不仅是接打电话、接收信息,更是一个涉及网上冲浪、GPS导航、网上银行、社交网站等功能强大的社交娱乐平台[2]。
因而智能手机的用户越来越依赖智能手机进行存储和处理个人数据。可以在手机里找到当前用户的地理位置信息、电话通话记录、各种联系方式、电子邮件、照片和内置的摄像头,这些信息的存在,容易导致各种关于私人信息管理模式和访问安全的问题[3]。
《2013年上半年中国手机安全状况报告》指出,今年上半年,日均新增2500余款恶意软件,其中含隐私窃取行为的恶意软件高达90%以上,感染总量超过4.8亿人次[4]。垃圾短信、欺诈短信的不断增加,以及恶意网址、恶意二维码等移动威胁的出现,使手机安全问题趋于多元化,手机安全研究逐渐成为手机用户的刚性需求。
如何保护访问用户的敏感数据或系统的功能权限不被不受信任的应用程序获取显得尤为重要。本文实现一种用于安卓智能手机的系统权限泄漏动态检测系统。
1 当前智能手机的安全问题
智能手机厂商已经探索多种方法来解决各种个人信息管理和访问带来的安全问题:
一方面苹果智能手机采用的是审批模式,每个第三方的应用程序使用之前,必须仔细在苹果应用中心对其进行检查。安装应用程序后,在某些功能第一次运行时, IOS平台会提示用户批准使用[5]。
另一方面谷歌的安卓系统采用用户可以授予一个安卓应用程序的权限,他们允许用户评估应用程序的能力,并确定是否要安装应用程序[6]。基于权限的管理模型对安卓应用程序的监督起到很关键的作用。
为了分析目前主流智能手机的安全问题,本文检测今年最为流行的10个品牌的手机进行分析,手机品牌和型号如下表1所示,本文检测分析不同类型的智能手机是否可以通过ROOT权限来获取敏感的用户数据(如地理位置)或手机功能(发送短信)[7]。实验测试结果表明,总共测试58人的智能手机安全问题,有47人很容易获取其ROOT权限,个别手机可以获取一般权限。总之通过一个不受信任的应用程序可以利用ROOT权限,未经许可的消灭用户数据、发送短信,或记录用户的通话进程。
表1 测试的智能手机
2 动态检测系统设计
针对安卓智能手机的权限泄漏动态检测系统,本文做出这种假设:
(1)安卓智能手机用户已经在手机上安装了第三方应用程序。第三方应用程序的作者获取了这款手机的系统信息,并通过安卓的API函数保护的权限恶意执行一些高权限的工作(例如,记录用户的通话),并保护第三方应用程序被拒绝访问的可能性[6-8]。
(2)假设安卓系统限制攻击者的范围框架(包括OS内核)是可信的[9-11],系统图像的签名密钥没有泄漏给攻击者。由于许多预加载的应用程序已获得相应的权限,如果恶意应用程序可以调用这些高权限应用程序的API函数,将有可能获得高权限许可。
为了更好检测权限泄漏的问题,本文实现了一套用于安卓手机的权限泄漏动态分析系统(如图1所示)。通过采用数据流分析预加载的应用程序,检测系统分析每个应用程序在手机上探索的可达性。同时更好地检查泄漏的能力,防止一个危险的权限从一个公共的、无人防守的接口泄漏。
2.1 权限泄漏检测
本文将安卓系统权限泄漏检测分为两种不同的类别:
2.1.1显式权限泄漏
利用一些公开访问的接口,允许一个应用程序成功地泄漏访问特定程序的权限或服务请求。
显式权限泄漏很容易发生在需要容纳在其清单文件的预加载的应用程序中[12]。为了检测显式权限泄漏,系统分两个步骤分析每个此类应用程序的泄漏。
第一步:针对可能的泄漏路径分析生成控制流图,以从明确定义的入口点里,确定可能的路径对某些使用的能力。
第二步:可行路径的细化研究,采用响应信息组和路径的内程序的数据流分析,以确定哪些路径可能产生泄漏。
2.1.2隐式权限泄漏
利用一些公共接口或服务,允许一个应用程序从另一个应用程序获得或“继承”权限,使用相同的签名密钥[12]。
对于隐性权限泄漏的检测,本文使用与显式权限泄漏不同的检测算法。显式权限泄漏假设调用者的一个API暴露是恶意,则隐性权限泄漏检测假设应用程序本身可能是恶意的。因此,而不是只从定义良好的入口点在显式泄漏检测,需要扩大泄漏的搜索,包括应用的初始化。
图1 权限泄漏动态分析系统流程图
但是安卓应用程序初始化过程的建模有些复杂。可以采取两种类型的构造函数来处理:
(1)实例构造函数显式地调用,在Dalvik字节码字节码操作的新实例;
(2)类的构造函数或静态初始化块隐式地调用一个类第一次使用。
可见显式权限泄漏代表严重的安全错误,因为这些会破坏基于许可的安全模型,而安卓的隐式泄漏可能是一个应用程序的数据误传。
2.2 泄露路径分析
本系统将遍历每个选定的预装应用程序来检测是否存在权限泄漏。本文首先构建一个通用的CFG协助静态分析[13]。先从每个入口点和构建各自的CFG。有一些细微的安卓参与映射中定义的组件manifest文件到其实际入口点。一些入口点都是标准的,因而很快确定通过这个类型的组件包含在应用程序。
由于安卓每个应用程序可以定义多个入口点, 所以需要对于每个入口点产生一个单独的潜在路径组。这些路径不包含在这个应用程序的入口点之前的任何执行的指令,本文选择采取通过假设一个字段可能包含任何可分配的值保守的方法。作为该字段用于沿路径的执行,每次用这样一种方式缩小可能值的列表,具体泄漏路径分析如图2所示。
图2 泄露路径分析算法
2.3安卓API函数
如果直接分析检测整个安卓系统的权限泄漏问题,很容易导致安卓系统的状态爆炸和安卓使用的可伸缩性问题。本文使用安卓系统已经定义的API函数。
API函数包含一系列非常健壮的预定义库,该库函数降低了需要开发人员引入第三方库来支持安卓系统的代码。
通过调用这些库,每次做应用分析时可以避免花费时间、空间、和其他杂项的相关成本。
3 实验分析
本文实现的安卓系统权限泄漏检测系统包含混合Java代码、shell脚本和Python脚本。本文的静态分析代码在开源baksmali反汇编程序工具编译。形成一组扩展到一个现有的Java字节码动态检测分析工具。而后选择在baksmali直接运行,用来检测安卓手机可能的权限泄漏能力。
系统首先利用安卓调试桥(adb)工具来获取访问手机的系统映像,主要是那些文件在/系统/应用程序和/系统/框架目录,这些目录包含所有的预装应用程序在设备上。
而后系统列举所有已经预装的应用程序。通过一个独立的脚本实现对应用程序进行预装和拆卸,其主要目的是为了后续分析它们的字节码。对于每个应用程序,系统将对有关的安卓包(如apk文件)提取有关的清单文件(安卓manifest . xml)。提取后的清单文件,本文做如下分析:
对任何请求权限要求的应用程序,系统检查应用程序所授予相关的权限功能是否存在隐式权限泄漏[14],而那些拥有sharedUserId属性设置检测是否存在隐式权限泄漏。计算实际的设置的权限并授予每个预装的应用程序通过结合所有的权限请求由相同的sharedUserId。
本文通过对三星 GALAXY S4检测该智能手机存在的权限泄漏问题,com.sec. Android. app.Selective-Reset程序的目的是出现一个确认屏幕来询问用户是否要重新设置手机。通过程序Android. Intent. Action. SELECTIVE _RESET Intent来调用,而SelectiveResetR Eceiver程序是上述Android. Intent. Action. SELECTIVE _RESET Intent的子程序。当这个子程序SelectiveResetREceiver接收到指令,它便会打开用户界面(SelectiveResetApp)并且等待用户确认。
一旦该步骤完成,SelectiveResetService便启动了,最终会传输一个指令Android.intent. Action. SELECTIVE _RESET _DONE。原先的SelectiveResetService子程序会听从于该指令并可以访问CheckinService. masterClear()。
HTC One系列有一个内置的MessageTab的应用程序,com. Android.MessageTab,这MessageTab应用程序旨在管理手机的短信,让用户查看已发送邮件,发送新的邮件。它使用了调用系统的特权能力,但并没有将其放入文件清单。
4 结论
本系统发现了当今主流智能手机在性能上的严重漏洞。如何防御智能手机的安全性显得尤为重要。
智能手机的权限泄漏从本质上反映了当前智能手机存在的严重安全隐患,由于权限泄漏导致一个应用程序是被另一个应用程序不当地执行。虽然是智能手机主流操作系统的固件或安装性能低的程序而引起的,虽然安卓系统提供的安全模型可以通过提升以减轻这些权限泄漏的危险。但是如何维护一台智能手机的功能完整性,以及确保它能在没有被应用程序调用的时候,能尽力避免暴露其性能或底层安卓系统的框架仍需要通过外界的检测系统来完成。
总之本系统已经验证了当前安卓智能手机存在权限泄漏的问题,并提出一种解决方法,它仍然有很多需要解决的问题。例如, 本系统现在只能处理Dalvik字节码并且需要扩展来适应本地代码。只有处理十几种功能权限的泄漏,随着安卓系统的不断后续的功能将会不断增加,因而需要考虑更为稳健、完善的权限泄漏方法。
[1]http://www.hiapk.com/.
[2]Android Debug Bridge.http://developer.android.com/ guide/developing/tools/adb.html.
[3]Apple App Store.http://www.apple.com/iphone/ap ps- for-iphone/.
[4]IPhone Stored Location in Test Even if Disabled.http: //online.wsj.com/article/SB10001424052748704123204576202491612.html.
[5]Soot:a Java Optimization Framework.http://www.sabl e.mcgill.ca/soot.
[6]T.J.Watson Libraries for Analysis (WALA).http://wala. sourceforge.net.
[7]L.Davi,A.Dmitrienko,A.-R.Sadeghi,and M. Winandy. Privilege Escalation Attacks on Android. In Proceedings of the 3rd Information Security Conference, October 2010.
[8] M. Dietz,S.Shekhar,Y.Pisetsky,A.Shu, and D. S.Wallach.QUIRE:Lightweight Provenance for Smart Phone Operating Systems. In Proceedings of the 20th USENIX Security Symposium,USENIX Security ’11, August 2011.
[9]M. Egele, C. Kruegel, E. Kirda, and G. Vigna. PiOS: Detecting Privacy Leaks in iOS Applications. In Proceedings of the 18th Annual Network and Distributed System Security Symposium, NDSS ’11, February 2011.
[10]W. Enck, D.Octeau, P.McDaniel,and S.Chaudhuri. A Study of Android Application Security. In Proceedings of the 20th USENIX Security Symposium, USENIX Security ’11,August 2011.
[11]W.Enck,M.Ongtang,and P.McDaniel. On Lightweig- ht Mobile Phone Application Certification.In Proceedings of the 16th ACMConference on Computer and Communication s Security,CCS ’09, February 2009.
[12]A. P. Felt, E. Chin, S. Hanna, D. Song, and D. Wagner. Android Permissions Demystified. In Proceedings of the 18thACM Conference on Computer and Communications Security, CCS ’11, October 2011.
[13]A.P.Felt,M.Finifter,E.Chin,S.Hanna,and D. Wagner. A Survey of Mobile Malware In The Wild. In Proceedings of the ACM CCS Workshop on Security and Privacy in Smartphones and Mobile Devices, October 2011.
[14] A. P. Felt, H. Wang, A. Moschuk, S. Hanna, and E. Chin. Permission Re-Delegation: Attacks and Defenses. In Proceedings of the 20th USENIX Security Symposium, USENIX Security ’11, August 2011.
国家自然科学基金资助项目(61203242); 物联网云计算平台建设资助项目( 2013H2002)。