文/杨哲慜杨珉
以谷歌公司的安卓系统和苹果公司的iOS系统为代表的移动操作系统正逐渐取代桌面操作系统,成为公众接入互联网的主要入口平台。短短数年内,移动智能终端出现爆发式增长,据权威市场研究机构IDC的数据显示[1],2013年全球智能手机的出货量达4.3亿台,比2009年增长了十倍,到2015年第二季度更是单季度出货量达3.415亿台,其主要增长来自于亚太和中东亚地区。
移动操作系统生态链正从智能手机拓展到如平板电脑、智能家居、可穿戴设备、车载控制系统等多种衍生产品中,日益驱动着互联网的改变和发展。作为移动互联时代的突出标志之一,移动应用聚集大量高附加值的信息和资源。这些信息和资源不仅包含个人的手机信息、身份信息、地理位置信息,还包含诸多账号信息以及邮件、文件等信息。
移动应用利用用户赋予的个人信息为其提供便捷、即时、精确的定制服务。在这一背景下,移动平台得以取代传统PC平台成为人们接入互联网的首选方式。然而,移动平台的高度互联性也是一把双刃剑,它同时使用户轻易暴露在攻击者的威胁之下。受政治、军事和商业利益驱使,针对移动终端系统的攻击行为层出不穷,其中针对个人隐私的窃取行为又是其中的重灾区。“棱镜门”以及多项外电资料披露,多个国家在资助移动操作系统安全防护方法的同时,也在研究利用移动操作系统的安全缺陷,通过恶意软件对我国重要人员以及公众实施高级持续性的大规模数据搜集。美国政府曾在过去的三年中资助英国政府通信总部(GCHQ)1亿英镑,专门用于研究手机操作系统的攻击方法。
在过去的2015年中,国内个人信息泄露事件频发。中国互联网协会2015年发布的《中国网民权益保护调查报告》[2]称,2015年中,中国网民因个人信息泄露、垃圾信息、诈骗信息等现象导致总体损失约805亿元。其中,78.2%的网民个人身份信息被泄露过,63.4%的网民个人网上活动信息被泄露过。11月份被批露的百度Wormhole漏洞,其影响力覆盖过亿安卓手机用户,造成大量用户隐私泄漏风险。
面对移动互联网用户隐私保护的严峻形势,隐私泄漏的检测和保护近年来颇受关注。本文结合团队的研究成果和正在进行的研究工作,揭示了移动应用隐私泄露检测和防护的总体进展,并在增强对用户隐私的识别和保护能力等方面提出值得关注的方向。
主要技术发展历程
自从2008年第一部安卓智能手机面世以来,智能移动终端正在逐渐取代PC成为汇集个人隐私的核心媒介。这在赋予智能移动终端越来越强大功能的同时,也给个人隐私安全防护提出了必须面对的严峻挑战:面对海量的移动应用,种类众多的隐私数据,复杂的数据流动渠道,如何确保个人隐私不被恶意利用?针对这一问题,早期的隐私泄漏分析的关注点主要集中在敏感数据的传播上。研究人员通过用户的隐私数据是否离开移动设备来判断应用是否存在隐私泄露,并从隐私泄漏的检测和防护两个方面展开研究:
1.隐私泄漏检测
从核心原理来看,隐私泄露检测技术经历了静态分析、动态分析、动静态分析结合的发展路线。
静态分析方法通常采用静态数据流分析的手段分析程序中的静态敏感数据流向,如加利福尼亚大学戴维斯分校的Androidleaks系统[3]、加利福尼亚大学伯克利分校的ComDroid系统[4]、我们之前提出的LeakMiner系统[5]、乔治亚理工的Chex系统[6]和德国达姆施塔特工业大学的FlowDroid系统[7]。在隐私泄露检测上,静态分析方法具有运行速度快,代码覆盖率高等特点,但是由于静态方法无法反映恶意软件运行时的动态行为,使得这类检测方法的实际效果受到明显影响。在攻防持续对抗的过程中,攻击者如果采用代码混淆技术也可轻易规避此类方法的检测。
意识到静态分析的缺陷,动态分析方法根据应用程序的敏感信息传输特征动态监测安卓系统中的恶意隐私泄露应用,其中最有代表性的是宾夕法尼亚大学的WilliamEnck等人提出的TaintDroid系统[8],该系统通过修改安卓内核代码,利用动态指令插桩的方式实时监控程序中的数据传播过程,并在发生敏感数据传播时警告用户。剑桥大学的RubinXu等人提出的Aurasium系统[9]则通过另一种方式实现了类似的功能,他们通过对需要监控的应用程序进行重打包,以此给应用程序插入监控逻辑。相比静态分析方法,动态数据流跟踪具有分析精度高的特点,但是由于动态监测技术的局限,其具有代码覆盖率不足、检测结果滞后于数据传输发生等问题。
鉴于动、静态分析在隐私泄露检测过程中的不足和优点,如果可以结合两种分析方法,综合利用其优势,实现既具有较高覆盖率和检测速度,又具有高分析精度的检测方法就具有了相当大的现实意义。笔者在2013年提出的AppIntent系统[10]对此作了一些尝试,AppIntent首先利用静态数据流分析获取应用程序中敏感数据传播的候选集,再通过动态符号化执行验证候选敏感数据流是否会真实发生。通过结合两种分析方法,可以在较短时间内,在不损失分析覆盖率的前提下,提高隐私泄露的检测精度。
2.隐私泄漏防护
在隐私泄漏的防范方面,移动终端系统主动抑制恶意软件对敏感资源的不合理使用是防范恶意软件的重要途径。微软雷蒙德研究院的JaeyeonJung研究员提出AppFence系统[11]在动态检测隐私泄漏风险的基础上实时阻止软件对隐私信息的收集行为。北卡罗来纳大学的WilliamEnck教授所在团队提出的Kirin
[12]和Saint[13]系统用于阻止一个应用软件同时申请多个可疑的敏感资源。此外,雪城大学的WenliangDu教授所在团队提出的AFrame系统[14]、伯克利的DavidWagner教授所在团队提出的AdDroid系统[15]、和莱斯大学的ShashiShekhar等人提出的AdSplit系统[16]均通过进程隔离的方式限制程序内部不可信组件对敏感资源的使用。此外,剑桥大学的RossAnderson等人提出的Aurasium系统[9]提供给用户直接管理程序访问敏感资源行为的能力。
隐私泄漏研究的新问题
随着隐私泄漏研究的深入展开,近年来研究者们逐渐意识到传统的隐私泄漏定义并不准确。而该定义的不精确和不完整限制了隐私泄漏检测技术的效率和效果。为了在隐私泄漏检测和防护过程中获得更准确更全面的结果,相关研究在以下两个方面对隐私泄漏定义进行了修正。
1.隐私泄漏的用户感知问题
基于敏感数据传播的隐私泄漏检测技术认为:通过检测用户的隐私数据是否离开移动设备就可以判断应用是否存在隐私泄露。事实上,由于大量手机应用都采用云计算,许多非恶意应用均利用云服务器为终端用户提供定制化服务。这些应用通常需要收集一些敏感数据(比如位置、联系人信息等),并将其发送到自身服务器。而一些恶意应用在窃取用户敏感数据后也表现为类似的行为,也就是将隐私信息传送到自己的服务器。因此,仅仅依靠应用程序是否传输敏感数据不可以真正判别出应用软件是否存在隐私泄露。
意识到这一问题之后,安全研究人员通过不断改进隐私泄漏的判断标准,力图提高隐私泄漏检测的精度。美国杜克大学的PeterGilbert等人提出的Vision系统[17]认为如果应用程序将自身敏感数据传输行为加入最终用户许可协议(EULA)并得到用户许可,或者应用程序在敏感数据传输行为发生时明确的通知告知用户,则该数据传输可以被认为并非隐私泄露。与之类似的是,佐治亚理工学院的WenkeLee教授所在团队提出的BLADE系统[18]通过识别应用程序是否得到了用户许可,来检测从网络上动态下载的恶意软件。然而,手机应用一般不提供最终用户许可协议(EULA),同时,即使在数据传输符合用户意图的时候(如转发短信),应用程序也很少向用户弹出显式的用户提示。伯克利的DawnSong教授所在团队提出的Pegasus系统[19]以应用程序使用API和权限的顺序为特点来检测软件恶意行为。与我们的研究类似的是,它也检测那些与图形界面操作不相符的恶意行为。然而,隐私泄露无法通过简单的权限或者API的使用顺序来概括。因此应用程序的隐私泄露行为无法通过这种方法被检测出来。此外,Pegasus需要分析人员根据应用程序的行为手动指定用户程序行为验证的属性特征。在不了解应用程序代码的情况下,分析人员很难制定这些属性特征。这些方法通过归纳隐私泄漏行为的外部表征试图区分隐私泄漏和应用软件的正常敏感数据传输行为,对隐私泄漏的精确检测进行了有效尝试,但是这些方法仍然不能准确判断隐私泄漏。
笔者所在团队于2013年发表在CCS会议上的论文[10]中提出了另一种判断隐私泄漏的方法,即一个更好的隐私泄露判别方法应该是敏感信息传输是否出于用户本身的意图。
(1)符合用户意图的敏感数据传输。为了使用应用软件的一些功能,用户经常需要容忍自己的隐私数据经过特定渠道被发送出手机。比如,当使用辅助管理短信的应用时,用户可以通过点击屏幕上的一些按钮将特定短信转发给其它用户;而在使用一些基于用户地理位置的服务时,用户为了得到一些其感兴趣的内容,往往要允许将自己的位置信息发送给应用服务器。由于这类功能在使用敏感数据时,用户已经知情,所以不应该将其归类为隐私泄露。
(2)不符合用户意图的敏感数据传输。恶意应用在用户不知情且与用户使用的功能无关的情况下非法传输敏感数据,我们称之为用户不知情的敏感数据传输,或者叫隐私泄露。在大部分情况下,恶意应用为了使得用户很难察觉到其恶意行为,通常都会秘密传输敏感数据。