论文部分内容阅读
Android手机操作系统提供了开放活动(Exported Activity,EA)机制,可以将应用内特定的Activity分享给其他的应用。如果开发者决定将某个EA开放,但是由于开发不够完善可能将一些敏感的操作开放给外部应用,例如文件的写入、数据库的访问等操作,有可能破坏用户的隐私信息,此时我们就认为EA存在安全漏洞,本文将该漏洞称为EA漏洞。EA在应用交互过程中根据各种应用传递的各种类型数据做出不同的响应,所以需要EA面对不合法数据时要保证正常运行,如果EA在交互过程中无法正确处理外部应用传递的数据并运行异常,本文就认为该EA存在健壮性问题。现有很多工作主要关注Android应用内部组件之间调用关系的研究,但是Android应用自身内的组件往往不会启动应用的开放活动,所以现有研究中开放活动很难被覆盖到。除此之外检测EA漏洞和分析EA的健壮性需要跟踪交互过程,追踪外部应用传递的数据在EA中的传播途径,在技术实现上有一定的难度。为了检测Android应用程序中开放活动在Android应用间交互过程中存在的的安全漏洞,本文提出了一种基于程序静态分析技术的检测方法。该方法使用数据流分析技术追踪Android应用间交互时Intent中的数据(Extra)在EA中的传播路径,分析传播路径判断EA是否存在漏洞。根据提出的检测方法设计并实现了一款EA漏洞的检测工具EADetector,并对应用市场中下载量较大的500个应用进行了实验,检测出47个应用中共有53个开放活动存在漏洞,通过人工验证的方式对实验结果进行验证存在2个误报,其余的实验结果均得到了确认。实验表明该方法能够有效的检测出EA在Android应用间交互过程中存在的漏洞。本文为了测试开放活动的健壮性,提出了一种系统化测试开放活动的方法,使用该方法可以生成一组代理应用作为测试驱动程序启动应用中的开放活动。首先,使用静态分析技术解析APK文件,提取出开放活动列表和启动它们需要数据的键值和类型;其次,将相应的数据填充到预先设置好的模板中,生成测试驱动应用。本文基于提出的测试方法开发了一款原型工具——EASTER(Exported Activity:Specific TestER),使用10个真实应用进行了实验。实验结果显示,所有测试应用共有65个开放活动,其中有20个开放活动在被外部应用启动过程中存在漏洞。