论文部分内容阅读
随着智能手机市场的不断发展,越来越多的智能手机代替原来的功能手机成为消费者的首选。目前,智能手机市场上以Android操作系统的占有率最高,相应的,Android系统的漏洞和恶意程序的数量也遥遥领先[l]。由于Android应用框架是基于组件的方式来实现代码重用,因此应用程序在进行程序设计时都是以组件为基本模块[2],在组件中内聚了许多对Android设备敏感资源访问的功能。如果编程人员在程序实现时没能注意到组件使用的安全问题,就很容易造成开发的组件存在组件暴露和组件劫持的风险。本文主要针对组件劫持这一漏洞展开研究,对该漏洞的原理,应用场景做了深入的分析,并且通过静态代码审计的方式,设计并实现了一个自动化静态检测系统,用来检测应用程序中存在组件劫持漏洞的问题组件。其主要的研究内容和获得的研究成果如下:1.分析了Android平台的整体架构,将Android平台整体的安全机制划分对应到系统架构的不同层次中去,然后对主要安全特点的原理加以分析研究,指出这些安全特性中可能隐藏的安全问题。对Android平台的组件机制进行深入分析。组件机制的目的是为了组件重用,而组件重用是靠组件间通信来实现的,通过分析发现组件劫持漏洞的存在原因正是由于错误的组件使用方式造成的。组件劫持可被恶意攻击者利用从而构造应用级的ROP(Return-oriented programming,返回导向编程技术)攻击。总结分析后给出了组件劫持漏洞的三个典型特征-暴露组件,未做权限限制,访问了设备的敏感资源。2.结合Android平台应用程序的静态逆向分析技术,设计并实现了一个静态自动化检测组件劫持漏洞的系统,该系统中使用图论的研究方法,将图论的相关知识应用到了组件间调用关系图的构造中去,还在系统的实现过程中改进了静态程序切片技术,给切片的提取加上了条件,使新程序片段的生成更快、更准确。3.为了检测组件劫持漏洞在应用中存在的情况,从Android应用市场随机下载了大量应用程序作为测试样本,通过使用所设计的系统进行测试,发现在这些随机样本中,存在组件劫持漏洞的应用程序占所有样本的比例高达45%,而且在这些问题应用中超过90%的应用存在多个问题组件。